蓝牙开发的同学想必一定遇到这样的问题:
fastboot重刷完安卓系统后,snoop文件是默认不保存的。
这对相当多蓝牙协议栈开发人员是一个麻烦,因为通过分析Host和Controller之间的消息交互能确定很多问题,那有没有什么方法打开这个snoop文件?那是必须有的,方法如下:
1、手动打开snoop文件开关
手动打开的步骤如下:
- 打开安卓系统中的开发人员选项:
英文:System -> About phone -> Build number ,连续点击Build number 五次
中文:系统 -> 关于手机 -> 版本号,连续点击版本号五次 - 在系统(System)下点击开发人员选项(Developer options)
- 打开HCI snoop文件开关按钮
- 重新开关设置中蓝牙按钮,让上述配置生效
2、默认打开snoop文件开关
默认打开的方法有如下两种:
- 通过指令:adb shell setprop persist.bluetooth.btsnoopenable true 打开蓝牙HCI snoop,重新开关蓝牙,使其配置生效
- 或者通过修改安卓源码:system\bt\hci\src\btsnoop.cc 中的函数
is_btsnoop_enabled()让其始终返回 true,重编协议栈的so库替换系统中的库
经过如上步骤的操作,蓝牙的snoop文件就会保存起来,默认存储路径:data/misc/bluetooth/logs/,使用专业的蓝牙协议分析工具 Ellisys Bluetooth Analyzer和Frontline对应的软件打开HCI snoop文件就可以分析底层蓝牙信息交互的全过程了。
更多互联互通技术,欢迎关注微信公众号:Connectivity