【Bluetooth-SIG】【CoreV6.2】【从 Core_v6.2 出发的系统学习计划】

蓝牙 Core Specification 与 Profile 的边界:从 Core_v6.2 出发的系统学习计划

前言

很多刚开始系统阅读 Bluetooth Core Specification 的同学,尤其是做蓝牙协议栈开发的工程师,都会遇到一个疑问:

为什么 Core 文档里有很多 BLE、ATT、GATT、SMP、LE Link Layer 的内容,却没有详细讲 HFP、A2DP、PBAP 这些经典蓝牙常见协议?

这个问题非常关键。因为如果这个边界没搞清楚,后面读文档很容易出现一种错觉:

  • Core 里面 BLE 好像讲得很细;

  • BR/EDR 只讲了 Radio、Baseband、LMP、SDP、L2CAP;

  • 但是实际产品里经典蓝牙最常见的 HFP、A2DP、AVRCP、PBAP 又不在 Core 里;

  • 于是怀疑自己是不是读错文档了。

答案是:没有读错,只是 Core Specification 和 Profile Specification 分工不同。

简单说:

Core Specification 负责蓝牙系统的“地基、管道、道路和交通规则”;
HFP、A2DP、PBAP 这些 Profile 负责“具体业务怎么跑”。

Core 不是所有蓝牙协议的大杂烩,而是蓝牙系统的核心基础规范。HFP、A2DP、PBAP、AVRCP、MAP、HID 等属于独立的 Profile 规范,需要在掌握 Core 的基础上另行学习。

本文围绕这个问题,给出一份适合蓝牙协议栈软件开发工程师的完整学习计划。


一、先搞清楚:Core Specification 到底讲什么?

Bluetooth Core Specification 主要描述蓝牙系统的核心协议栈能力,包括:

  • 无线物理层;

  • 链路层;

  • 连接建立;

  • 设备发现;

  • 链路管理;

  • Host 与 Controller 的接口;

  • L2CAP;

  • SDP;

  • ATT;

  • GATT;

  • SMP;

  • 安全机制;

  • HCI;

  • BR/EDR Controller;

  • LE Controller;

  • 共存机制;

  • 测试模式;

  • 错误码;

  • 版本演进;

  • Core Configuration。

也就是说,Core 更关注这些问题:

问题是否属于 Core
BLE 如何广播、扫描、连接
LE Link Layer PDU 如何定义
BR/EDR 如何 Inquiry / Page / 建 ACL
BR/EDR Baseband 包格式是什么
LMP 如何做 Feature Exchange / Authentication / Encryption
HCI Command / Event / ACL Data 如何定义
L2CAP 如何分片、复用、建 Channel
SDP 如何描述服务
ATT/GATT 如何描述属性、服务和特征值
SMP 如何配对、分发密钥
HFP 的 AT Command 如何交互
A2DP 的 Codec Capability 如何协商
AVRCP 如何控制播放暂停和音量
PBAP 如何通过 OBEX 获取电话本

所以 Core 是蓝牙协议栈的底座,不是所有应用 Profile 的合集。


二、为什么 Core 里没有详细讲 HFP、A2DP、PBAP?

因为 HFP、A2DP、PBAP 属于 Profile Specification,不是 Core Specification 的主体。

它们解决的是具体业务场景:

Profile全称典型用途常见底层依赖
HFPHands-Free Profile蓝牙通话、免提、耳机电话控制BR/EDR、RFCOMM、SCO/eSCO、SDP
A2DPAdvanced Audio Distribution Profile经典蓝牙音乐播放BR/EDR、L2CAP、AVDTP、SDP
AVRCPAudio/Video Remote Control Profile播放控制、音量、歌曲信息BR/EDR、AVCTP、SDP
PBAPPhone Book Access Profile电话本同步BR/EDR、OBEX、SDP
MAPMessage Access Profile短信/消息访问BR/EDR、OBEX、SDP
HIDHuman Interface Device Profile鼠标、键盘、手柄BR/EDR 或 LE、L2CAP/GATT
SPPSerial Port Profile串口透传BR/EDR、RFCOMM、SDP

Core 只提供这些 Profile 运行所需的底层能力。

比如 HFP 要用 RFCOMM 传 AT Command,要用 SCO/eSCO 传语音,要通过 SDP 发现服务。Core 会讲 SDP、L2CAP、HCI、SCO/eSCO、Baseband、LMP,但不会详细讲:

  • AT+BRSF

  • AT+CIND

  • AT+CMER

  • AT+CLIP

  • AT+VGS

  • AT+VGM

  • HFP Audio Connection 状态机

  • Wide Band Speech 的业务协商流程

