1.1 蓝牙技术概述

蓝牙(Bluetooth)是一种短距离无线通信技术标准,工作在 2.4 GHz ISM 频段(2.400–2.4835 GHz),旨在实现设备之间的低成本、低功耗、近距离数据交换。自 1994 年由爱立信公司提出以来,蓝牙技术已从最初的电缆替代方案演变为覆盖音频传输、数据同步、设备组网、定位服务等众多领域的全球性标准。本章作为《Linux内核蓝牙驱动项目实战》的开篇,将系统梳理蓝牙的发展脉络、两大核心架构的差异以及典型应用场景,为后续深入内核驱动开发奠定基础。

学习提示: 蓝牙协议栈在 Linux 内核中主要由 net/bluetooth/ 目录下的代码实现,包括 HCI 层、L2CAP、SCO、RFCOMM 等核心模块。理解蓝牙技术的演进和架构差异,是读懂内核驱动源码的前提。

1.1.1 蓝牙发展历史(1.0 到 5.4)

蓝牙标准由 Bluetooth Special Interest Group(SIG)维护和发布,经历了从 1.0 到 5.4 的多次重大迭代。下表总结了各版本的关键特性与里程碑:

版本 发布时间 核心特性 速率/改进
1.0 / 1.0B 1999 首个公开版本,存在设备互操作性问题 1 Mbps(基本速率)
1.1 2001 IEEE 802.15.1 标准化,修复互操作性问题 1 Mbps
1.2 2003 AFH(自适应跳频)、eSCO(增强型面向连接) 1 Mbps,抗干扰增强
2.0 + EDR 2004 EDR(增强数据速率),支持 DQPSK/8DPSK 调制 3 Mbps
2.1 + EDR 2007 SSP(安全简单配对)、NFC 辅助配对 3 Mbps,安全增强
3.0 + HS 2009 AMP(交替 MAC/PHY),可借用 Wi-Fi 802.11 高速链路 24 Mbps(通过 802.11)
4.0 2010 BLE(低功耗蓝牙) 首次引入,双模架构 1 Mbps(BLE)/ 3 Mbps(BR/EDR)
4.1 2013 L2CAP 面向连接通道增强,支持多角色并发 —
4.2 2014 LE 安全连接(ECC 加密)、LE 数据长度扩展 BLE 速率提升至 1.5 Mbps(实际)
5.0 2016 LE 2M PHY、LE 长距离(Coded PHY)、广播扩展 2 Mbps(LE 2M)/ 约 1 km(长距离)
5.1 2019 AoA/AoD 测向、GATT 缓存、广播信道索引 定位精度厘米级
5.2 2020 LE 音频(LC3 编码)、LE 功率控制、增强版 ATT 低功耗音频流
5.3 2021 连接子速率更新、信道分类增强、加密密钥大小控制 —
5.4 2023 LE 音频广播(Auracast)、LE 安全连接增强、PAwR 广播音频、大规模设备组网
内核视角: Linux 内核从 2.6.x 系列开始集成 BlueZ 协议栈,目前主线内核已完整支持 Bluetooth 5.4 核心规范。驱动开发者需关注 include/net/bluetooth/ 头文件中与版本相关的特性宏,例如 HCI_LE_2M_PHY、HCI_LE_CODED_PHY 等。

蓝牙版本的演进呈现出两条清晰的脉络:

  • 经典蓝牙(BR/EDR):从 1.0 到 3.0,持续提升速率和安全性,主要用于音频流(HSP/HFP/A2DP)和串口仿真(SPP)。
  • 低功耗蓝牙(BLE):从 4.0 开始引入,5.x 系列重点增强速率、距离、广播容量和定位能力,成为 IoT 和音频新场景的核心。
蓝牙版本演进时间线 1.x 1999–2003 2.x 2004–2007 3.0 2009 4.x 2010–2014 5.x 2016–2023 BLE 引入 4.0 开始 经典蓝牙 BR/EDR 主线

1.1.2 经典蓝牙(BR/EDR)与低功耗蓝牙(BLE)的区别

蓝牙 4.0 规范将蓝牙技术划分为两大架构:经典蓝牙(BR/EDR)和低功耗蓝牙(BLE)。两者在物理层、协议栈、功耗模型和应用场景上存在本质差异。下表从多个维度进行对比:

