Core Bluetooth:从iOS 15升级到iOS 16时减小了BLE MTU大小

5
在升级到iOS 16后,我发现iPhone/iOS的MTU大小似乎会减小。在升级到iOS 16之前,手机的MTU大小始终为185字节,这与多数链接声称iPhone的最大MTU相匹配 (例如:示例1示例2示例3)。但是,在升级到iOS 16后,iPhone发送的MTU大小降至77字节。这是使用相同的手机和iOS应用程序代码连接到一个可穿戴设备(即iPhone是中心设备,可穿戴设备是外围设备),该设备包含nRF52芯片组并始终发送247字节的MTU请求。 我成功捕获了嗅探日志,显示iPhone在使用iOS 15时回复了一个MTU为185的值(这是预期的): enter image description here 而下面的嗅探日志则显示了iPhone在使用iOS 16时发送了一个缩小的MTU,只有77字节: enter image description here 值得注意的一点是,重新启动手机似乎可以暂时解决问题,iPhone的MTU响应会恢复到185字节,但连接几次之后,iPhone又开始发送77字节。在iPhone上重启蓝牙无法解决问题,唯一的临时解决方法是重启手机。我们成功地在iPhone 11、iPhone 13 Pro Max和iPhone 14上重现了此问题。该问题在iOS 16和iOS 16.0.2中都出现了。鉴于没有CoreBluetooth API来修改MTU大小,这似乎纯粹是iOS 16的一个错误,我是正确的吗?有办法克服这个问题并强制手机恢复使用最大的185字节MTU吗?

2
这看起来像是操作系统层面的问题。由于似乎没有办法修改它,您可以联系苹果支持以尝试解决它。但在我看来,这似乎是一项节能功能。您不能将数据包分成77字节的部分吗? - MiltoxBeyond
1
我对这个变化感到惊讶,但它肯定可能是有意的。我不会认为这是一个错误。同意MiltoxBeyond的看法,你应该通过TSI/DTS(https://developer.apple.com/support/technical/)联系苹果。MTU请求只是一个请求。另一方可以减少它,所有设备都需要处理它。但是,如果这对你造成了性能问题,苹果可能会提供一些指导(至少有一些提示系统更喜欢较大的MTU;你绝对永远无法强制执行它)。 - Rob Napier
1个回答

1

原来这是iOS 16和16.0.2的一个错误/退化。在iOS 16.1中已经修复,我们已经测试了修复程序并且在这里工作正常。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接