这些属于 HFP Profile 规范。

再比如 A2DP,Core 会讲 L2CAP 和 BR/EDR ACL 传输,但不会详细讲:

  • SEP Discovery;

  • Codec Capability;

  • SBC 参数协商;

  • AVDTP Signaling;

  • Stream Start / Suspend / Reconfigure;

  • Media Packet 格式。

这些属于 A2DP 和 AVDTP 相关规范。

PBAP 也是类似。Core 会讲 SDP、L2CAP、BR/EDR 链路,但不会详细讲:

  • OBEX Connect;

  • PullPhoneBook;

  • PullvCardListing;

  • vCard 格式;

  • Phonebook path;

  • Repository;

  • PBAP Client / Server 行为。

这些属于 PBAP、OBEX、vCard 相关规范。


三、为什么感觉 BLE 在 Core 里面更详细?

这个感觉是有原因的。

BLE 的主流应用模型是 GATT-based Profile,而 ATT/GATT/SMP/GAP 都属于 Core 规范的一部分。因此你在 Core 里面能看到相对完整的 BLE 应用基础层:

应用 / Profile

GATT

ATT

L2CAP

HCI

LE Link Layer

LE PHY

BLE 常见的数据访问流程,例如:

  • 发现服务;

  • 发现特征值;

  • Read Characteristic;

  • Write Characteristic;

  • Notification;

  • Indication;

  • Pairing;

  • Bonding;

  • Privacy;

  • RPA 地址解析;

很多都可以在 Core 中找到基础定义。

而 BR/EDR 的应用协议体系历史更早、更分散:

Core Specification

L2CAP

SDP

HCI

BR/EDR Baseband / LMP / Radio

SCO / eSCO

HFP Profile

A2DP Profile

AVRCP Profile

PBAP Profile

RFCOMM

AVDTP

AVCTP

OBEX

所以不是 Core 偏心 BLE,而是两套生态结构不一样:

方向Core 中的完整度原因
BLE看起来更完整ATT/GATT/SMP 是 Core 的一部分,BLE 服务发现强依赖 GATT
BR/EDR底层很完整,上层 Profile 分散HFP/A2DP/PBAP/AVRCP 是独立 Profile 规范

一句话总结:

BLE 的“通用应用模型”就在 Core 里;
BR/EDR 的“具体业务协议”大多在独立 Profile 里。


四、Core 与 Profile 的关系

可以用一张图理解:

Bluetooth Core Specification
地基、管道、链路、接口、安全基础

BR/EDR Controller
Radio / Baseband / LMP / Security

LE Controller
PHY / Link Layer / LE Security

Host
L2CAP / SDP / GAP / ATT / GATT / SMP

HCI
Host Controller Interface

HFP
通话

A2DP
音乐

AVRCP
播放控制

PBAP
电话本

Battery Service
BLE 电池服务

Heart Rate Service
BLE 心率服务

Core 是底座,Profile 是业务。

如果把蓝牙协议栈比喻成城市:

城市元素蓝牙对应
地基、道路、红绿灯、交通规则Core Specification
出租车调度规则HFP
音乐运输车规则A2DP
遥控器操作规则AVRCP
电话本快递规则PBAP
门牌编号系统Assigned Numbers
具体小区服务设计GATT Service Specification

五、面向协议栈工程师的总体学习路线

对于蓝牙协议栈软件开发工程师,不能只学 BLE,也不能只学 BR/EDR Profile。比较合理的路线是:

阶段 0
理解 Core 与 Profile 边界

阶段 1
Core 总体架构

阶段 2
Host 公共协议

阶段 3
HCI

阶段 4
BLE Controller

阶段 5
BR/EDR Controller

阶段 6
BR/EDR Profile 依赖协议

阶段 7
HFP / A2DP / AVRCP / PBAP

阶段 8
抓包、调试、互操作、性能优化

完整学习目标不是“看完 Core_v6.2”,而是建立下面这套能力:

能力目标
看懂 Core明白蓝牙底层、Host、Controller、HCI 的分工
看懂 BLE能分析广播、扫描、连接、GATT、SMP、安全、隐私
看懂 BR/EDR能分析 Inquiry、Page、ACL、SCO/eSCO、LMP、安全
看懂 HCI log能从 HCI Command/Event/ACL/SCO/ISO 定位问题
看懂 Profile能分析 HFP/A2DP/AVRCP/PBAP 的业务流程
能调试互操作能判断问题发生在 Core、Profile、平台还是对端设备
能做性能优化能分析吞吐、延迟、功耗、音频卡顿、断连等问题

六、完整学习计划

