HCI 功能规范【1. Introduction】
这部分内容是HCI 章节的 Introduction主要是在说明HCI 是 Host 和 Controller 之间的标准接口。它不是在讲某一个具体的 HCI Command而是在先交代 HCI 的定位、作用、上下层关系、数据传输路径以及 Host 和 Controller 版本不一致时应该如何处理。1. HCI 章节整体想表达什么HCI全称是Host Controller Interface也就是主机控制器接口。蓝牙协议栈里可以粗略分成两大部分Host ControllerHost 一般运行在手机、电脑、MCU 主控、操作系统蓝牙协议栈中。Controller 一般运行在蓝牙芯片、蓝牙模块、蓝牙 SoC 的控制器固件中。HCI 的作用就是在 Host 和 Controller 之间定义一套统一的通信接口。也就是说Host 不需要直接知道 Controller 里面的 Link Layer、Baseband、Radio 是怎么实现的。Host 只需要通过 HCI Command、HCI Event、HCI Data Packet 这些标准格式和 Controller 通信即可。2. HCI 的核心作用规范里说HCI provides a uniform command method for the Host to access Controller capabilities and to control connections to other Controllers.意思是HCI 为 Host 提供了一种统一的命令方式用来访问 Controller 的能力并控制与其他 Controller 的连接。这句话非常关键。可以理解为Host 想让 Controller 做事情 ↓ 通过 HCI Command 下发命令 ↓ Controller 执行命令 ↓ 通过 HCI Event 返回结果或状态例如 BLE 里常见的操作配置广播参数 设置广播数据 开启广播 配置扫描参数 开启扫描 发起连接 断开连接 设置随机地址 设置白名单 / Filter Accept List 读取本地支持能力这些都不是 Host 直接去操作射频或者 Link Layer而是通过 HCI Command 让 Controller 去完成。3. HCI 跨越 Host 和 Controller 的边界规范里说The HCI layer spans the boundary between the Host and Controller.意思是HCI 层横跨 Host 和 Controller 的边界。因此 HCI 实际上有两个部分Upper HCI Lower HCI3.1 Upper HCIUpper HCI 位于 Host 里面。它负责从 Host 协议栈接收命令、数据然后通过底层传输接口发送给 Controller。例如在手机系统中蓝牙协议栈里的 Host 部分会通过 Upper HCI 向蓝牙芯片发送命令。3.2 Lower HCILower HCI 位于 Controller 里面。它负责接收 Host 发来的 HCI Command 或 Data Packet然后交给 Controller 内部的 Link Manager、Link Layer、Baseband Controller 等模块处理。可以简单理解为Host 内部Upper HCI Controller 内部Lower HCI 两者之间通过物理传输接口连接4. Host Controller Transport Layer 是什么图中 Upper HCI 和 Lower HCI 中间还有几层例如Physical Bus Driver Physical Bus Firmware Physical Bus Hardware这些中间层合起来规范称为Host Controller Transport Layer也就是Host Controller 传输层。它的作用是负责在 Host 和 Controller 之间搬运 HCI 数据。常见的物理传输方式包括USB SDIO UART Other所以实际系统可能是Host 蓝牙协议栈 ↓ Upper HCI ↓ UART / USB / SDIO 驱动 ↓ 物理总线 ↓ Controller 侧固件 ↓ Lower HCI ↓ Link Layer / Link Manager / Baseband这里要注意一点HCI 规范主要定义的是 Host 和 Controller 之间交换的命令、事件、数据格式而不是重点讲 USB、UART、SDIO 这些传输总线本身。这些传输方式只是承载 HCI Packet 的通道。5. Figure 1.1 想表达什么Figure 1.1 是在说明Host、Transport、Controller 之间的软件层次关系。可以简化为Bluetooth Host ├── Other Higher Layer Drivers ├── Upper HCI └── Physical Bus Driver ↓ Physical Bus Hardware / Firmware ↓ BR/EDR/LE Controller ├── Lower HCI ├── Link Manager ├── Link Layer ├── Baseband Controller └── Link Layer Controller这张图的重点不是让你掌握每一个框的实现细节而是让你明白Upper HCI 在 Host 侧Lower HCI 在 Controller 侧中间通过某种物理总线进行通信。也就是说HCI 不是某一个单独软件模块而是一套跨 Host 和 Controller 的接口规范。6. Figure 1.2 想表达什么Figure 1.2 是在说明两个蓝牙设备之间进行数据传输时数据是怎么经过各层的。图中有两个 HostHost 1 Host 2中间各自连接自己的 ControllerHost 1 → Controller 1 Controller 1 ↔ Controller 2 Controller 2 → Host 2实际数据路径可以理解为Host 1 的上层数据 ↓ Host 1 的 Upper HCI ↓ Host 1 的 Transport Layer ↓ Controller 1 的 Lower HCI ↓ Controller 1 的 Link Layer / Baseband / Radio ↓ 无线空口 ↓ Controller 2 的 Link Layer / Baseband / Radio ↓ Controller 2 的 Lower HCI ↓ Controller 2 的 Transport Layer ↓ Host 2 的 Upper HCI ↓ Host 2 的上层这张图想强调的是HCI 只存在于本机 Host 和本机 Controller 之间。它不是两个蓝牙设备之间的空口协议。两个蓝牙设备之间真正通过无线传输的是 Link Layer、Baseband、Radio 等 Controller 层处理后的空口数据包。所以不要把 HCI Packet 理解成会直接发到对端蓝牙设备。例如Host 发 HCI Command 给本机 Controller Controller 再根据命令生成对应的空口行为以 BLE 扫描响应为例Host 配置扫描参数 ↓ HCI Command 发给本机 Controller ↓ Controller 在空口发送 SCAN_REQ ↓ 对端 Controller 回复 SCAN_RSP ↓ 本机 Controller 收到后 ↓ 通过 HCI Event 上报给 Host所以 HCI 是Host 与本机 Controller 的接口不是设备与设备之间的无线协议。7. HCI Event 是异步通知规范里说The Host will receive asynchronous notifications of HCI events.意思是Host 会收到 HCI Event 的异步通知。这里的“异步”很重要。不是所有 HCI Event 都是 Host 发一个 Command 后立即同步返回的结果。HCI Event 有两类常见场景7.1 命令完成类事件例如 Host 发出一个 HCI CommandController 执行完成后通过事件告诉 HostCommand Complete Command Status例如Host开启扫描 ControllerCommand Complete表示命令处理完成7.2 Controller 主动上报类事件Controller 也会主动上报一些事情比如扫描到广播包 连接建立 连接断开 连接参数更新 接收到对端数据 加密状态变化这些事件不是 Host 直接同步调用得到的而是 Controller 在某个时刻主动通知 Host。例如 BLE 扫描时Host 先发送 LE Set Scan Enable 开启扫描 ↓ Controller 后续不断扫描空口广播 ↓ 扫描到设备后通过 LE Advertising Report Event 上报给 Host所以 HCI Event 是理解蓝牙日志的关键。在 btsnoop 日志中经常能看到HCI Command HCI Event HCI ACL Data它们分别对应不同类型的 Host-Controller 交互。8. HCI 适用的 Controller 类型规范里列了三种 ControllerBR/EDR Controller BR/EDR/LE Controller LE Controller这表示 HCI 规范不是只服务 BLE也包括经典蓝牙 BR/EDR。8.1 BR/EDR Controller只支持经典蓝牙功能。例如传统蓝牙音频、SPP、HFP、A2DP 等底层属于 BR/EDR 体系。8.2 LE Controller只支持低功耗蓝牙功能。也就是 BLE 相关功能例如广播、扫描、连接、GATT 通信等。8.3 BR/EDR/LE Controller同时支持经典蓝牙和 BLE。很多手机、电脑、双模蓝牙芯片都是这种类型。9. 对 BLE 学习来说哪些内容最重要如果目标是掌握 BLE那么 HCI 章节里要重点关注 LE 相关内容。尤其是这些部分LE Controller Commands LE Meta Event HCI ACL Data Packet HCI Command Packet HCI Event Packet HCI Command Complete Event HCI Command Status Event Disconnection Complete Event Number Of Completed Packets EventBLE 常见操作基本都能在 HCI 中找到对应命令例如LE Set Advertising Parameters LE Set Advertising Data LE Set Scan Response Data LE Set Advertising Enable LE Set Scan Parameters LE Set Scan Enable LE Create Connection LE Connection Update LE Read Buffer Size LE Set Random Address LE Add Device To Filter Accept List LE Clear Filter Accept List所以看 HCI 时建议不要从头到尾平均用力而是围绕 BLE 场景看广播 扫描 连接 数据收发 断开 白名单 / 过滤列表 随机地址 PHY 连接参数 数据长度 MTU 上层配合10. Cross-version issues 想表达什么Cross-version issues 是在讲Host 和 Controller 支持的蓝牙规范版本不一致时应该如何处理。规范说Host 和 Controller 通过 HCI 通信时不要求两者支持同一个版本的蓝牙规范。这很重要。实际产品中可能出现Host 协议栈版本较新Controller 固件版本较旧 Controller 固件版本较新Host 协议栈版本较旧例如Host 支持 Bluetooth 5.4 Controller 只支持 Bluetooth 5.0或者Controller 支持 Bluetooth 5.3 Host 只按 Bluetooth 5.0 的能力使用这时就会出现版本兼容问题。11. Controller 比 Host 新时规范说如果 Controller 符合较新的规范版本而 Host 符合较旧的规范版本那么 Controller 返回的某些事件参数里可能包含 Host 当前版本还不认识的值。例如HCI_Command_Status HCI_Command_Complete这些事件中可能出现为未来版本保留的值。如果 Host 收到自己不认识的保留值不能随便崩溃或异常处理而应该按照规范要求处理。其中一个典型规则是如果 HCI_Command_Complete 事件的 Status 参数出现 Host 不认识的保留值 Host 应该把它当作 Unspecified Error 处理。也就是Unspecified Error 0x1F重点是旧 Host 遇到新 Controller 返回的新状态值时要有兼容处理不能因为不认识就行为异常。12. Host 比 Controller 新时规范里的 Note 说如果 Host 符合较新的规范版本而 Controller 符合较旧的规范版本Host 使用了旧 Controller 不支持的新命令或新功能那么 Controller 会返回错误。这个很好理解。例如Host 想使用 Bluetooth 5.x 的某个新特性 但是 Controller 只支持 Bluetooth 4.x那么 Host 下发相关 HCI Command 时Controller 可能会返回Unsupported Feature or Parameter Value Unknown HCI Command Command Disallowed具体返回什么要看命令和 Controller 实现。所以 Host 在使用新功能前一般要先查询 Controller 能力。常见方式包括Read Local Version Information Read Local Supported Commands Read Local Supported Features LE Read Local Supported Features对于 BLE 开发来说这一点很重要。不能认为手机系统或者 Host 支持某个 BLE 功能Controller 就一定支持。最终能不能用要看Host 支持 Controller 支持 对端设备支持 当前连接参数 / PHY / 安全状态允许13. 这部分内容的关键信息总结13.1 HCI 是 Host 和 Controller 的接口HCI 的本质是Host 控制 Controller 的标准接口Host 通过 HCI Command 控制 Controller。Controller 通过 HCI Event 向 Host 返回结果或主动上报状态。13.2 HCI 不是空口协议HCI Packet 不会直接发给对端蓝牙设备。它只在本机 Host 和本机 Controller 之间传输。真正通过无线空口传输的是 Controller 内部 Link Layer、Baseband、Radio 处理后的数据。13.3 HCI 有 Upper HCI 和 Lower HCIUpper HCIHost 侧 Lower HCIController 侧两者之间通过 Host Controller Transport Layer 传输数据。13.4 Transport Layer 只是搬运 HCI 数据USB、UART、SDIO 这些是承载 HCI 数据的传输通道。它们不是 HCI 本身。可以理解为HCI 定义数据格式和交互规则 UART / USB / SDIO 负责把这些数据搬过去13.5 HCI Event 是异步通知机制Host 不只是发送命令等待结果。Controller 也会主动上报事件。例如扫描到广播 连接完成 连接断开 接收到数据 连接参数变化这些都通过 HCI Event 通知 Host。13.6 HCI 同时覆盖经典蓝牙和 BLEHCI 规范适用于BR/EDR Controller LE Controller BR/EDR/LE Controller所以学习 BLE 时要重点看 LE 相关命令和事件不需要把所有 BR/EDR 内容都深入看完。13.7 Host 和 Controller 版本可以不一致Host 和 Controller 不要求支持相同蓝牙规范版本。因此要注意版本兼容问题。Controller 比 Host 新Host 可能收到不认识的保留值 Host 比 Controller 新Controller 可能不支持 Host 使用的新命令这也是为什么很多功能使用前要先查询 Controller 支持能力。14. 结合 BLE 学习时应该怎么理解这部分这部分可以理解为 HCI 章节的“地图”。它告诉你HCI 在哪里 HCI 连接谁和谁 HCI 通过什么传输 HCI 负责什么 HCI 不负责什么 HCI 和 Controller 版本有什么关系对于 BLE 学习来说最关键的理解是GAP / GATT / ATT 是 Host 层的行为、角色、过程、数据模型。 HCI 是 Host 控制 Controller 的标准接口。 Link Layer 是 Controller 真正执行空口广播、扫描、连接、链路控制的地方。例如 GAP 中说设备进入 Connectable Mode这是一种 Host 层定义的行为模式。真正落地时Host 会通过 HCI Command 配置 Controller设置广播参数 设置广播数据 开启广播Controller 再在 Link Layer 中执行对应的广播行为。所以可以形成这样的理解链路GAP 定义行为语义 ↓ HCI 提供控制接口 ↓ Controller / Link Layer 执行空口动作这就是读蓝牙规范时非常重要的一条主线。

