文章目录
- [经典蓝牙(Bluetooth Classic / BR/EDR)学习计划](#经典蓝牙(Bluetooth Classic / BR/EDR)学习计划)
-
- 第一阶段:基础认知
-
- [1.1 蓝牙技术概览](#1.1 蓝牙技术概览)
- [1.2 射频与物理层基础](#1.2 射频与物理层基础)
- 第二阶段:协议栈深入
-
- [2.1 核心协议层(Core Protocol Stack)](#2.1 核心协议层(Core Protocol Stack))
- [2.2 关键流程深度剖析](#2.2 关键流程深度剖析)
- [2.3 音频传输体系](#2.3 音频传输体系)
- 第三阶段:配置文件(Profiles)体系
-
- [3.1 串口与数据类Profile](#3.1 串口与数据类Profile)
- [3.2 网络类Profile](#3.2 网络类Profile)
- [3.3 音视频与遥控类Profile](#3.3 音视频与遥控类Profile)
- [3.4 其他重要Profile](#3.4 其他重要Profile)
- 第四阶段:安全机制
-
- [4.1 配对演进史](#4.1 配对演进史)
- [4.2 加密与认证](#4.2 加密与认证)
- 第五阶段:开发实战
-
- [5.1 开发环境搭建](#5.1 开发环境搭建)
- [5.2 实战项目建议](#5.2 实战项目建议)
- [5.3 调试与问题定位](#5.3 调试与问题定位)
- 第六阶段:进阶与前沿
-
- [6.1 双模与互操作](#6.1 双模与互操作)
- [6.2 规范精读](#6.2 规范精读)
- [6.3 认证与合规](#6.3 认证与合规)
- 推荐学习资源
- 学习建议
经典蓝牙(Bluetooth Classic / BR/EDR)学习计划
博主为自己设定了一份经典蓝牙学习计划,希望快速学习完成,对经典蓝牙有更深度的认知。
第一阶段:基础认知
1.1 蓝牙技术概览
- 蓝牙技术联盟(Bluetooth SIG)组织架构与规范体系
- BR/EDR vs BLE 的核心区别:应用场景、功耗模型、协议栈差异
- 经典蓝牙的版本演进:v1.0 → v2.0+EDR → v3.0+HS → v4.x → v5.x(经典模式部分)
- 2.4GHz ISM频段、79个信道、跳频扩频(FHSS)原理
- 微微网(Piconet)与散射网(Scatternet)拓扑结构
1.2 射频与物理层基础
- GFSK调制(BR, 1Mbps)与 π/4-DQPSK / 8DPSK调制(EDR, 2/3Mbps)
- 发射功率等级(Class 1/2/3)与链路预算
- 时隙结构(Slot)、TDD双工机制
- 跳频序列与自适应跳频(AFH)抗干扰机制
第二阶段:协议栈深入
2.1 核心协议层(Core Protocol Stack)
| 层级 | 协议 | 学习重点 |
|---|---|---|
| 物理层 | Baseband | 设备地址(BD_ADDR)、时钟同步、查询(Inquiry)/寻呼(Page)流程、链路类型(SCO/eSCO/ACL) |
| 链路层 | LMP | 链路建立、认证、加密协商、时钟偏移、功率控制、QoS |
| 适配层 | L2CAP | 逻辑信道、PSM、MTU、分段重组、流控模式(Basic/ERTM/Streaming) |
| 模拟层 | RFCOMM | 串口仿真、DLCI、多路复用、与TS 07.10的关系 |
2.2 关键流程深度剖析
- 设备发现流程:Inquiry → Inquiry Scan → FHS包交换 → 时钟同步
- 连接建立流程:Page → Page Scan → 跳频同步 → 链路建立
- 配对与绑定:Legacy Pairing → SSP(Secure Simple Pairing)→ Secure Connections
- 服务发现:SDP(Service Discovery Protocol)记录结构、UUID、属性搜索
2.3 音频传输体系
- SCO/eSCO链路:同步面向连接,面向语音传输
- A2DP(Advanced Audio Distribution Profile):SBC、AAC、aptX编解码,SEP、SEP Capabilities
- HFP/HSP(Hands-Free/Headset Profile):AT命令集、AG/HF角色、音频路由
- AVRCP(Audio/Video Remote Control Profile):媒体控制命令集
第三阶段:配置文件(Profiles)体系
3.1 串口与数据类Profile
- SPP(Serial Port Profile):RFCOMM之上的虚拟串口,AT命令交互
- DUN(Dial-Up Networking):拨号上网(历史了解)
- OPP(Object Push Profile):文件推送,OBEX协议基础
- FTP(File Transfer Profile):基于OBEX的文件传输
3.2 网络类Profile
- PAN(Personal Area Networking):BNEP协议、NAP/GN/ PANU角色
- DUN/ LAP(了解其历史地位)
3.3 音视频与遥控类Profile
- A2DP Source/Sink 角色差异与实现要点
- AVRCP Target/Controller 命令映射
- HFP AG(Audio Gateway)与 HF(Hands-Free) 状态机
3.4 其他重要Profile
- HID(Human Interface Device):报告描述符、中断传输
- PBAP(Phone Book Access Profile):vCard格式、电话簿拉取
- MAP(Message Access Profile):消息通知与访问
第四阶段:安全机制
4.1 配对演进史
- Legacy Pairing(PIN码):安全性缺陷
- SSP(Secure Simple Pairing, v2.1+) :
- Numeric Comparison
- Passkey Entry
- Just Works
- OOB(Out of Band)
- Secure Connections(v4.1+):基于ECDH的P-256曲线、FIPS合规
4.2 加密与认证
- E0/ SAFER+ (Legacy)→ AES-CCM(Secure Connections)
- 链路密钥(Link Key)类型:Combination Key、Unit Key、Master Key
- 认证流程:Challenge-Response机制
- 加密模式:Point-to-Point vs Broadcast
第五阶段:开发实战
5.1 开发环境搭建
目前博主只计划使用安卓、Windows。
- BlueZ(Linux):DBus API、hciattach/hciconfig/bluetoothctl、SDP工具
- Windows Bluetooth API:BluetoothSockets、Winsock2扩展
- Android Bluetooth API:BluetoothAdapter、BluetoothSocket、BluetoothProfile代理
- 嵌入式平台:CSR/Qualcomm、TI、Nordic(经典蓝牙部分)、Realtek SDK
5.2 实战项目建议
| 难度 | 项目 | 技能点 |
|---|---|---|
| 入门 | SPP串口透传工具 | RFCOMM、UUID、Socket编程 |
| 中级 | A2DP Sink实现(Linux/嵌入式) | 音频编解码、L2CAP配置、ALSA集成 |
| 中级 | 自定义Profile开发 | SDP注册、L2CAP PSM、状态机设计 |
| 进阶 | 蓝牙协议分析仪使用 | Ellisys/Frontline抓包、Air Log分析、问题定位 |
5.3 调试与问题定位
- HCI日志分析:btmon、hcidump、Windows BTETW
- 常见故障排查:配对失败、连接断开、音频卡顿、SCO链路异常
- 射频指标:灵敏度、发射功率、频偏、调制指数测试
第六阶段:进阶与前沿
6.1 双模与互操作
- 双模芯片(BR/EDR + BLE)的共存机制
- AMP(Alternate MAC/PHY, v3.0+HS):802.11高速传输原理
- BR/EDR与BLE的桥接应用
6.2 规范精读
- 直接阅读 Bluetooth Core Specification(重点关注 Vol 2 / Vol 3 / Vol 4)
- 关注 SIG 发布的 Errata 与 Test Specifications
6.3 认证与合规
- BQB(Bluetooth Qualification Body) 认证流程
- RF/Protocol/Profile 测试用例(RF.TS、LMP.TS、L2CAP.TS等)
- PTS(Profile Tuning Suite)工具使用
推荐学习资源
前面的学习的差不多了,到这里检点经验包。
| 类型 | 资源 |
|---|---|
| 官方规范 | Bluetooth Core Specification v5.4(SIG官网免费下载) |
| 书籍 | 《Bluetooth Revealed》(Brent Miller)、《Bluetooth Low Energy and Classic Bluetooth》对比章节 |
| 开源项目 | BlueZ(Linux官方协议栈)、btstack(嵌入式) |
| 工具 | Wireshark + 蓝牙Dongle(HCI抓包)、Ellisys/Frontline(专业空口分析) |
| 社区 | Bluetooth SIG Member Site、Stack Overflow bluetooth-classic标签 |
学习建议
- 先抓包,后看代码:用Wireshark抓一个A2DP音乐播放或SPP数据传输的流程,对照规范逐层解析,比直接啃文档效率高10倍。
- 重视链路层:Inquiry/Page/配对流程是面试和排障的高频考点,务必做到能徒手画出状态转换图。
- Profile是应用入口:实际工作中90%的问题出在Profile层,而非Baseband。
- 准备一套硬件:一个USB蓝牙Dongle(支持HCI模式)+ 一台Linux虚拟机,足以完成80%的学习实验。