下面给出一个 24 周学习计划,适合有一定嵌入式、协议栈或蓝牙开发基础的工程师。

如果每天投入 1.5 到 2 小时,基本可以在 6 个月内建立比较完整的蓝牙协议栈知识体系。


第一阶段:理解 Core 与 Profile 的边界

第 1 周:蓝牙规范体系总览

学习目标

搞清楚下面几个问题:

  1. Core Specification 是什么?

  2. Profile Specification 是什么?

  3. Assigned Numbers 是什么?

  4. HFP/A2DP/PBAP 为什么不在 Core 里?

  5. BLE 为什么看起来在 Core 里更完整?

  6. BR/EDR 和 BLE 的协议栈分层有什么不同?

阅读内容

文档阅读重点
Core Vol 0总目录、版本历史、Core Configuration
Core Vol 1 Part AArchitecture、Bluetooth application architecture
Bluetooth Profile 规范目录HFP、A2DP、AVRCP、PBAP、MAP、HID 等
Assigned NumbersUUID、PSM、Company ID、AD Type

输出物

写一张规范关系图:

Bluetooth SIG Specifications

Core Specification

Profile Specifications

Service Specifications

Assigned Numbers

HFP

A2DP

AVRCP

PBAP

Battery Service

Heart Rate Service

Device Information Service

验收标准

能够用一句话说明:

Core 负责蓝牙通用底层和 Host/Controller 基础协议;Profile 负责具体应用场景的互操作规则。


第二阶段:Core 总体架构

第 2 周:Vol 1 Architecture

学习目标

建立蓝牙协议栈全局地图。

阅读内容

章节重点
Vol 1 Part A General descriptionBR/EDR 与 LE 总览
Core system architectureHost / Controller 分层
Transport architecturePhysical channel、Physical link、Logical link
Communication topologyPiconet、LE topology
Security overviewBR/EDR Security 与 LE Security
Bluetooth application architectureGAP、Profile hierarchy、GATT architecture

重点概念

概念理解方式
HostL2CAP、SDP、GAP、ATT、GATT、SMP 等
ControllerRadio、Baseband、LMP、LL、PHY 等
HCIHost 与 Controller 之间的标准接口
BR/EDR经典蓝牙,偏音频和传统 Profile
LE低功耗蓝牙,偏 GATT、低功耗和新特性
GAP所有蓝牙设备都依赖的通用访问框架
Profile应用互操作规则

输出物

Controller

Host

Application / Profile

GAP

SDP

GATT

ATT

SMP

L2CAP

HCI

BR/EDR
Radio / Baseband / LMP

LE
PHY / Link Layer

验收标准

能够解释:

  • ATT/GATT 为什么属于 Host;

  • LMP 为什么属于 BR/EDR Controller;

  • LL 为什么属于 LE Controller;

  • SMP 为什么是 LE Host 侧安全协议;

  • HCI 为什么是协议栈调试的关键观察点。


第三阶段:Host 公共协议

第 3 周:L2CAP

学习目标

掌握 BR/EDR 和 BLE 都绕不开的 Host 传输层。

阅读内容

内容重点
L2CAP ChannelCID、PSM、Fixed Channel、Dynamic Channel
Basic L2CAP Mode基础数据传输
Enhanced Retransmission ModeBR/EDR 场景常见
Streaming Mode流式传输
LE Credit Based Flow ControlBLE 动态通道
Enhanced Credit Based Flow ControlEATT 等新能力
Segmentation and Reassembly分片与重组
Flow Control信用流控和缓冲区管理

重点问题

问题要能回答
L2CAP SDU 和 PDU 有什么区别?SDU 是上层数据单元,PDU 是 L2CAP 实际传输单元
CID 和 PSM 有什么区别?CID 是通道实例,PSM 是协议/服务入口
ATT 为什么走固定 CID?BLE 中 ATT 有固定承载
SDP 为什么依赖 L2CAP?SDP 是 BR/EDR 服务发现协议,需要 L2CAP 承载
A2DP 为什么依赖 L2CAP?AVDTP 信令和媒体流都要用 L2CAP 通道

实践任务

用 Wireshark 或 btmon 分析一段 ACL 数据,拆出:

HCI ACL Data
  └── L2CAP
      └── ATT / SMP / SDP / AVDTP / AVCTP / RFCOMM

第 4 周:SDP 与 GAP

SDP 学习目标

SDP 是理解 BR/EDR Profile 的入口。很多经典蓝牙 Profile 都需要先通过 SDP 查询服务记录。

SDP 重点

