附录03 BLE HID协议
约 3084 字大约 10 分钟
2026-03-23
1. BLE(Bluetooth Low Energy)协议
低功耗蓝牙(BLE)是物联网(IoT)生态系统的一项关键技术。BLE最初是作为一种无线协议开发的,用于取代键盘、鼠标和耳机等消费电子产品中的线缆,但时至今日,它的功能已经大大拓展,不再仅仅是线缆的替代方案。目前,它在医疗、零售、汽 车等多个行业及位置标签、仪器控制等工业应用中发挥着重要作用。
根据《2023年蓝牙市场更新报告》(2023 Bluetooth Market Update),从 2023年到2027年,支持蓝牙无线技术的设备出货量的复合年增长率(CAGR)为9%。1在这种增长态势下,预计到2027年,BLE设备出货量将翻一番以上,并且在所有支持蓝牙技术的设备中,97%会采用BLE。1
BLE是一种无线技术,于2010年7月随蓝牙4.0规范推出。BLE前称为Bluetooth Smart(蓝牙智能),专为超低功耗设备而设计。
1.1 BLE 和 经典蓝牙
我们熟悉的传统蓝牙技术主要用于将智能手机与耳机配对、传输音乐和照片等大量数据,而BLE则有着不同的用途。传统蓝牙虽然能够处理大量数据传输,但会因此而消耗更多的电池电量。相比之下,BLE针对不需要大量数据传输的应用进行了 优化,因而成为各种功耗敏感应用的理想选择。传统蓝牙即使在不使用时,仍会保持活动状态并消耗电量,而BLE大部分时间处于休眠模式,仅在建立连接时才会唤醒,并且连接时间通常仅维持几毫秒。这种高效的电源管理,结合最高1 Mbps(BLE 5.0中达到2 Mbps)的数据速率,使得BLE设备能够以极低的功耗运行。
① 经典蓝牙和BLE的协议规范
如图1和图2所示:
- 经典蓝牙: 代表蓝牙的最早版本,具有较高的数据速率能力,适用于流媒体、高带宽文件传输和耳机。它有79个RF信道,其中32个广播信道,以便其他设备可以发现和连接。
- 低功耗蓝牙:针对数据传输不频繁的低功耗应用,例如传 感器和其他低带宽传输。它有40个RF信道,其中3个信道用于设备发现。

| 特性维度 | 蓝牙经典 (BR/EDR) | 蓝牙低功耗 (BLE) |
|---|---|---|
| 设计目标 | 连续、高数据速率的流式传输(如音频) | 极低功耗、间歇性小数据包传输 |
| 通信拓扑 | 点对点 (Point-to-Point) | 点对点,广播,以及Mesh网络 |
| 物理层参数 | 79个 1MHz带宽信道,采用自适应跳频 | 40个 2MHz带宽信道,也采用自适应跳频 |
| 数据传输速率 | 1、2、3 Mb/s(速率高) | 125、500 Kb/s,1、2 Mb/s(低速率下功耗极低) |
② 经典蓝牙和BLE的应用

