蓝牙通讯 速率 - ShenYj/ShenYj.github.io GitHub Wiki
本人于2017年4月份接触蓝牙开发,关于蓝牙协议栈, 也是在6月份左右开始联调的时候遇到了一些问题,才开始查阅了解到这方面知识的,曾经看过的两处较为全面和细致的资源: 蜗窝科技和CY大象
,但今天(21年12月15日)再次整理迁移文章的时候发现论坛已经成黄网了 ̄□ ̄||
开始学习蓝牙的时候,也是加一些技术交流群,可是最终发现,很多从事蓝牙开发的iOS人员,连蓝牙协议栈都不知道, 关于安全机制甚至都没听过, 这主要也是因为苹果的封装实现都比较简单,而更多的一些设置接口并未暴露,这也导致了iOS方面存在诸多限制.
通过当时的测试结果,总结了下iPhone的MTU
信息
MTU
包括三个部分:OP Code(1Byte)
,Handler(2Byte)
,Payload
, 通过不同设备的测试, 抛去OP Code(1Byte)
,Handler(2Byte)
, 所以得出了以上的结果, 而17年时Android的MTU
已经达到了247, 至于可以手动进行设置这点 , 因为我并不从事Android开发 , 所以没有尝试过.
而当时网络上大部分的资料描述iOS都是23Byte, 当时的资料已经相当过时了,还有很多网文猜测是搬运的,并没有验证过
下面是一份当时从ifixit
上获取到的iPhone的WiFi-BT蓝牙硬件参数信息
因为公司项目要保证强实时和高质量通信速率, 所以对通信速度也做了多次的测试, 以下是部分测试结果
说明: 以上测试结果是在设备波特率为19200下的测试结果, 很多外设目前的波特率最高为115200, 可是我们的设置在修改到了115200波特率下后,iOS就会出现传输速率不稳定,每个包片段长度阶梯型变化的现象, 但Android那边并无影响 , 虽然iOS不能像Android那样有更大的MTU size
,但是在苹果论坛中, 有一位苹果工作人员留下这样一段答复
然而在通信速度上,4.0与4.2 甚至与 4.2 + DLE三者在通信速度上并没有看到什么明显的提升.
在关于蓝牙后台方面,我曾经做过三次测试(在没有开启后台重连的情况下): 第一次最长,保持了15.5小时 第二次保持了11小时 第三次只保持了8小时左右
测试的环境是,打开应用放置后台锁屏