说明
Service Record服务记录
ServiceClassIDList服务类型
ProtocolDescriptorList服务使用哪些底层协议
ProfileDescriptorListProfile 版本信息
Attribute IDSDP 属性编号
PSM / RFCOMM Channel后续连接入口

GAP 学习目标

GAP 是所有蓝牙设备的通用访问框架。

GAP 重点

方向BR/EDRBLE
发现InquiryAdvertising / Scanning
连接Page / Page ScanInitiating / Connectable Advertising
名称Remote Name RequestAdvertising Data / GAP Characteristic
安全Pairing / Link KeyPairing / Bonding / LTK / IRK
角色Central / PeripheralCentral / Peripheral

输出物

画出 BR/EDR 典型发现和连接流程:

远端设备本地设备远端设备本地设备InquiryInquiry ResponseRemote Name RequestRemote Name ResponsePage / ACL ConnectionConnection CompleteSDP Service SearchSDP Service Record

第 5 周:ATT / GATT

学习目标

掌握 BLE 应用数据模型,也理解 GATT over BR/EDR 的可能性。

阅读重点

内容重点
ATT OpcodeRequest、Response、Command、Notification、Indication
AttributeHandle、Type、Value、Permission
GATT ServicePrimary Service、Secondary Service
CharacteristicDeclaration、Value、Properties
DescriptorCCCD、User Description 等
GATT ProcedureDiscover、Read、Write、Notify、Indicate
EATT多 ATT bearer、并发事务

重点图

Profile

Service

Characteristic

Characteristic Value

Client Characteristic Configuration Descriptor

Other Descriptor

工程重点

问题工程意义
ATT_MTU 如何影响吞吐OTA、日志传输、传感器数据上报
Notify 和 Indicate 区别是否需要确认
CCCD 作用Client 是否允许 Server 主动上报
Service Changed 作用GATT 数据库变化后的缓存一致性
EATT 价值避免传统 ATT 串行阻塞

第 6 周:SMP 与 LE 安全

学习目标

掌握 LE 配对、绑定、加密、隐私地址。

阅读重点

内容重点
Pairing Request / Response配对能力协商
IO Capability输入输出能力
Association ModelJust Works、Passkey、Numeric Comparison、OOB
LE Legacy PairingSTK
LE Secure ConnectionsECDH
Key DistributionLTK、IRK、CSRK
PrivacyRPA、IRK、Resolving List
Reconnection使用已保存密钥重新加密

流程图

ResponderInitiatorResponderInitiatorECDH 生成共享密钥分发 LTK / IRK / CSRKPairing RequestPairing ResponsePublic KeyPublic KeyConfirm / RandomConfirm / RandomDHKey CheckDHKey Check

验收标准

能够解释:

  • Pairing 和 Bonding 的区别;

  • LTK、IRK、CSRK 各自用途;

  • Just Works 为什么不能防 MITM;

  • Numeric Comparison 为什么可以防 MITM;

  • RPA 为什么可以保护隐私;

  • 重连时如何使用历史密钥加密。


第四阶段:HCI

第 7 周:HCI 基础

学习目标

掌握 Host 与 Controller 交互的标准接口。

重点内容

HCI 数据类型方向用途
HCI CommandHost → Controller控制 Controller
HCI EventController → Host上报状态
HCI ACL Data双向传输 L2CAP 数据
HCI SCO Data双向经典蓝牙语音
HCI ISO Data双向LE Isochronous 数据

必须掌握

内容说明
OGF / OCFHCI Opcode 的组成
Command Complete命令已完成
Command Status命令已接收,后续通过事件完成
Connection Handle连接标识
PB FlagACL 分片标记
Number Of Completed PacketsController buffer 回收
HCI Error Code定位失败原因

HCI 数据路径

ATT PDU

L2CAP PDU

HCI ACL Data

LE LL Data PDU / BR ACL

Air Packet


第 8 周:BR/EDR HCI

重点命令

场景HCI 命令 / 事件
设备发现Inquiry、Inquiry Result
连接建立Create Connection、Connection Complete
断开连接Disconnect、Disconnection Complete
认证Authentication Requested、Authentication Complete
加密Set Connection Encryption、Encryption Change
远端信息Read Remote Supported Features、Remote Name Request
角色切换Switch Role、Role Change
SniffSniff Mode、Exit Sniff Mode
SCO/eSCOSetup Synchronous Connection

典型流程

Remote DeviceControllerHostRemote DeviceControllerHostHCI_InquiryInquiry ResultHCI_Create_ConnectionPageConnection CompleteHCI_Authentication_RequestedAuthentication CompleteHCI_Set_Connection_EncryptionEncryption Change

第 9 周:LE HCI