| 应用领域 | 蓝牙经典 (BR/EDR) | 蓝牙低功耗 (BLE) |
|---|---|---|
| 音频流 | 支持。这是蓝牙经典最成功、最成熟的应用,如无线耳机、音箱。它传输的A2DP音频协议对连续性和带宽要求很高。 | 支持。LE Audio是BLE的扩展,支持更高质量的音频和广播音频(如助听、场馆同声传译),但需要较新的硬件和系统支持。 |
| 数据传输 | 支持。主要用于需要较高带宽的突发传输,如手机向打印机发送照片、文件传输等。 | 支持。这是BLE最主流的应用场景,特点是低功耗、小数据包、频繁交互。如心率带、温度传感器、智能手表同步、无线鼠标键盘等。 |
| 位置服务 | 不支持。蓝牙经典没有专门为定位设计的机制。 | 支持。利用BLE的广播信道,可以实现室内定位、物品追踪(如AirTag)、近距离感知(如手机解锁汽车)。 |
| 设备网络 | 不支持。蓝牙经典仅支持点对点连接。 | 支持。BLE支持Mesh网络,可以让大量设备(如上百个灯泡)自组网、相互中继,实现覆盖全屋的智能家居控制。 |
1.2 Central(中心设备)和 Peripheral(外设)
BLE 分 Central(中心设备)和 Peripheral(外设)。
Peripheral 作为 GATT Server(服务端),对外广播并提供 GATT Service;
Central 作为 GATT Client(客户端),搜索 Peripheral 并主动发起连接,通过 GAP 获取连接参数,配对后从 GATT Service 下的 Characteristic 读取 Peripheral 提供的数据,或者通过 Characteristic 向 Peripheral 写入数据。
一般来说,外设(耳机、键盘、鼠标等)为 Peripheral 端,Host(PC、手机)为 Central 端。
1.3 BLE 协议栈架构
BLE协议栈架构是实现BLE设备之间通信的结构化软件框架。它定义了必要的层级和协议,用于建立、维持和终止蓝牙连接,方便设备间交换数据。
BLE协议栈架构通常分为三个主要层级:应用层(APP)、主机层(HOST)和控制器层(CONTROLLER)。
应用层是协议栈的最顶层。BLE设备上运行的应用程序在这一层利用和处理实际数据。
主机层位于协议栈中的应用层和控制器层之间,实现了BLE通信所需的所有较高级别协议和配置文件。此外,它还提供高级应用程序编程接口(API),使得应用程序能够与协议栈的较低层交互。控制器层是BLE协议栈的硬件部分,负责蓝牙信号的发送和接收。
控制器层处理信号的跳频、调制和解调等任务。上述层级协同工作,实现BLE设备之间高效可靠的通信。
2 BLE GATT Profile
GATT(Generic Attribute Profile) 是 BLE(Bluetooth Low Energy)通信中最重要的协议,它定义了设备之间如何发现服务、读写数据、接收通知等通信行为。
GATT 建立在 ATT(Attribute Protocol)协议之上,规定了数据的组织结构、交互流程和角色分工。
一个BLE设备中可能存在多个 GATT Profile,蓝牙规范中定义了标准配置文件,以确保不同制造商生产的BLE设备能够互操作。但是,基于特定应用要求,也可以实现自定义配置文件。因此,了解GATT配置文件的结构至关重要。
对于哪个ID的GATT Service对应什么具体服务,每个Service内部又应该有哪些Characteristic提供数据,理论上我们可以随便自定义,但是BLE协议在议定之初,便规定了很多预定义的GATT Service,以及这些Service内部应该具有的Characteristic。
这些具体的规定就是 GATT Profile。一般来说我们如果想通过BLE对外提供服务(例如我们想做个健康手环,可能就需要对外提供心跳,血压等健康数据),就需要实现这些标准GATT Service,这样Host就能通过读取通用的GATT Service获取数据,而不用我们针对每一个设备写一个驱动。
这个链接是蓝牙技术联盟(Bluetooth SIG)官方发布的全部蓝牙技术规范和文档(Specifications and documents)的汇总列表。
主要内容类型
- Core Specification(核心规范):这是蓝牙技术的“基础”,比如列表中的
Core Specification 6.3、5.4等。它定义了蓝牙底层是如何工作的,是所有蓝牙设备都必须遵守的通用规则。 - Profile(配置文件):定义了某种具体功能如何实现。比如
Hands-Free Profile (HFP)规定了车载免提通话如何工作,Advanced Audio Distribution Profile (A2DP)规定了无线立体声音乐如何传输。 - Service(服务):通常用于低功耗蓝牙(BLE),定义了设备可以提供哪些具体的数据或能力。例如
Heart Rate Service定义了心率监测器如何组织和发送心率数据。 - Protocol(协议):定义了特定类型数据的传输格式和规则。
3 HOGP(HID Over GATT Profile)
上面的 Bluetooth specification 中,我们能查到两个基于蓝牙的HID协议,分别为 HOGP(HID Over GATT Profile) 和 HIDP( Human Interface Device Profile )
两者的区别就是底层的蓝牙协议标准:HIDP是基于经典蓝牙协议的,而HOGP是基于BLE的。如果我们开发新的设备,应该选择HOGP,因为经典蓝牙已经渐渐被BLE取代了。
基于上面的说明文件,我们可以总结一下 HOGP 设备应该提供的服务和特征值列表:
| GATT Service | Requirement | Characteristic | Requirement | Properties | 含义与关键说明 |
|---|---|---|---|---|---|
| HID Service | M | Protocol Mode | C.4 | Read, Write | 设置设备工作在 Boot Protocol Mode (0x00) 或 Report Protocol Mode (0x01)。键盘类设备必须支持 Boot Mode。 |
| Report Map | M | Read | 核心。包含 HID 报告描述符,定义了所有 Input/Output/Feature Report 的格式和含义。 | ||
| Report (Input) | C.1 | Read, Notify | 实际 HID 输入数据通道(如按键、鼠标移动)。主机通过订阅 Notify 接收数据。 | ||
| Report (Output) | C.1 | Read, Write | 实际 HID 输出数据通道(如接收 Caps Lock 等 LED 状态)。 | ||
| Report (Feature) | C.1 | Read, Write | 用于读取或写入设备静态特征或配置项(如固件版本、键盘重复率),不常用于键盘。 | ||
| Report Reference Descriptor | C.1 | - | 这是一个描述符,依附于每个 Report 特征,指明其类型(Input/Output/Feature)和ID。 | ||
| HID Information | M | Read | 包含 HID 规范版本号、国家码(如 0x00 为标准)、以及 RemoteWake、NormallyConnectable 等设备标志。 | ||
| HID Control Point | M | Write Without Response | 主机通过写入特定值(如 0x00)通知设备进入 Suspend 模式以省电,或退出 Suspend。 | ||
| Boot Keyboard Input Report | C.2 | Read, Notify | Boot Mode 专用。使用 USB 标准 8 字节键盘报告格式,保证在 BIOS/系统启动时可用。 | ||
| Boot Keyboard Output Report | C.2 | Read, Write | Boot Mode 专用。用于在 Boot Mode 下接收 LED 状态(Num/Caps Lock)。 | ||
| Boot Mouse Input Report | C.3 | Read, Notify | Boot Mode 鼠标报告。仅当设备是键盘+鼠标复合设备时才需要。 | ||
| Battery Service | M | Battery Level | M | Read, Notify | 当前电池电量百分比 (0-100)。设备电量变化时应主动 Notify 主机。 |
| Device Information Service | M | PnP ID | M | Read | 关键用于驱动匹配。包含 Vendor ID Source (0x01=USB, 0x02=Bluetooth SIG), Vendor ID, Product ID, Product Version。 |
| Manufacturer Name String | M | Read | 制造商名称字符串 (如 "Logitech")。 | ||
| Model Number String | M | Read | 产品型号字符串 (如 "K780")。 | ||
| Serial Number String | O | Read | 设备唯一序列号。 | ||
| Firmware Revision String | O | Read | 固件版本。 | ||
| Hardware Revision String | O | Read | 硬件版本。 | ||
| Scan Parameters Service | O | Scan Interval Window | O | Write Without Response | 主机向设备推荐其扫描的间隔和窗口,以优化功耗和响应速度。 |
| Scan Refresh | O | Notify | 当主机的扫描策略改变时,通过此特征 Notify 设备重新读取 Scan Interval Window。 | ||
| HID ISO Service (for LE Audio) | O | HID ISO Properties | O | Read | 指示设备是否支持通过 LE Audio 的 ISO 通道传输 HID 数据(用于超高保真或游戏级低延迟)。 |
| LE HID Operation Mode | O | Read, Write | 控制设备在传统 GATT 传输和新型 ISO 传输之间的工作模式。 |
M:Mandatory,必须实现。
C.1:Conditional,必须至少实现一种 Report (Input, Output, or Feature)。
C.2:Conditional,键盘设备必须实现 Boot Keyboard Reports。
C.3:Conditional,鼠标设备必须实现 Boot Mouse Report;复合设备(如带触摸板的键盘)两者都需。
C.4:Conditional,支持 Boot Protocol Mode 时必须实现。由于键盘必须支持 Boot Mode,因此此特征为必选。
O:Optional,可选实现。
必要的三项 Service 就是 HID Service,Battery Service 以及 Device Information Service。
HID Service HOGP 的核心,没有它就不是 HID 设备。
Battery Service 无线外设的基本刚需,获知电量。
Device Information Service 提供 PnP ID,主机才能知道该用哪个驱动 / 键盘布局 / 鼠标类型,并正确显示设备名称。