相关新闻

从数据到告警:A-SysArmor完整工作流程详解(附APT攻击检测案例)

从数据到告警:A-SysArmor完整工作流程详解(附APT攻击检测案例)

从数据到告警:A-SysArmor完整工作流程详解(附APT攻击检测案例) 【免费下载链接】A-SysArmor A-SysArmor focuses on system security, exploring cutting-edge technologies and enhancing system defense capabilities based on AI. 项目地…

2026/7/3 14:28:56 阅读更多 →
10分钟精通Kiran-authentication-devices配置:device.conf与driver.conf参数全解

10分钟精通Kiran-authentication-devices配置:device.conf与driver.conf参数全解

10分钟精通Kiran-authentication-devices配置:device.conf与driver.conf参数全解 【免费下载链接】kiran-authentication-devices Kiran authentication services Management Device Compatibility layer 项目地址: https://gitcode.com/openeuler/kiran-authenti…

2026/7/3 14:28:56 阅读更多 →
企业级AI编排:MuleSoft与LLM协同落地实践

企业级AI编排:MuleSoft与LLM协同落地实践

1. 项目概述:当企业级集成平台遇上大语言模型“AI Orchestration in Action: How MuleSoft and LLMs Fuel the Future of Enterprise AI”——这个标题不是一句空泛的营销口号,而是我在过去18个月里亲手搭建、上线并持续迭代的三个核心生产系统的真实写照…