重点命令

场景HCI 命令 / 事件
广播LE Set Advertising Parameters / Enable
扩展广播LE Set Extended Advertising Parameters / Enable
扫描LE Set Scan Parameters / Enable
建链LE Create Connection
连接完成LE Connection Complete
连接参数更新LE Connection Update
DLELE Set Data Length
PHY 切换LE Set PHY
加密LE Start Encryption / LTK Request
隐私Resolving List 相关命令
ISOCIS / BIS / BIG 相关命令
Channel SoundingCS 相关命令

实践任务

抓一段 BLE 连接 HCI log,按下面路径分析:

HCI_Reset
HCI_LE_Set_Advertising_Parameters
HCI_LE_Set_Advertising_Enable
HCI_LE_Connection_Complete
HCI_LE_Read_Remote_Features
HCI_LE_Data_Length_Change
ATT_Exchange_MTU
GATT_Service_Discovery
SMP_Pairing
Encryption_Change

第五阶段:BLE Controller

第 10 周:LE PHY

学习目标

理解 BLE 空口基础。

重点内容

内容说明
40 个信道3 个广播信道 + 37 个数据信道
1M PHY基础速率
2M PHY高吞吐
Coded PHY远距离
GFSK调制方式
TX/RX 特性发射、接收、灵敏度、干扰
DTMDirect Test Mode

工程问题

问题关注点
为什么 2M PHY 不等于应用层 2 Mbps协议开销、连接事件、ACK、空口间隔
Coded PHY 为什么远但慢编码冗余换抗干扰
广播信道为什么是 37/38/39提高发现概率、避开常见 Wi-Fi 干扰
PHY Update 失败怎么查HCI、LLCP、Feature、对端能力

第 11 周:LE Link Layer 状态机

重点状态

状态作用
Standby空闲
Advertising广播
Scanning扫描
Initiating发起连接
Connection已连接
Synchronization周期广播同步
Isochronous Broadcasting等时广播

状态图

Standby

Advertising

Scanning

Initiating

Connection

学习重点

  • Legacy Advertising;

  • Extended Advertising;

  • Periodic Advertising;

  • Scan Request / Scan Response;

  • Connectable / Scannable / Directed Advertising;

  • Filter Accept List;

  • Resolving List;

  • Advertising Report;

  • Scan Response Data。


第 12 周:BLE Connection

学习目标

掌握 BLE 连接建立和连接事件。

重点参数

参数说明
Access Address连接标识
CRC InitCRC 初始化值
Channel Map数据通道映射
Hop Increment跳频参数
Connection Interval连接间隔
Peripheral Latency从设备延迟
Supervision Timeout监督超时
Window Size / Offset建链接收窗口
Event Counter连接事件计数

工程问题

问题说明
interval 越小越好吗延迟低,但功耗高
latency 越大越好吗省电,但响应慢
supervision timeout 怎么设置太小易误断,太大断链发现慢
channel map 如何影响稳定性避开坏信道
connection event 内能发几个包影响吞吐

第 13 周:LL Control Procedure

重点流程

LL Procedure用途
Feature Exchange特性交换
Version Exchange版本交换
Connection Update连接参数更新
Channel Map Update信道图更新
PHY UpdatePHY 切换
Data Length Update数据长度扩展
Encryption Start启动加密
Termination断开连接
CIS / BIS Control等时通道
Channel Sounding Procedure测距

LLCP 状态机

Idle

ProcedureStarted

WaitingResponse

Completed

Timeout

InstantPending

ErrorHandling

工程坑

说明
Procedure Collision双方同时发起控制流程
Instant Passed生效点错过
Feature 不匹配本地发了对端不支持的过程
LLCP 超时对端不响应或调度异常
加密过程中插入其他流程容易互操作出问题

第 14 周:LE ISO、Channel Sounding、新特性

ISO 重点

概念说明
CISConnected Isochronous Stream
CIGConnected Isochronous Group
BISBroadcast Isochronous Stream
BIGBroadcast Isochronous Group
ISOALIsochronous Adaptation Layer
Framed / Unframed等时数据适配模式

Channel Sounding 重点

概念说明
Channel SoundingBLE 测距能力
Phase-based Ranging基于相位的距离估计
RTT-based Ranging基于往返时间的距离估计
Attack Resilience抗攻击增强
CS HCI CommandsHost 配置测距
CS LL ProcedureController 执行测距过程

学习目标

能够说明:

  • LE Audio 为什么需要 ISO;

  • CIS 和 BIS 区别;

  • Channel Sounding 和 AoA/AoD 区别;

  • v6.x 新特性主要增强了哪些方向。


