1. BLE调试中的HCI日志:你必须知道的真相
作为一名蓝牙开发工程师,我经常看到新手同事对着HCI日志抓耳挠腮。他们最常问的问题就是:"这堆日志到底能告诉我什么?"今天我就用十年踩坑经验,带你彻底搞懂HCI日志的能看与不能看。
HCI日志就像蓝牙系统的"黑匣子",记录了主机和控制器之间的所有对话。但很多人不知道的是,它其实是个"选择性录音机"——有些关键信息它压根不会记录。理解这个边界,能让你在调试时少走80%的弯路。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. BLE协议栈与HCI的定位
2.1 协议栈分层解析
要理解HCI日志的边界,必须先搞懂BLE协议栈的分层结构:
code复制应用层 (Application)
↓
通用属性规范 (GATT)
↓
属性协议 (ATT)
↓
逻辑链路控制与适配协议 (L2CAP)
↓
链路层 (Link Layer)
↓
物理层 (PHY)
HCI位于主机栈和控制器之间:
code复制主机栈 (Host Stack)
↓
主机控制器接口 (HCI)
↓
控制器 (Controller)
这个位置决定了HCI日志的观察范围——它只能看到主机和控制器之间的通信,看不到真实的空中接口数据交换。
2.2 HCI的桥梁作用
HCI就像公司里的秘书,负责传达高层(主机)和基层(控制器)之间的指令和汇报。但它不会记录基层员工之间私下交流的细节。这就是为什么:
- 你能看到主机下发的所有命令
- 能看到控制器上报的所有事件
- 但看不到设备间实际的无线通信内容
3. HCI日志明确可见的信息
3.1 连接建立全过程
当看到LE Enhanced Connection Complete事件时,恭喜你抓到了连接建立的关键证据。这个事件包含:
- 对端设备地址
- 设备角色(中心/外设)
- 连接句柄
- 连接间隔(Connection Interval)
- 外设延迟(Peripheral Latency)
- 监控超时(Supervision Timeout)
例如这样一组参数:
code复制Connection Interval: 15 ms
Peripheral Latency: 0
Supervision Timeout: 3000 ms
这三个参
