You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android BT HCI snoop日志蓝牙流量录制及bugreport生成时机咨询

安卓高版本蓝牙HCI日志抓取与触发机制说明

背景

较新版本Android系统中原生btsnoop HCI日志无法直接导出使用,需通过生成bug report的方式抓取蓝牙流量,标准操作步骤如下:

设备端操作

  • 开启开发者选项中的USB调试功能
  • 开启开发者选项中的HCI logging功能
  • 启动或重启蓝牙服务
  • 重启设备(原生系统可省略,仅针对定制ROM场景生效)

电脑端操作

  • 安装ADB调试工具
  • 通过USB连接手机与电脑,确认ADB调试授权正常

终端操作

  • 执行命令导出bugreport:$adb bugreport bugreport
  • 解压导出的压缩包:$unzip bugreport.zip
  • 进入蓝牙日志对应目录:$cd /FS/data/misc/bluetooth/logs/
  • 解析日志:使用官方提供的$py3 btsnooz.py btsnoop_hci.log > btsnoop_hci.txt命令,或通过wireshark内置功能直接解析二进制日志文件

已知问题表现

当前蓝牙日志生成逻辑无公开官方说明,实际使用表现极不稳定:

  • 每次开启蓝牙HCI snooping功能后60秒会被系统自动关闭
  • 10次导出操作约有5次的bugreport.zip中,/FS/data/misc/bluetooth/logs/路径下不存在对应蓝牙日志文件夹
  • 日志时长不稳定,部分时候不足5秒,部分时候可超过1000秒

触发机制说明

蓝牙流量录制触发逻辑

三个操作的触发优先级和作用如下:

  1. 核心配置触发:开发者选项开启蓝牙HCI日志开关是录制的必要前提,仅开启开关不会立刻启动录制,系统仅标记蓝牙日志配置为可用状态
  2. 录制启动触发:蓝牙开关启停是录制的正式启动信号,重启蓝牙后蓝牙服务会读取已开启的HCI日志配置,启动流量抓取并写入缓存,日志起始时间从本次蓝牙启动时间计算
  3. 配置持久化触发:设备重启仅针对国内定制ROM生效,多数定制ROM会限制开发者选项的临时配置权限,重启后HCI日志配置才会写入系统持久化配置文件,避免被系统自动回收清理

bugreport生成触发逻辑

bugreport完全由adb bugreport命令执行时触发,执行命令瞬间系统会拉取过去1小时内所有系统服务的缓存、磁盘日志文件打包生成压缩包:如果此时蓝牙HCI日志还在内存缓存中未刷入磁盘,就会出现找不到日志文件夹的情况;如果蓝牙服务在录制过程中被系统回收重启,就会出现日志时长不足的问题。

稳定抓取优化方案

  • 开启HCI日志开关后立刻重启蓝牙,等待30秒再执行需要抓包的蓝牙操作,确保日志已开始写入磁盘
  • 开启HCI日志后10秒内启动复现操作,避免60秒自动关闭开关导致录制中断
  • 需长时录制时可提前执行命令adb shell settings put secure bluetooth_hci_log 1强制锁死HCI日志开关,规避系统自动关闭逻辑
  • 复现操作完成后立刻执行adb bugreport命令导出日志,避免日志被系统定期清理

内容的提问来源于stack exchange,提问作者sourpeach

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 18:45:03