2026/7/3 14:26:55 阅读更多 →

最新新闻

4-20mA电流环原理与INA196工业检测方案

4-20mA电流环原理与INA196工业检测方案

1. 4-20mA电流环基础与行业应用工业现场最让人头疼的莫过于信号传输过程中的干扰问题。记得我第一次在化工厂调试传感器时,电压信号在长距离传输后衰减严重,导致控制室显示的数值和现场实际值相差甚远。这正是4-20mA电流环标准在工业领域经久不衰的根本原…

2026/7/3 15:23:28 阅读更多 →
Windows端微信QQ防撤回原理与实战:RevokeMsgPatcher工具深度解析

Windows端微信QQ防撤回原理与实战:RevokeMsgPatcher工具深度解析

1. 项目概述:为什么我们需要一个“防撤回”工具? 在即时通讯软件成为工作与生活核心的今天,微信和QQ的“消息撤回”功能,就像一把双刃剑。一方面,它给了我们修正口误、弥补失误的机会;另一方面,…

2026/7/3 15:23:28 阅读更多 →
工业4-20mA电流环设计:XTR116与PIC18LF26K22实战解析

工业4-20mA电流环设计:XTR116与PIC18LF26K22实战解析

1. 工业电流环发射器的核心价值与应用场景在工业自动化领域,4-20mA电流环传输堪称模拟信号传输的"黄金标准"。这种传输方式之所以能历经数十年而不衰,关键在于其独特的抗干扰能力——电流信号在长距离传输时几乎不受线路电阻和电磁噪声的影响。…

