当数据包大小超过 160 字节(mtu 256)时,IOS 蓝牙连接会丢失

问题描述 投票:0回答:1

因此,我正在使用名为

flutter_reactive_ble
的软件包,并且通过蓝牙与第三方设备进行通信。我通过蓝牙发送和接收大小≅ 20字节的包进行连接和通信,效果非常好。当我进入更新模式时,我发送 240 字节的包,它会断开与 iPhone 的连接并出现超时错误。

注意:这个问题在android中不会出现!

flutter_reactive_ble 版本:5.3.1

我已经尝试联系第 3 方,但 id 似乎不是更改 mtu 大小的好主意,这会有所帮助,因为我的其他通过蓝牙通信的应用程序使用 512 mtu 大小并且 iOS 运行正常。

已经测试了不同的iOS版本,这个错误在新版本和旧版本中都会发生。

ios flutter mobile bluetooth bluetooth-lowenergy
1个回答
0
投票

如果您还没有这样做,请确保您还发送请求以最大化数据包的大小。最佳大小是将最大数据包长度设置为 251(根据蓝牙规范,这是最大值)并将 ATT_MTU 设置为 247。如果这不起作用,请尝试不同的组合或较小的 ATT_MTU 大小。我相信某些(也许是所有)iOS 设备支持的最大 ATT_MTU 是 185 - 这意味着每个事务可以发送 182 的有效负载。我不确定苹果是否对此进行了记录,但有几个链接提到了这一点,如下所示。我会尝试使用 185 或更低的 MTU 大小,看看问题是否消失。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.