蓝牙适配中扫描不到周边设备问题分析报告
1 关键字
OpenHarmony3.2 Beta3;蓝牙;周边设备;vendor;芯片适配;
2 问题描述
2.1 运行环境
-
系统版本: OpenHarmony3.2-Beta3 (以该版本为基线)
-
应用软件:蓝牙适配so库、蓝牙芯片底层库、系统自带bluetooth应用
2.2 问题现象:
使能蓝牙后开始扫描周边设备,但没有扫描到任何的周边设备,一直不停扫描。
2.3 测试步骤:
-
OpenHarmony3.2-Beta3为基线编译蓝牙适配so库以及蓝牙芯片底层库加载到系统。
-
使能蓝牙功能,扫描周边蓝牙设备。
3 问题原因
使能蓝牙后,在host与controller间的hci交互时,host读取本地芯片的蓝牙地址为全0,导致host一直发送Inquiry命令。
4 解决方案
-
将蓝牙地址写入到文件//vendor/XXXXXX/bluetooth/src/sprd/btmac.txt中,并将此文件打包到设备的/vendor/etc/目录下。
5 定位过程
5.1 使能bt snoop
使能bt snoop后可以在设备上生成snoop日志文件,用于记录host与controller间的hci协议交互。 snoop的使能以及日志文件的生成路径都可以在bt_conifg.xml文件中配置。 文件路径 //founcation/communication/bluetooth/services/bluetooth/etc/init/bt_config.xml
5.2 读取snoop文件
将设备上/data/bluetooth/log/snoop.log文件通过hdc导出,然后用wireshark或者frontline直接打开查看。
5.3 分析hci协议交互
在wireshark工具中查看host与controller在使能后的hci交互,看host下发给controller的命令执行的结果以及获取的值是否正常。 这里host下发'Read BD ADDR'命令后,controll返回的蓝牙设备地址为全0。
6 知识分享
此问题是蓝牙适配中的底层芯片的配置问题,目前openHarmony上蓝牙这边的配置都在目录 //foundation/communication/bluetooth/services/bluetooth/etc/init/下,这些配置会体现在hci的交互中。
更多推荐


所有评论(0)