liwen01 2025.05.01
前言
Bluetooth core system architecture
查看蓝牙核心规范文档,都会看到一个复杂的核心系统架构图,蓝牙核心系统架构图概括了蓝牙的基本工作原理。
对于初学者,初看这图,不可避免有点令人望而却步,这未免太过于晦涩?
本文我们将尝试对它进行拆开分解,以便于能更好地理解蓝牙的基本工作原理。
(一) Host、Controller 与 HCI

在《蓝牙基础(一):蓝牙协议栈与硬件架构方案》中我们有介绍单模与双模蓝牙。其实不管是单模还是双模蓝牙,它们的协议栈都是采用了分层架构的设计。
蓝牙分层架构涉及的核心结构是:
- Host(主机)
- Controller(控制器)
- HCI(Host Controller Interface,主机控制器接口)
(1) 蓝牙 Host(主机)
Host 运行在主处理器上(如 MCU、Linux、Windows 等),主要负责上层协议和应用逻辑。
(2) 蓝牙 Controller(控制器)
Controller 通常集成在一个蓝牙芯片中(有时称为 Bluetooth SoC),负责底层无线通信功能。
(3) HCI(Host Controller Interface)
HCI 是 Host 和 Controller 之间的 标准接口协议 ,它定义了Host 、Controller 两者之间如何交换命令、事件和数据。
常见的通信方式有:UART、USB、SPI、SDIO 等
(4) Host、Controller、HCI 之间的关系

Host、Controller、HCI 之间的关系、可以简单理解为:
Host 是 大脑 ,Controller 是 身体 ,HCI 是它们之间的 通信通道。
在蓝牙鼠标中,插入电脑的那个蓝牙USB适配器是Controller,PC机系统是Host,它们通过USB HCI协议进行通信。
(二) Resource Manager
在蓝牙协议栈的层次结构中,HCI 是主机 Host 和控制器 Controller 之间的通信通道。
这里有语音数据(实时性要求高),也有数据传输(文件、通知、控制命令等)。
数据类型主要有:SCO、ACL、C/E 等
- HCI Command Packet(Host → Controller)
- HCI Event Packet(Controller → Host)
- HCI ACL Data Packet(数据传输)
- HCI SCO Packet(用于语音)
有这么多数据要进行收发控制,那又是谁来做数据收发的优先级、流量、拥塞控制呢?
这就引入了主机的 Resource Manager (资源管理器)与控制器中的Baseband Resource Manager(基带资源管理器)。
(1) Resource Manager (资源管理器)
Resource Manager 是蓝牙协议栈中用于整体资源协调与管理的模块,负责在协议栈的不同层之间协调有限的系统资源。
- 所在层级:主机协议栈层(Host)或控制器接口层
- 管理对象:高层资源,如连接、内存、协议模块调度
- 作用范围:跨模块调度、资源分配、策略控制
- 典型用途:多连接管理、Host Controller接口管理、QoS管理
(2) Baseband Resource Manager (基带资源管理器)
Baseband Resource Manager 是蓝牙控制器中专门用于管理基带层资源的模块。基带是蓝牙协议栈的底层部分,直接控制无线链路的建立与维护。
- 所在层级:控制器内部(Controller)
- 管理对象:低层资源,如跳频、时间片、基带硬件
- 作用范围:精细控制蓝牙物理层时序与硬件调度
- 典型用途:多个基带活动时的时隙调度、链路维持
(3) 应用举例
假设一个蓝牙设备既要进行语音传输(SCO连接,实时性要求高),又在做数据同步(ACL连接,如文件或通知)。
Resource Manager
- 从全局角度分配资源:决定哪些连接可以共存、各自的优先级
- 管理协议栈内的共享资源:如内存缓冲区、连接控制块等
- 做策略级决策:比如为了语音清晰度,优先保障SCO连接,限制ACL带宽
Baseband Resource Manager
- 负责底层时间调度与频率控制:在微秒级别分配SCO和ACL的时隙
- 解决时间冲突:协调不同连接在物理层的发送/接收时机,避免碰撞
- 控制基带硬件资源使用:如跳频、同步窗口、接收缓冲区等
(4) C-plane 与 U-plane
在蓝牙核心规范中,蓝牙各层次间的数据分为两种:
- C-plane(Control Plane)
- U-plane(User Plane)

