☰
Wireshark 蓝牙 HCI 日志分析常用操作速查
2026/10/14 19:36:30 网站建设 项目流程

一、常用过滤器

使用 Wireshark 分析蓝牙 HCI 日志,主要关注:连接请求、建连结果、连接句柄、断连原因和建连耗时。本文以经典蓝牙 BR/EDR 为主。过滤表达式复制到 Wireshark 顶部的“显示过滤器”中即可使用。

分析目标显示过滤器说明
所有 HCI 命令和事件bthci_cmd || bthci_evt排查入口,排除大量 ACL 数据
本地主动建连bthci_cmd.opcode == 0x0405Create Connection
收到对端连接请求bthci_evt.code == 0x04Connection Request
接受连接请求bthci_cmd.opcode == 0x0409Accept Connection Request
拒绝连接请求bthci_cmd.opcode == 0x040aReject Connection Request
查看建连结果bthci_evt.code == 0x03Connection Complete,检查 Status
查看成功建连bthci_evt.code == 0x03 && bthci_evt.status == 0x00还需确认 Link Type 为 ACL
取消正在进行的建连bthci_cmd.opcode == 0x0408Create Connection Cancel
本地主动发出断连命令bthci_cmd.opcode == 0x0406Disconnect
查看断连完成事件bthci_evt.code == 0x05Disconnection Complete
查看 L2CAPbtl2cap分析上层通道建立和断开
查看 A2DP 信令btavdtp分析音频流配置、打开、启动等
查看 AVRCP 相关交互btavctp分析音频控制交互
查看 RFCOMMbtrfcomm可用于分析 HFP 的 AT 指令交互
查看 BLE ATT 交互btatt分析属性读写、通知等

1. 建连、取消建连、断连综合过滤器

采用==和||写法,避免部分版本不支持集合语法的问题。

(bthci_cmd.opcode == 0x0405) || (bthci_cmd.opcode == 0x0406) || (bthci_cmd.opcode == 0x0408) || (bthci_cmd.opcode == 0x0409) || (bthci_cmd.opcode == 0x040a) || (bthci_evt.code == 0x03) || (bthci_evt.code == 0x04) || (bthci_evt.code == 0x05)

包含以下关键节点:

命令或事件含义
Create Connection本地主动发起建连
Connection Request收到对端连接请求
Accept / Reject Connection Request本地接受或拒绝请求
Connection Complete建连过程结束,结果由 Status 判断
Create Connection Cancel取消正在进行的建连
Disconnect本地主机发出断连命令
Disconnection Complete控制器上报断连结果

排查失败时,建议使用完整过滤器,补看 Command Status / Command Complete:

bthci_cmd || bthci_evt

2. 仅查看连接与断连关键事件

只关注“收到请求、建连完成、断连完成”三个时间点时,使用:

bthci_evt.code == 0x04 || bthci_evt.code == 0x03 || bthci_evt.code == 0x05

以上两个综合过滤器针对经典蓝牙。BLE 连接结果需查看 LE Meta Event,见第六节。

二、如何判断连接是否建立

阶段关键命令或事件判断方法
本地主动发起Create Connection记录 BD_ADDR 和发起时间
收到对端请求Connection Request只代表收到请求,不代表建连成功
本地接受或拒绝Accept / Reject Connection Request确认本地主机的处理结果
建连过程结束Connection CompleteStatus 为 0x00 表示成功,非零表示失败
确认 ACL 成功Connection Complete同时确认 Link Type 为 ACL,记录 Handle 和 Time

注意:

  • 本地主动建连时,不一定出现 Connection Request。
  • 成功 Connection Complete 的时间,是 HCI 侧上报成功的时间。
  • ACL 建立成功 ≠ A2DP/HFP 连接完成 ≠ 音频开始播放。

三、按 Handle 跟踪连接

建连成功后,记录BD_ADDR 与 Connection Handle 的对应关系。假设 Handle 为0x000b:

bthci_evt.connection_handle == 0x000b || bthci_cmd.connection_handle == 0x000b || bthci_acl.chandle == 0x000b
注意项说明
双连分析分别记录两个设备的 BD_ADDR 与 Handle
Handle 复用断连后 Handle 可能复用,需要结合时间范围判断
字段兼容性如果报错,在包详情中右键字段 → 作为过滤器应用

四、常见断连原因

在 Disconnection Complete 中查看Connection Handle、Status、Reason。

Reason含义
0x08Connection Timeout:连接超时
0x13Remote User Terminated Connection:对端用户终止连接
0x14对端因资源不足终止连接
0x15对端因关机终止连接
0x16Connection Terminated by Local Host:本地主机终止连接

判断断连发起方,应结合 Disconnect 命令、完成事件及上层日志,不要只凭 Reason 推断根因。

五、Wireshark 常用操作

需求操作
显示绝对时间视图 → 时间显示格式 → 当天时间(Time of Day)
显示日期和时间视图 → 时间显示格式 → 日期和当天时间
保留毫秒/微秒时间显示精度选择毫秒或微秒,方便分析时序
搜索事件名称Ctrl + F → 字符串 → 数据包列表
添加 Handle / Status / Reason 列在包详情中右键字段 → 作为列应用
标记关键包选中包后按 Ctrl + M
设置时间参考点选中包后按 Ctrl + T
限定抓包相对时间范围frame.time_relative >= 10 && frame.time_relative <= 20

计算建连耗时

  1. 找到对应的 Create Connection,按Ctrl + T设置时间参考点。
  2. 将时间格式切换为“自参考或捕获开始的秒数”。
  3. 找到同一设备成功的 Connection Complete。
  4. 读取其 Time,例如0.326表示约326 ms。

说明:

  • 设置参考点时,注意其他时间参考点对显示的影响。
  • frame.time_relative表示相对抓包起点的时间,不随 Time 列切换成绝对时间而改变。
  • 绝对时间依赖文件记录的时间戳及抓包设备时钟,单纯切换显示格式不能恢复缺失的真实时间。

六、BLE 建连过滤补充

分析目标显示过滤器说明
LE Create Connectionbthci_cmd.opcode == 0x200d发起 BLE 建连
LE Extended Create Connectionbthci_cmd.opcode == 0x2043扩展建连命令
LE Create Connection Cancelbthci_cmd.opcode == 0x200e取消 BLE 建连
LE Meta Eventbthci_evt.code == 0x3e包含连接完成等多种 LE 子事件

BLE 建连成功需检查LE Connection Complete / LE Enhanced Connection Complete:

  • 确认Status = 0x00。
  • 记录 Handle、Peer Address、Role。
  • 查看连接间隔、外围设备延迟和监督超时等参数。

七、过滤器无法使用时的检查方法

现象原因与处理
输入框变红语法或字段不被识别,先单独测试 bthci_evt 和 bthci_cmd
输入框绿色,但没有数据包语法有效,但日志没有匹配项,或未解析成对应 HCI 协议
从 Markdown 表格源码复制后报错表格源码中的竖线可能带转义反斜杠,实际过滤器中的逻辑或必须是两个竖线,不带反斜杠
字段名称不匹配在包详情中右键 Event Code / Opcode → 作为过滤器应用,以自动生成的字段为准

建议从正文中的代码块复制综合过滤器,避免表格转义字符影响使用。

八、推荐排查顺序

  1. 定位连接请求或本地主动发起命令。
  2. 查看命令响应及最终建连结果。
  3. 记录 BD_ADDR 与 Handle 的对应关系。
  4. 结合时间参考点计算建连耗时。
  5. 若建连失败,查看 Connection Complete 的 Status 和 Reason。
  6. 若断连,查看 Disconnection Complete 的 Reason,并结合上层日志判断发起方。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询