如何得到安卓设备的HCI LOG
如何得到安卓设备的HCI LOG
介绍
HCI log 是用来分析蓝牙设备之间的交互行为是否符合预期,是否符合蓝牙规范。在日常的开
发中,通常使用HCI log 来做这样几件事:
- 分析 Bug:蓝牙打开后搜索不到设备,或者搜索到的设备没有名称只有蓝牙地址;Android 手机不能向苹果手机传输文件 ... ...
- 需求分析:手机需要适配一款蓝牙自拍杆来控制拍照,通过HCI log 可以观察竞品在实现这个功能时,使用的是什么Bluetooth Profile?只要知道了使用的Bluetooth Profile,我们就有了实现这个功能的思路。
- 蓝牙协议学习:通过HCI log 辅助学习蓝牙协议,就好像学习TCP/IP 时,通过wireshark 抓包来学习TCP 协议 。
蓝牙核心系统架构
为了理解起来更简单,这边将蓝牙核心系统架构抽象为 3 层:
- User Application(Host):User Application 即应用层,也被称为Host,我们调用Bluetooth API 就属于应用层,例如,BluetoothAdapter 中提供的接口。
- HCI (Host controller Interface):上层在调用蓝牙API 时,不会直接操作蓝牙底层(Controller)相关接口,而是通过 HCI 下发对应操作的 Command 给 Controller,然后底层执行命令后返回执行结果,即 Controller 发送 Event 给 HCI,HCI 再通知给应用层,HCI 起到了一个中间层的作用。
- Controller:Controller 是在最底层,可以理解为我们手机上的蓝牙芯片。

完整的蓝牙核心系统架构比较复杂,这里不再深入,感兴趣的可以参考蓝牙规范
Core_v4.2.pdf,里面有详细的定义和介绍。后面在分析HCI log 时,也会参考这个规范中定义的内容。
获取蓝牙HCI log 的方法(通过hci log 位置获取和通过debug report 获取)
注: 一般地,先尝试第一种方法,如果获取不到hci log 位置才使用第二种方法, 以下用HUAWEI nova 2s 和google pixel2 为例作说明
首先对手机进行设置:
找到开发者选项,把手机(HUAWEI nova 2s 和 google pixel2)“开启蓝牙 HCI 信息收集”打开、“USB 调试”打开、“USB 调试授权”打开、“连接USB 时总是弹出提示”打开、“监控ADB 安装应用”打开、“仅充电模式下允许ADB 调试”打开。
下载和安装adb
通过 https://developer.android.com/studio/releases/platform-tools.html 或者从别人安装好的直接拷贝过来使用。
进入dos 环境, 路径切到adb 安装位置或者拷贝位置,如下图:

通过USB 连接手机与PC, 检查是否巳连接设置好
Command: adb devices

通过指令查找hci log 的的位置
Command: adb shell cat etc/bluetooth/bt_stack.conf


这两个手机通过command adb shell cat etc/bluetooth/bt_stack.conf command 返回的结果不一样
HUAWEI nova 2s 可以通过hci log 位置获取hci log
Google pixel2 不能通过hci log 位置去获取, 只能从debug report 的方式去获取
-
HUAWEI nova 2s hci log 的获取
Command: adb pull data/log/bt C:\Users\zhangguiheng\Desktop\kennylog1
注:C:\Users\zhangguiheng\Desktop\kennylog1 为log 存放路径

打开C:\Users\zhangguiheng\Desktop\kennylog1\bt 便可以看到btsnoop_hci_xx(日期).log

-
Google pixel2 hci log 的获取
Command: adb bugreport C:\Users\zhangguiheng\Desktop\kennylog
注: C:\Users\zhangguiheng\Desktop\kennylog3 为log 存在路径

打开存放文件的路径C:\Users\zhangguiheng\Desktop\kennylog3 会看到多了一个压缩文件,如下图:

解压文件打开路径C:\Users\zhangguiheng\Desktop\kennylog3\bugreport-walleye-RP1A.201005.004.A1-2021-
12-30-15-06-23\FS\data\misc\bluetooth\logs 可以看到btsnoop_hci.log:

用抓包工具去解析, 如下图:




浙公网安备 33010602011771号