第六阶段:BR/EDR Controller

第 15 周:BR/EDR Radio

学习目标

理解经典蓝牙物理层。

重点内容

内容说明
Basic Rate基础速率
EDREnhanced Data Rate
GFSKBasic Rate 调制
π/4-DQPSKEDR 调制
8DPSKEDR 调制
79 个信道经典蓝牙跳频
Power Class发射功率等级
RX Sensitivity接收灵敏度

第 16 周:BR/EDR Baseband

学习目标

掌握经典蓝牙链路底层。

重点内容

内容说明
Bluetooth Clock时钟
BD_ADDR蓝牙设备地址
Access Code访问码
Inquiry发现设备
Page建立连接
Piconet微微网
Central / Peripheral主从角色
Time Slot625 μs 时隙
Hop Selection跳频选择
Packet HeaderLT_ADDR、TYPE、FLOW、ARQN、SEQN、HEC
ARQ自动重传
FEC前向纠错
Whitening白化
Sniff / Hold低功耗模式

状态图

Standby

Inquiry

InquiryScan

Page

PageScan

Connection

Sniff

Hold


第 17 周:BR/EDR Packet、ACL、SCO/eSCO

重点包类型

包类型用途
IDInquiry / Page 早期阶段
NULL空包,常用于 ACK
POLL轮询
FHSFrequency Hop Synchronization
DM1/DH1/DH3/DH5ACL 数据
2-DH / 3-DHEDR ACL 数据
HVSCO
EVeSCO

学习目标

能够分析:

  • ACL 数据如何承载 L2CAP;

  • SCO/eSCO 如何承载语音;

  • ARQN/SEQN 如何实现确认和重传;

  • Packet Type 如何影响吞吐;

  • Sniff 模式如何影响延迟和功耗。


第 18 周:LMP

学习目标

理解 BR/EDR 的链路管理协议。

重点流程

LMP 流程用途
Feature Exchange能力交换
Version Exchange版本交换
Name Request名称请求
Authentication鉴权
Pairing配对
Encryption加密
Role Switch角色切换
Sniff Mode低功耗
Hold Mode低功耗
Power Control功率控制
AFH自适应跳频
QoS服务质量
SCO/eSCO Setup语音链路

LMP 与 LLCP 对比

BR/EDRBLE
控制协议LMPLL Control Procedure
能力交换LMP_features_req/resLL_FEATURE_REQ/RSP
版本交换LMP_version_req/resLL_VERSION_IND
加密控制LMP SecurityLL Encryption
PHY/速率控制Packet Type / EDRPHY Update
低功耗Sniff / HoldConnection Parameter / Subrate

第 19 周:BR/EDR Security

学习目标

掌握经典蓝牙配对、鉴权、加密。

重点内容

内容说明
Link KeyBR/EDR 长期密钥
Authentication挑战应答
Legacy Pairing旧配对
Secure Simple PairingSSP
Numeric Comparison数字比较
Passkey Entry密码输入
Out of Band外部通道
Just Works简单配对
E0 Encryption经典加密
AES-CCM for BR/EDR新式加密
Encryption Key Size密钥长度协商

与 LE Security 对比

BR/EDRLE
长期密钥Link KeyLTK
隐私密钥无 LE RPA 模型IRK
签名密钥非核心常用模型CSRK
控制位置LMP / ControllerSMP / Host + LL / Controller
配对方式SSPLE Legacy / LE Secure Connections

第七阶段:BR/EDR Profile 依赖协议

第 20 周:RFCOMM、OBEX、AVDTP、AVCTP

Core 学完后,要补上经典蓝牙 Profile 常用的中间协议。

RFCOMM

用途典型 Profile
模拟串口HFP、SPP、部分 PBAP/MAP

学习重点:

  • DLCI;

  • SABM / UA;

  • MSC;

  • Flow Control;

  • RFCOMM Channel;

  • SDP 中的 RFCOMM Server Channel。

OBEX

用途典型 Profile
对象交换PBAP、MAP、OPP

学习重点:

  • OBEX Connect;

  • OBEX Get;

  • OBEX Put;

  • Header;

  • Body / End Of Body;

  • Authentication;

  • Session。

AVDTP

用途典型 Profile
音频流分发控制A2DP

学习重点:

  • SEP Discovery;

  • Get Capabilities;

  • Set Configuration;

  • Open;

  • Start;

  • Suspend;

  • Close;

  • Abort;

  • Media Transport Channel。

AVCTP

用途典型 Profile
音视频远程控制AVRCP

学习重点:

  • Command / Response;

  • Transaction Label;

  • Pass Through;

  • Vendor Dependent;

  • Browsing Channel。