C-plane: 主要用于处理蓝牙协议栈中的控制信息,包括设备管理、链路管理、信道控制、流量调度、功率控制、设备发现等。
U-plane: 主要用于数据传输,涉及音频、文件传输、串口通信等用户数据流。
(三) L2CAP 、Link Manager 与 Link Manager
如果要对数据流进一步细分,就可以看到下图的数据流。白色表示C-plane,红色表示U-plane。
这就出现了 Link Manager、 Link Controller 与 L2CAP 模块
(1) L2CAP
L2CAP(Logical Link Control and Adaptation Protocol,逻辑链路控制与适配协议) 主要起到适配和复用的作用。
它工作在 Host 层,用于不同高层协议(如 ATT、SDP、RFCOMM)与底层控制器之间的数据传输。
它的主要功能有:
(a) 协议多路复用
L2CAP 支持多个协议共用一个物理连接(Logical Link Multiplexing)
比如:ATT 和 SDP 可以在同一连接上传输数据,L2CAP 负责区分这些数据流。
(b) 数据分片与重组(Segmentation & Reassembly, SAR)
蓝牙底层控制器只能处理较小的数据包(如 27字节 MTU)
L2CAP 允许上层发送大数据(如 512字节),并负责:
- 发送端 将其分片(Segmentation)
- 接收端 将其重组(Reassembly)
(c) 协议适配
将高层协议的数据适配到底层连接类型,比如:
- 基于 ACL(Asynchronous Connection-Less)链路
- LE(低功耗蓝牙)使用的是 LE-U(LE-U Logical Link)
(d) QoS 支持(BR/EDR 模式)
提供服务质量(Quality of Service)参数(在经典蓝牙中用得多)
简而言之:L2CAP 就是蓝牙协议栈中的适配器和路由器,帮你分发数据、组包、拆包,还能控制多个协议通道共享一条蓝牙连接。
(2) Link Manager(LM,链路管理器)
Link Manager 主要负责 蓝牙链路的建立、维护和管理 ,它通过 Link Manager Protocol(LMP) 与远程设备的 Link Manager 进行交互,控制链路的状态和特性。
LM 主要功能及工作原理:
LM 通过 LMP(Link Manager Protocol) 交换控制命令,完成各种蓝牙连接管理任务。
(a)连接建立
- 设备 A(主机)向设备 B(从机)发送 LMP_connection_request 请求。
- 设备 B 确认连接,返回 LMP_accepted ,然后进入Paging(寻呼)过程完成连接。
- 如果设备之前配对过,还需要进行身份认证(Authentication)。
(b)身份认证与加密
- 设备 A 发送 LMP_authentication_request 进行身份验证。
- 使用 E1/E3 密钥生成函数 计算认证密钥。
- 设备 B 返回认证结果(通过或失败)。
- 如果启用了加密,则使用 E0 加密算法 对数据进行加密。
(c)角色切换 蓝牙网络支持主从角色切换:
- 主设备(Master)控制通信时序。
- 从设备(Slave)按照主设备分配的时隙接收/发送数据。
设备可以通过 LMP_switch_request 请求角色交换。
(d)功耗控制LM 提供了 3 种低功耗模式:
- Hold Mode:暂停数据传输,但保持连接。
- Sniff Mode:设备在特定时间间隔内监听数据,减少功耗。
- Park Mode:设备释放活动状态,但仍然保持同步。
(e)SCO/eSCO 链路管理
LM 负责 SCO(同步连接) 的分配,如蓝牙语音通话(HFP)。 使用 LMP_setup_synchronous_connection 配置 SCO 连接参数
(3) Link Manager(LM,链路管理器)
Link Controller(LC)直接与 基带(Baseband) 和 物理层(RF) 交互,负责执行 LM 发送的指令,并处理实际的数据包交换。
LC 主要功能及工作原理:
(a)跳频同步
蓝牙采用 FHSS(跳频扩频) 技术,每 625μs 进行一次跳频,避免干扰。
LC 负责计算频率跳变序列,并确保所有连接设备在相同的频率上进行通信。
(b)数据传输
LC 负责封装数据包,并通过基带层发送到 RF。 支持两种数据链路:
- ACL(异步连接链路):用于数据传输(如文件传输)。
- SCO(同步连接链路):用于语音数据传输(如蓝牙通话)。
(c)数据校验
LC 负责数据包的错误检测与纠正,使用:
- CRC(循环冗余校验):检测数据包是否损坏。
- FEC(前向纠错码):提高数据可靠性。
- ARQ(自动重传请求):如果数据包丢失,则请求重传。
(d)低功耗模式
LC 负责执行 LMP 指令,让设备进入 Sniff、Hold 或 Park Mode,减少能耗.
(4) LM 与 LC 的区别
- LM 负责高级链路管理,如身份验证、配对、角色切换。
- LC 负责低级数据传输,如数据封装、跳频、错误校验。
- LM 通过 LMP 协议 进行控制,而 LC 依赖 基带协议 完成数据交换。
(四) Device Manager 与 GAP

