侧边栏
#home h1{ font-size:45px; }

如何得到安卓设备的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 是在最底层,可以理解为我们手机上的蓝牙芯片。
    image
    完整的蓝牙核心系统架构比较复杂,这里不再深入,感兴趣的可以参考蓝牙规范
    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 安装位置或者拷贝位置,如下图:

image

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

Command:  adb devices

image

通过指令查找hci log 的的位置

Command:  adb shell cat etc/bluetooth/bt_stack.conf

image

HUAWEI nova 2s

image

google pixel2

这两个手机通过command adb shell cat etc/bluetooth/bt_stack.conf command 返回的结果不一样
HUAWEI nova 2s 可以通过hci log 位置获取hci log
Google pixel2 不能通过hci log 位置去获取, 只能从debug report 的方式去获取

  1. HUAWEI nova 2s hci log 的获取
    Command: adb pull data/log/bt C:\Users\zhangguiheng\Desktop\kennylog1
    注:C:\Users\zhangguiheng\Desktop\kennylog1 为log 存放路径
    image
    打开C:\Users\zhangguiheng\Desktop\kennylog1\bt 便可以看到btsnoop_hci_xx(日期).log
    image

  2. Google pixel2 hci log 的获取
    Command: adb bugreport C:\Users\zhangguiheng\Desktop\kennylog
    注: C:\Users\zhangguiheng\Desktop\kennylog3 为log 存在路径
    image
    打开存放文件的路径C:\Users\zhangguiheng\Desktop\kennylog3 会看到多了一个压缩文件,如下图:
    image
    解压文件打开路径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:
    image

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

image
image
image

posted @ 2025-08-15 15:29  AL_1S  阅读(186)  评论(0)    收藏  举报