BLE:MTU交换后降低MTU值大小(大差异)

时间:2018-05-09 14:26:29

标签: android bluetooth-lowenergy gatt

我是BLE开发的新手。我希望通过BLE连接以最大吞吐量发送大量数据。

我有一台运行在Linux上的GATT服务器,以及一台在Android上作为应用程序运行的客户端。我创建了一个具有最大允许大小(512字节)的自定义特性。我通过阅读操作从应用程序请求它。每当我收到服务器端的阅读电话时,我都要更改它的值,直到我完成所有数据(我知道这不是最好的方法,但这不是问题所在现在)。

对于使用android的requestConnectionPriority(CONNECTION_PRIORITY_HIGH)的连接参数,我可以看到他们正在尝试协商7.5ms的连接间隔但是由于某种原因,它变为15ms并且它仍然存在。也许我的手机不支持它,但我不这么认为。

接下来的事情和主要问题是MTU。使用hcidump,我可以看到他们开始协商MTU,因为我可以看到客户端的MTU请求值为517(默认情况下)和服务器响应具有相同的值。但是当我触发数据交换时,我可以看到(使用Wireshark)数据包只包含32个字节的有效负载。我不知道它是否是我的蓝牙适配器的限制。

1 个答案:

答案 0 :(得分:1)

MTU数据包可能包含许多无线数据包,32字节无线数据包有效负载可能是您的蓝牙适配器中的限制。此时,没有电话支持7.5毫秒的连接间隔。如果您的手机和设备支持,您还应启用数据长度扩展。这将允许您在整个连接事件中传输多个MTU。