第八阶段:具体 Profile 学习

第 21 周:HFP

学习目标

掌握经典蓝牙通话控制。

学习路径

SDP 发现 HFP 服务

RFCOMM 控制通道

AT Command

SCO/eSCO 音频链路

通话状态机

重点内容

内容说明
HF / AGHands-Free / Audio Gateway
SDP Record服务发现
RFCOMM Channel控制通道
AT+BRSF功能交换
AT+CIND指示器
AT+CMER开启状态上报
AT+CLIP来电号码
AT+VGS / AT+VGM音量
SCO/eSCO语音承载
CVSD / mSBC窄带/宽带语音

抓包重点

  • HCI ACL 中的 RFCOMM;

  • RFCOMM 中的 AT Command;

  • HCI Synchronous Connection Complete;

  • SCO/eSCO 数据;

  • 音频连接建立失败原因。


第 22 周:A2DP + AVRCP

A2DP 学习目标

掌握经典蓝牙音乐播放。

A2DP 路径

SDP

L2CAP

AVDTP

Codec Capability

Media Streaming

A2DP 重点

内容说明
Source / Sink音频源 / 音频接收端
SEPStream Endpoint
Discover发现 SEP
Get Capabilities获取 Codec 能力
Set Configuration配置 Codec
Open / Start打开并启动流
Suspend / Close暂停和关闭
SBC必选 Codec
AAC / aptX / LDAC可选或厂商 Codec

AVRCP 重点

内容说明
Controller / Target控制端 / 被控端
Pass Through播放、暂停、下一曲
Absolute Volume绝对音量
Metadata歌曲信息
Browsing媒体浏览

第 23 周:PBAP + MAP

PBAP 学习目标

掌握电话本同步流程。

PBAP 路径

SDP

RFCOMM 或 L2CAP

OBEX

vCard

PBAP

PBAP 重点

内容说明
PCE / PSEClient / Server
OBEX Connect建立 OBEX 会话
SetPath切换电话本路径
PullPhoneBook拉取电话本
PullvCardListing拉取 vCard 列表
PullvCardEntry拉取单个联系人
vCard联系人数据格式
Repository本机、SIM、收藏夹等

MAP 重点

内容说明
MCE / MSEMessage Client / Server
Message Listing消息列表
Message Get获取消息
Notification消息通知
OBEX对象传输基础

第九阶段:双模融合与互操作

第 24 周:综合实战

实战 1:BLE GATT 连接完整流程

要求能从 HCI log 中分析:

Advertising
Scanning
Connection Complete
Feature Exchange
Data Length Update
PHY Update
Exchange MTU
Service Discovery
Characteristic Discovery
CCCD Write
Notification
Pairing
Encryption
Disconnection

实战 2:BR/EDR HFP 通话完整流程

要求能分析:

Inquiry
Page
ACL Connection
SDP Search
RFCOMM Connection
AT+BRSF
AT+CIND
AT+CMER
SCO/eSCO Setup
Audio Connected
Call Active
Audio Disconnected
RFCOMM Disconnect
ACL Disconnect

实战 3:A2DP 播放完整流程

要求能分析:

ACL Connection
SDP Search
L2CAP AVDTP Signaling Channel
AVDTP Discover
Get Capabilities
Set Configuration
Open
Start
Media Streaming
Suspend
Close

实战 4:PBAP 电话本同步完整流程

要求能分析:

ACL Connection
SDP Search
RFCOMM / L2CAP Channel
OBEX Connect
SetPath
PullPhoneBook
PullvCardListing
PullvCardEntry
OBEX Disconnect

七、不同方向的学习优先级

1. 做 BLE 协议栈

优先级:

  1. Vol 1 Architecture;

  2. Vol 3 L2CAP;

  3. Vol 3 ATT;

  4. Vol 3 GATT;

  5. Vol 3 SMP;

  6. Vol 4 HCI;

  7. Vol 6 LE PHY;

  8. Vol 6 LE Link Layer;

  9. Vol 6 LE Security;

  10. LE ISO / Channel Sounding / Privacy。

2. 做 BR/EDR Controller

优先级:

  1. Vol 1 Architecture;

  2. Vol 2 Radio;

  3. Vol 2 Baseband;

  4. Vol 2 LMP;

  5. Vol 2 Security;

  6. Vol 4 HCI;

  7. Vol 2 MSC;

  8. Vol 2 Sample Data;

  9. SCO/eSCO;

  10. AFH / Sniff / Role Switch。

3. 做 BR/EDR Profile