2026/7/3 15:21:27 阅读更多 →
引AI提速后,电源线工厂返工率为何不降反升?

引AI提速后,电源线工厂返工率为何不降反升?

最近跟几位在制造业上下游跑的朋友聊,大家普遍反馈一个有点反直觉的现象:不少电源线工厂引了AI检测、上了自动化产线,结果返工率不仅没降,反而比之前纯人工的时候还高了几个点。 乍一听很离谱,但深入了解后你会发现&am…

2026/7/3 15:21:27 阅读更多 →
微信小程序商城怎么开通?附2026全国最新小程序开发公司排名(2026年7月更新)含零代码SAAS、AI编程、源码定制交付

微信小程序商城怎么开通?附2026全国最新小程序开发公司排名(2026年7月更新)含零代码SAAS、AI编程、源码定制交付

一、汇总表工具/组合更适合谁价格建站方式核心特点餐宝盈适合所有行业的商家,尤其是拥有自己实体门店的商家,如餐饮、茶饮、烘焙、便利店、生鲜、社区零售门店、教培门店,尤其适合先把点单、预约、会员、发券和复购做起来的老板。99/年模板SA…

2026/7/3 15:21:27 阅读更多 →
分布式架构-网关(Gateway)

分布式架构-网关(Gateway)

如果是 Java Web 前后端分离 分布式架构,网关(Gateway)是整个系统最重要的组件之一。 下面按照企业级项目来介绍,而不是物联网场景。一、整体架构用户│浏览器(Vue/React)│HTTPS│┌─────────────┐│ Nginx/CDN …

2026/7/3 15:19:26 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