前言
本文是一些解决 BLE 广播相关问题的经验分享。对于用户常常遇到的一些问题,比如广播包最多能带多少用户数据,广播名字怎么设置,广播类型有哪些,为什么有些手机无法扫描到设备等问题,都将在本文得到解答。
BLE 广播最基础知识
随着 BLE 核心规范版本的更新,蓝牙广播增加了很多特性,如扩展广播,同步广播等。本文不对这些特性做展开,仅讨论传统广播的一些比较基础的知识。
手机找不到设备的普通广播?
用户使用手机的系统蓝牙扫描周围设备时,系统蓝牙可以扫出一些设备,但自己的设备却没有扫描到?
先一句话概括:可能和手机的系统蓝牙的过滤机制有关。
手机找不到设备的 Beacon 广播?
这个问题和找不到设备的普通广播的原因类似,可以先一句话概括:可能和手机系统蓝牙的过滤机制有关。解决的办法是找到一个可以扫描 Beacon 广播包的 APP,比如LightBlue 等。
广播名显示异常
这个问题有以下几个场景:
- 使用 iOS 手机扫描设备,扫到“a”名字的设备,而当连接、断连一次该设备后,再次扫描,扫到了“b”名字的同一个设备。
一句话解答这个问题是:iOS 手机遵循完整的设备名扫描机制,并且会保留已连接设备的信息。
小结
在开发过程中遇到和蓝牙广播相关的问题时,基于本人的经验可按下以下步骤进行逐一排查:
- 确认系统正确发出广播,可通过 LOG 信息和电流波形确认;
- 工程师在开发过程中修改蓝牙外设固件时,最好使用 Public 地址类型并且每次下载固件前都改一下蓝牙地址;
- 了解蓝牙的广播类型,有一些手机 APP 无法扫描 Beacon 类设备,建议使用STBLE Toolbox 工具或者 LightBlue 工具对设备进行扫描;
- 注意手机的系统蓝牙有过滤机制,本文档的第三章提及的解决方式,不能百分百逃过手机的过滤机制。当遇到有的手机无法扫描自己的 BLE 外设时,我们可以利用该手机系统蓝牙已扫出的设备,对其广播包进行解析,找出其被该手机识别的广播字段依据。
阅读全文