优先级:

  1. Vol 1 Architecture;

  2. Vol 3 L2CAP;

  3. Vol 3 SDP;

  4. Vol 4 HCI;

  5. BR/EDR ACL/SCO/eSCO;

  6. RFCOMM;

  7. OBEX;

  8. AVDTP;

  9. AVCTP;

  10. HFP/A2DP/AVRCP/PBAP/MAP。

4. 做双模协议栈

优先级:

  1. Core 架构;

  2. HCI;

  3. L2CAP;

  4. SDP/GAP;

  5. BLE ATT/GATT/SMP;

  6. BLE LL;

  7. BR/EDR Baseband/LMP;

  8. BR/EDR Security;

  9. HFP/A2DP/AVRCP/PBAP;

  10. CTKD、Privacy、Coexistence。


八、每周学习模板

建议每周固定产出下面这些内容。

# 本周主题

## 1. 阅读章节

- 文档:
- Volume:
- Part:
- Section:

## 2. 核心概念

| 概念 | 解释 | 工程意义 |
|---|---|---|
| | | |

## 3. 协议流程图

```mermaid
sequenceDiagram
    participant A
    participant B
    A->>B: Message
```
`


## 4. 关键字段

|字段|长度|含义|注意事项|
|---|--:|---|---|
|||||

## 5. HCI / 空口抓包对应

|抓包项|说明|
|---|---|
|HCI Command||
|HCI Event||
|ACL Data||
|L2CAP||
|Upper Protocol||

## 6. 常见错误

|错误|可能原因|定位方法|
|---|---|---|
||||

## 7. 本周遗留问题

-  问题 1
    
-  问题 2
    


九、调试视角:如何判断问题属于 Core 还是 Profile?

这是协议栈工程师必须掌握的能力。

现象可能层级
BLE 扫不到设备LE Advertising / Scanning / Filter / Privacy
BLE 连不上LE Initiating / Connection Parameters / Address Type
BLE GATT 读写失败ATT/GATT/L2CAP/Security
BLE 配对失败SMP / IO Capability / Key Size / AuthReq
BR/EDR 搜不到设备Inquiry / Inquiry Scan / Class of Device
BR/EDR 连不上Page / Page Scan / ACL / Authentication
HFP AT 命令异常HFP Profile / RFCOMM
HFP 没声音SCO/eSCO / Codec / Audio Path
A2DP 播放失败AVDTP / Codec / L2CAP / ACL
AVRCP 音量不同步AVRCP / Absolute Volume
PBAP 拉不到联系人PBAP / OBEX / 权限 / 电话本路径
音频卡顿Coexistence / Buffer / Retransmission / Scheduling
随机断链Supervision Timeout / RSSI / MIC Failure / Remote Terminate

十、最终学习目标

完成这套学习后,应该具备下面能力:

能力验收标准
读懂 Core能说明每个 Volume 负责什么
读懂 HCI log能从 Reset 到 Disconnection 复盘流程
分析 BLE能看懂 Advertising、Connection、GATT、SMP
分析 BR/EDR能看懂 Inquiry、Page、ACL、LMP、安全
分析 HFP能看懂 RFCOMM 和 AT Command
分析 A2DP能看懂 AVDTP 和 Media Streaming
分析 AVRCP能看懂播放控制和音量控制
分析 PBAP能看懂 OBEX 和 vCard 拉取
定位问题能判断问题属于 Controller、Host、Profile、App 还是对端
做性能优化能分析吞吐、功耗、延迟、音频稳定性

十一、总结

Core_v6.2 不是 HFP、A2DP、PBAP 的详细说明书。

它主要讲的是:

蓝牙系统如何发现设备、建立连接、管理链路、承载数据、进行加密、暴露 Host/Controller 接口,以及如何保证 BR/EDR 和 LE 设备的基础互操作。

HFP、A2DP、AVRCP、PBAP 这些属于 Core 之上的应用 Profile。它们依赖 Core 提供的能力,但具体业务状态机和数据格式不放在 Core 中。

所以正确学习路线应该是:

先学 Core
地基和通用协议

重点掌握 HCI
调试入口

学习 BLE
ATT/GATT/SMP/LL

学习 BR/EDR
Baseband/LMP/SCO/eSCO

学习 Profile
HFP/A2DP/AVRCP/PBAP

结合抓包和问题定位

用一句比较接地气的话总结:

Core 是蓝牙的“操作系统内核 + 交通规则”;
HFP/A2DP/PBAP 是跑在上面的“具体 App”。
只学 Core,看业务会懵;只学 Profile,底层出问题也会懵。
真正的协议栈工程师,两边都要会,抓包还得看得比老板脸色还准。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值