对比维度 经典蓝牙(BR/EDR) 低功耗蓝牙(BLE)
物理层速率 BR: 1 Mbps; EDR: 2/3 Mbps LE 1M: 1 Mbps; LE 2M: 2 Mbps; LE Coded: 125/500 kbps
调制方式 GFSK (BR) / DQPSK, 8DPSK (EDR) GFSK (LE 1M/2M) / 带编码的 GFSK (Coded)
信道数量 79 个信道(1 MHz 间隔) 40 个信道(2 MHz 间隔),含 3 个广播信道
跳频方式 1600 hops/s,79 信道伪随机跳频 自适应跳频,可跳过干扰信道
连接建立时间 约 100 ms(典型) 约 3–6 ms(快速连接)
功耗模型 连续传输,峰值功耗约 30–100 mA 短时突发传输,峰值约 5–15 mA,平均极低
拓扑结构 微微网(Piconet,1 主 7 从) 广播、连接、Mesh 网络
音频支持 原生 SCO/eSCO 语音通道 LE 音频(LC3 编码,5.2+)
典型应用 蓝牙耳机、车载免提、文件传输、鼠标/键盘 可穿戴设备、传感器、信标、医疗设备、音频广播
Linux 内核支持 BlueZ: L2CAP, RFCOMM, SCO, HIDP BlueZ: L2CAP, ATT/GATT, SMP, Mesh
驱动开发注意: 双模蓝牙控制器(同时支持 BR/EDR 和 BLE)在 Linux 内核中通过 HCI_PRIMARY 和 HCI_LE 标志区分。驱动初始化时需正确设置 hdev->dev_type 和 hdev->le_features,否则可能导致 L2CAP 通道注册失败。

从协议栈架构来看,经典蓝牙和 BLE 共享 HCI(Host Controller Interface)层,但上层协议差异显著:

  • 经典蓝牙协议栈:HCI → L2CAP → RFCOMM / SDP / HIDP / AVDTP / AVCTP → 应用层(如 PulseAudio、Bluez 的 obexd)。
  • BLE 协议栈:HCI → L2CAP(固定通道)→ ATT / GATT / SMP → 应用层(如 BlueZ 的 bluetoothd、gatttool)。
经典蓝牙与 BLE 协议栈对比 经典蓝牙 (BR/EDR) 应用层 (A2DP/HFP/SPP) RFCOMM / SDP / HIDP L2CAP (BR/EDR) HCI (UART/USB/SDIO) BR/EDR 控制器 (79 信道) 低功耗蓝牙 (BLE) 应用层 (GATT 服务/特性) ATT / GATT / SMP L2CAP (LE 固定通道) HCI (UART/USB/SDIO) LE 控制器 (40 信道) 共享 HCI

1.1.3 蓝牙应用场景

蓝牙技术凭借其低功耗、低成本、易用性和广泛生态,覆盖了从个人消费电子到工业物联网的众多领域。以下按场景分类列举:

场景类别 典型应用 使用技术 关键需求
音频流 无线耳机、音箱、车载免提 BR/EDR (A2DP, HFP), LE Audio (5.2+) 低延迟、高音质、双耳同步
人机交互设备 鼠标、键盘、游戏手柄 BR/EDR (HIDP), BLE (HID over GATT) 低功耗、快速响应、多设备切换
数据传输 文件传输、串口仿真、打印机 BR/EDR (SPP, FTP, OPP) 可靠连接、中等速率
可穿戴设备 智能手表、手环、心率带 BLE (GATT 服务) 超低功耗、小数据包、长时间待机
信标与定位 室内导航、物品追踪、广告推送 BLE (广播, AoA/AoD 5.1+) 广播覆盖、厘米级定位、低功耗
物联网传感器 温湿度计、门锁、灯控、环境监测 BLE (Mesh, 广播) 大规模组网、低功耗、安全加密
医疗健康 血糖仪、血压计、体温贴 BLE (GATT 医疗健康服务) 数据可靠性、隐私保护、认证
汽车电子 无钥匙进入、胎压监测、车载诊断 BLE (AoA/AoD, 广播) 高安全性、抗干扰、快速连接
音频广播 Auracast(公共场所音频共享) BLE (LE Audio Broadcast, 5.4) 一对多广播、低延迟、多语言支持
内核驱动关注点: 不同应用场景对蓝牙驱动的需求差异很大。例如,音频场景需要稳定的 SCO/eSCO 或 LE Audio ISO 通道;定位场景需要支持 CTE(Constant Tone Extension)的 AoA/AoD 硬件;Mesh 场景则依赖内核的 BLE Mesh 协议栈(net/bluetooth/mesh/)。在编写驱动时,务必根据目标场景配置 HCI 命令和事件过滤器。
蓝牙应用场景生态 蓝牙 BR/EDR + BLE 音频流 耳机/音箱/车载 人机交互 鼠标/键盘/手柄 可穿戴 手表/手环/心率 物联网 传感器/Mesh/灯控 定位与信标 AoA/AoD/室内导航 医疗健康 血糖/血压/体温