目录

BLE配网在IOS系统上绑定问题分析和解决.... 0

背景介绍.... 2

问题排查和分析.... 2

进一步分析.... 3

解决方案.... 4

总结回溯.... 5

背景介绍

       BLE配网在这里特指BLE设备和手机端进行BLE的connect连接,不包括其他认证,绑定等流程,按照要求也不应该存在其他动作和行为。

       在使用手机测试BLE配网的过程中,安卓系统的手机连接BLE完全正常,连接后可以进入正常的测试。但是IOS系统连接BLE过程中,手机端出现绑定请求弹框,由于APP不支持绑定相关业务,点击绑定后可以绑定成功,但是正常业务异常,如果取消绑定,那么设备不断请求绑定,最后因为没有绑定导致离网。

问题排查和分析

       从问题现象看,IOS系统上出现绑定的弹窗提示,说明设备端发起了绑定请求。但是相同的设备为什么在安卓系统上不存在这个绑定请求?在BLE连接过程中,IOS会发送特殊的数据导致这个奇怪的操作吗?

       对此,在IOS进行BLE连接时,使用hcidump进行抓包(BLE Host和controler之间的HCI数据通信),部分数据如下。Host端即主机的Bluez程序给controler发送smp请求,要求发送认证的请求,使用secureConnection方式进行绑定。从HCI协议看,并没有其他异常的数据,导致这个行为。

       同样情况下,使用安卓手机并不会出现上述的请求数据。通过安卓手机和IOS手机配网时候设备端的log分析,IOS手机配网出现如下打印,定位到具体代码如下。从代码看,如果检测到设备加密等级较低,但是实际需要绑定的情况下,设备自动调整加密等级。在加密等级较低的情况下,正常情况不能进行绑定。

       理论上如果需要设备绑定,必须设置合适的加密等级,因此可以将这部分代码进行屏蔽处理。代码重新编译后再次测试验证,HCI抓包看这个认证请求已经不会再次发起,但是后面还是会不断发起绑定请求,且每隔几秒发起一次,直到IOS手机断开连接。

       BLE设备的controler发送一个错误的回复Insufficient Authentication(身份验证不足),然后进行配对的请求(BLE无线发送),但是Host回复BLE配对不支持(Host已关闭配对功能)。这个过程每隔几秒进行一次,当然结果肯定都是失败,因为Host不支持配对。从这个信息可以初步判断,BLE设备对IOS手机进行某些数据请求,但是由于IOS手机回复身份验证不足的信息,从而触发BLE设备对IOS手机进行身份认证请求。

进一步分析

       对BLE设备对IOS手机进行认证绑定的情况,有了初步的判断和猜想,因此需要借助对BLE进行空口报文抓取和分析。为了方便理解,下面对BLE设备和IOS数据交互进行分析,需要注意BLE设备作为BLE的Slave(从机),IOS手机作为BLE的主机(master)。

       设备连接成功后对IOS手机进行电池电量请求,由于设备和手机没有绑定,所以手机回复设备身份认证不足。设备收到IOS的回复信息后,对手机进行加密请求,但是由于设备不支持绑定,最后流程终止。对于正常流程来说,设备和IOS手机应该打开绑定功能,进行绑定完成后,该流程不会存在问题。但是对于BLE配网功能来说,协议上明确要求不进行BLE绑定,因此IOS手机也不支持该功能。

       从无线抓包分析看,IOS手机和设备进行了很多BLE协议交互,但是抓包器无法解析对应信息内容。从设备进行电池电量请求这个行为看,这些数据请求中,必定有相关信息触发了设备的这个行为(同样情况安卓手机不会触发)。所以从上诉的情况分析看,最简单方式还是从这个电池电量请求入手进行修改,从业务角度看,设备端也无需关心手机端的电池电量。

解决方案

为了兼容性和修复的安全性考虑,采用已有的模块(IOS手机APP开发认可的BLE模块)进行BLE配网测试验证。从无线抓包看,已有模块确实没有相关流程,不会请求IOS手机上的电池电量,因此也没有加密认证请求相关的内容。

       通过上诉的综合分析,BLE设备上的电池电量请求进行修改即可。如果后期设备作为主机情况下,电池电量采集可能是一个需要使用的功能。因此,这个地方可能需要根据不同的产品形态进行对应的修改。

       设备端修改后,不再进行电池电量请求,因此不会去进行加密认证情况,设备和手机可以正常的connect,然后进行业务数据交互。

总结回溯

       设备和IOS设备绑定问题主要通过上述2个点进行修改来适配BLE配网。

  1. 修改设备加密等级低的情况下,不再自动提升加密等级;
  2. 设备不会主动请求IOS手机上的电池电量信息,避免触发认证加密;

通过上诉问题的分析,BLE配网在协议制定中需要充分的评估和确认。从原理上来说,通过屏蔽设备的某些功能来满足当前功能,并非一个合适的方案。

从问题定位看,在BLE开发过程中,我们可以充分的借助工具来进行问题定位,包括Hcidump,抓取无线报文,串口log等手段。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