(1) Device Manager (设备管理)
Device Manager 是控制器中的关键控制模块,负责连接控制、配对协助、设备发现等核心操作,是 HCI 与底层链路管理之间的桥梁。
Device Manager 的主要功能(基于 Controller 架构)
(a) 管理设备连接(Connection Management)
- 处理来自 Host 的连接请求(Connect、Disconnect)
- 发起连接或接受连接请求
- 管理多个连接的状态(连接、断开、重新连接)
(b) 执行蓝牙发现与名称获取流程
- 执行 Inquiry(发现)流程,找到周围的蓝牙设备
- 执行 Remote Name Request 获取设备名称
- 把结果通过 HCI 上报给 Host 层(例如 GAP 模块)
(c) 配对和认证触发控制虽然安全管理(SMP)主要在 Host 层,但 Controller 层的 Device Manager 负责:
- 启动配对流程(Pin Code Request、IO Capability Request)
- 管理 Link Key(密钥)缓存、保存与恢复
与 Link Manager 协作完成加密启动、身份验证等过程
(d) Host 层的接口桥梁(HCI)
- 接收 Host 层发来的 HCI 命令(如创建连接、断开连接)
- 将 Controller 中的事件上报给 Host(如连接完成事件、配对完成事件)
(2) GAP(Generic Access Profile 通用访问规范)
GAP(Generic Access Profile) 是蓝牙协议栈中的一种通用访问规范 ,它不属于某一个独立的协议,而是定义了蓝牙设备之间如何互相看到 和连上彼此的通用流程和规则。
GAP 的主要功能有:
(a) 设备角色定义
GAP 定义设备在通信过程中的4种角色:
角色 | 用途说明 |
---|---|
Broadcaster | 主动广播数据,不接受连接(如 iBeacon) |
Observer | 被动监听广播,不发起连接 |
Peripheral | 可被连接设备,广播自身信息 |
Central | 发起连接的设备(如手机、网关) |
常见工作模式是:Peripheral 与 Central ,比如我们手机与蓝牙耳机。
(b) 设备发现(Discovery)
- 扫描周围广播(advertising)设备
- 过滤、解析广播数据(如设备名、UUID、服务)
- 提供扫描结果给上层应用
GAP 负责调用控制器执行 BLE 扫描命令,然后通过 HCI 返回扫描结果。
(c) 广播与扫描(Advertising & Scanning)
GAP 控制以下两个重要过程:广播与扫描
Advertising(广播)
- Peripheral/Broadcaster 发送广播包
- GAP 负责配置广播参数,如:广播间隔、内容、类型
Scanning(扫描)
- Central/Observer 接收广播
- GAP 负责配置扫描行为,如:扫描窗口、间隔、主动扫描、被动扫描、过滤策略
(d) 连接管理(Connection Establishment)
- Central 向 Peripheral 发起连接请求(通过 GAP 接口发出连接命令)
- GAP 维护连接状态(连接中、已连接、断开)
GAP 不执行连接过程本身,而是通过 HCI 让 Controller 中的 Device Manager、Link Manager 去处理。
(e) 配对模式与安全级别设置
- 决定是否允许配对、是否需要加密
- 设置 I/O 能力(无输入、数字键盘、显示器等)
- 选择配对模式(Just Works、Passkey、OOB 等)
- GAP 会协同 Security Manager(SMP)工作来完成配对流程
(f) 本地设备属性管理
GAP 还提供接口设置和读取本地设备信息:
- 本地设备名称(Device Name)
- 外观(Appearance)
- 连接参数(Interval、Latency、Timeout)
- 角色切换、白名单管理等
GAP 是蓝牙通信中的"前台经理",负责发现设备、建立连接、定义角色、管理广播和扫描行为,是最核心的 Host 层模块之一。
(五) BR/EDR 、BLE 双模架构
在上面介绍的蓝牙数据流和蓝牙协议栈模块中,有些属于经典蓝牙模块,有些属于BLE 。
(1) 物理层(PHY)
模块 | BR/EDR Controller | LE Controller |
---|---|---|
PHY 类型 | BR/EDR Radio(79 个 1MHz 信道) | LE Radio(40 个 2MHz 信道) |
调制方式 | GFSK(BR)、π/4-DQPSK(EDR) | GFSK(可选编码,支持远距/低速) |
(2)Link Controller 与 Link Manager
功能区域 | BR/EDR | BLE |
---|---|---|
Link Controller | 处理同步(SCO/eSCO)与异步(ACL)链路 | 处理 LE 连接和广播/扫描链路 |
Link Manager | 支持多种链路管理命令(角色切换、加密等) | 专为低功耗优化,简化链路管理操作 |
(3) 数据通道的区别
通道类型 | BR/EDR 支持 | BLE 支持 |
---|---|---|
ACL | 支持 | 支持 |
SCO / eSCO | 支持(用于音频) | 不支持(用 ISO 替代) |
ISO(ISOC 通道) | 不支持(传统协议) | 支持(BLE Audio/LE Audio) |
(4) BLE 中的ISO/AL 模块
BLE 控制器新增了 ISO/AL(Isochronous Adaptation Layer) ,是 BLE Audio 所必需的:
- 提供面向音频的低延迟、可预测传输
- 支持广播音频(BIS)和连接音频(CIS)
- 是 5.2 BLE Audio 架构中新引入的专用模块
介绍到这里,再回头看最开头提的 Bluetooth core system architecture 就清晰很多了。
结尾
这里主要介绍了蓝牙核心系统架构的各层次结构、数据流、工作原理。下一章将详细介绍蓝牙控制器部分的工作原理。
------------------End------------------ 如需获取更多内容 请关注 liwen01 公众号