一、连接前准备阶段

1. 设备发现(Inquiry)

主设备(Master)需要发现周围的蓝牙设备:

步骤操作说明
1发送Inquiry消息在79个RF信道(f=2402+k MHz, k=0-78)上发送ID包
2接收Inquiry Response从设备响应FHS包(包含设备地址、时钟、设备类型等)
3收集设备信息主设备记录所有响应设备的BD_ADDR和时钟偏移

2. 寻呼(Paging)- 建立物理连接

选择目标设备后,主设备发起寻呼:

步骤操作说明
1计算跳频序列基于目标BD_ADDR生成32个唤醒频率
2发送PAGE消息在16个唤醒频率上发送ID包(包含从设备地址)
3接收PAGE RESPONSE从设备响应其地址和时钟信息
4交换FHS包主设备发送FHS包(含主设备时钟和BD_ADDR)
5切换到主设备时钟从设备调整自身时钟与主设备同步

二、连接建立后的流程

3. 链路管理(LMP - Link Manager Protocol)

图1:LMP链路管理时序图说明

此图展示了蓝牙连接建立过程中链路管理层(LMP)的完整交互流程,分为五个关键阶段:

  1. 物理层连接建立(步骤1-4):主设备通过PAGE消息发起寻呼,从设备响应PAGE RESPONSE完成初步握手,随后主设备发送FHS(Frequency Hop Synchronization)包提供跳频同步信息,这是建立物理ACL链路的基础。

  2. LMP链路配置(步骤5-8):主设备发送LMP_host_connection_req请求建立主机连接,从设备返回LMP_accepted确认后,双方交换LMP_setup_complete完成链路参数协商,包括确定支持的包类型、时隙长度等。

  3. 认证与配对(步骤9-12):如果启用了安全认证,主设备发送随机数LMP_in_rand,从设备使用Link Key计算并返回签名响应LMP_sres,主设备验证后回传自己的LMP_sres,完成双向认证。

  4. L2CAP信道建立(步骤13-15):主机通过HCI接口下发创建连接命令,L2CAP层发送连接请求(携带PSM协议/服务复用标识符),从设备分配信道标识符(CID)并响应,建立逻辑链路。

  5. SDP服务发现(步骤16-19):在L2CAP信道建立后,主设备通过SDP协议查询从设备支持的服务UUID和属性,获取服务记录句柄和协议参数,为上层应用(如RFCOMM)连接做准备。

三、完整连接流程图

 

图2:经典蓝牙完整连接流程图说明

此流程图呈现了从用户发起连接到数据传输的完整决策路径,包含以下关键分支:

  • 配对状态判断(节点B):系统首先检查设备是否已配对。已配对设备可直接读取存储的Link Key和时钟偏移,跳过Inquiry阶段加速连接;未配对设备需执行完整的设备发现流程。

  • 设备发现路径(C→E→F):主设备执行Inquiry扫描周围设备,收集BD_ADDR、设备类型、时钟偏移等信息,生成可连接设备列表供用户选择。这是蓝牙连接中最耗时的阶段(标准周期10.24秒)。

  • 寻呼与物理连接(G→H→J):基于目标BD_ADDR计算寻呼跳频序列(32个频率),主设备在16个唤醒频率上发送PAGE。若从设备未响应或超时,连接失败;成功则建立ACL(Asynchronous Connection-Less)物理链路。

  • 安全配置分支(L→M→N→O):根据安全策略决定是否执行认证。需要认证时,若不存在Link Key则进入配对流程生成密钥,随后执行Challenge-Response认证;无需认证则直接配置加密参数(如启用AES加密)。

  • 上层协议栈建立(P→Q→R→S→T):L2CAP建立后,根据应用需求选择是否执行SDP服务发现(查询RFCOMM通道号、协议版本等),最后建立RFCOMM虚拟串口或特定Profile连接(如A2DP音频传输、HFP免提通话)。

四、协议栈分层交互

 

 

图3:蓝牙协议栈分层架构图说明

此图展示了经典蓝牙协议的五层架构模型,各层职责和交互关系如下:

  • 应用层(Profiles):位于最顶层,定义特定应用场景的协议规范。SPP(串口协议)模拟RS-232串口通信;A2DP(高级音频分发)用于立体声音频传输;HFP(免提协议)支持车载蓝牙通话;AVRCP(音视频远程控制)实现媒体播放控制。这些Profile依赖下层协议提供服务。

  • 中间层(Middleware):包含三个关键组件。RFCOMM提供串口仿真,基于L2CAP实现多路复用;SDP允许设备查询对端支持的服务和属性;TCS(Telephony Control Protocol Specification)处理蓝牙电话控制信令。这三者都通过L2CAP承载数据。

  • 核心协议层(L2CAP):逻辑链路控制与适配协议是蓝牙核心协议,向上层提供面向连接和无连接的数据服务。负责协议复用、分段重组、QoS管理和组抽象。所有上层数据(RFCOMM、SDP、TCS)都封装在L2CAP数据包中传输。

  • 主机控制器接口(HCI):定义主机(Host,运行协议栈的CPU)与控制器(Controller,蓝牙芯片)之间的标准接口。通过UART/USB/SDIO传输HCI命令、事件和数据包。HCI将上层的L2CAP数据转换为基带可处理的格式,并反向传递事件通知。

  • 控制器层(Controller):包含射频(RF)、基带(Baseband)和链路管理(LMP)。RF层处理2.4GHz ISM频段的GFSK调制解调;基带管理跳频(1600次/秒)、时分双工(TDD)和纠错编码;LMP负责链路建立、认证、加密和功耗管理。LMP与基带紧密协作,直接控制射频硬件。

五、关键时序详解

 

图4:蓝牙连接关键时序详解图说明

此序列图详细展示了从主机命令下发到物理层执行的完整调用链,分为五个执行阶段:

  • 阶段1:物理连接建立(步骤1-15):主机通过HCI_Inquiry命令启动设备发现,HCI将命令传递给基带,基带控制射频层在32个查询跳频序列上循环发送ID包(持续10.24秒)。收到响应后,结果逐层上报至主机。主机随后下发HCI_Create_Connection,基带计算寻呼跳频序列(基于目标BD_ADDR),射频层在特定频率上发送PAGE,收到PAGE RESPONSE后完成时钟同步,通过Connection Complete Event通知主机连接成功。

  • 阶段2:LMP配置(阶段2标注):链路管理器层自动执行,无需主机干预。交换LMP_features_req/res获取双方支持的特性(如是否支持EDR、扩展查询响应等),协商链路参数包括使用的包类型(DH1/DM3等)、时隙偏移、监听模式等,确保双方物理层参数一致。

  • 阶段3:安全认证(阶段3标注):分为两种情况。若已存在Link Key(配对历史),直接执行LMP_au_rand挑战-响应认证,双方交换随机数和签名响应验证密钥有效性。若需配对,LMP向主机查询IO能力(键盘/显示器/无IO),根据IO能力选择简单配对(Secure Simple Pairing)或传统配对流程,生成16字节Link Key并存储。

  • 阶段4:L2CAP配置(阶段4标注):主机通过HCI发送ACL数据包(承载L2CAP信令),基带将数据调制到射频信道。L2CAP在此阶段完成信道配置,包括MTU(最大传输单元)协商、流控模式选择(Basic/Retransmission/Flow Control/Enhanced Retransmission)。

  • 阶段5:上层连接(阶段5标注):主机发起SDP查询获取服务信息,建立RFCOMM会话(模拟串口),最后根据具体应用(如SPP、A2DP)完成Profile级别的握手,进入数据通信状态。

六、状态转换图

 

图5:蓝牙基带状态机转换图说明

此状态图描述了蓝牙控制器在连接生命周期中的所有可能状态及转换条件,反映了基带协议的状态管理逻辑:

  • 初始状态(STANDBY):设备上电或复位后的默认状态,射频关闭,功耗最低。可接受命令进入查询(作为主机发现设备)或寻呼(作为主机发起连接)状态,也可进入PAGE_SCAN(作为从设备监听连接请求)。

  • 发现状态(INQUIRY/INQUIRY_RESPONSE):INQUIRY状态下设备在32个查询频率上发送ID包搜索周围设备;INQUIRY_RESPONSE状态是从设备响应查询的模式,发送FHS包提供自身信息。查询完成后返回STANDBY。

  • 寻呼状态(PAGE/PAGE_SCAN):PAGE状态下主设备在16个寻呼频率上发送PAGE尝试连接特定设备;PAGE_SCAN是从设备的监听模式,周期性扫描寻呼频率。收到PAGE后进入SLAVE_RESPONSE,主设备收到响应后进入MASTER_RESPONSE。

  • 连接建立(CONNECTION):主设备在MASTER_RESPONSE发送FHS包,从设备在SLAVE_RESPONSE接收FHS并同步时钟,双方均进入CONNECTION状态,表示物理ACL链路已建立但尚未激活。

  • 激活与低功耗状态(ACTIVE/PARK/SNIFF/HOLD):CONNECTION可进入ACTIVE进行正常数据传输,或进入三种低功耗模式。SNIFF模式减少监听时隙数(周期性休眠);HOLD模式暂停ACL传输保留同步链路;PARK模式深度休眠仅保持同步(需Beacon信道唤醒)。所有低功耗模式均可恢复到ACTIVE。

  • 终止状态(DISCONNECTED):ACTIVE或CONNECTION状态在链路监督超时、主动断开或信号丢失时进入DISCONNECTED,随后可返回STANDBY或关机([*])。

七、安全配对流程(Simple Secure Pairing)

图6:简单安全配对(SSP)流程图说明

此图展示了蓝牙2.1+EDR引入的Secure Simple Pairing(SSP)协议的完整配对流程,相比传统配对大幅提升了安全性和易用性,分为五个阶段:

  • Phase 1:公钥交换(步骤1-2):设备A(发起者)和设备B(响应者)交换椭圆曲线(P-192或P-256)公钥。这是Diffie-Hellman密钥交换的基础,确保后续生成的密钥具有前向安全性(即使长期私钥泄露,历史会话也不受影响)。

  • Phase 2:认证阶段1(步骤3-分支):根据双方IO能力(Display/Keyboard/None)选择三种认证方法之一:

    • Numeric Comparison(数字比较):双方均有显示器,计算并交换Commitment值(哈希承诺),然后交换Nonce(随机数)验证承诺,最后各自计算并显示6位数字,用户确认两设备显示数字一致即可防止MITM攻击。

    • Passkey Entry(密码输入):一方显示6位密码,另一方输入,或双方各输入一半。通过20次循环(每次1位)逐位验证,每次交换Commitment和Nonce确保密码正确性。

    • Just Works(直接工作):至少一方无IO能力,直接接受连接但不提供MITM保护,仅防止被动窃听。

  • Phase 3:认证阶段2(步骤4-5):双方使用交换的公钥和私有数据计算DHKey(Diffie-Hellman共享密钥),然后交换DHKey Check值(Ea/Eb)验证计算结果一致性,确认没有中间人篡改公钥。

  • Phase 4:链路密钥计算(步骤6):基于DHKey和其他参数(如BD_ADDR)派生出Link Key(传统蓝牙)或LTK(Low Energy),此密钥将用于后续所有连接的认证和加密。

  • Phase 5:加密启用(步骤7):配对完成后,设备立即启用链路层加密(使用E0或AES-CCM算法),后续所有数据传输均加密,配对流程结束。

八、常见问题与调试要点

 

图7:蓝牙连接故障排查流程图说明

此流程图提供了蓝牙连接失败时的系统化诊断方法,按协议层定位问题根源:

  • Inquiry阶段故障(分支C):如果设备发现阶段失败,首先检查目标设备是否处于可发现模式(Discoverable Mode),部分设备默认隐藏。其次检查2.4GHz频段干扰(Wi-Fi、微波炉、ZigBee),蓝牙Inquiry在79个信道上扫描,强干扰会导致无法收到Inquiry Response。可通过延长Inquiry时间或增加Inquiry扫描窗口缓解。

  • Paging阶段故障(分支D):寻呼失败最常见原因是BD_ADDR错误(地址解析失败)或设备超出范围(蓝牙Class 2有效距离10米)。时钟偏移过大也会导致寻呼失败,因为主设备基于目标时钟估算进行跳频,如果从设备时钟漂移严重,主设备无法在正确频率上找到从设备。此时需要重新执行Inquiry获取最新时钟信息。

  • LMP阶段故障(分支E):链路管理器故障通常与认证相关。常见场景包括:双方Link Key不匹配(一方删除配对而另一方保留)、认证模式不兼容(一方要求MITM保护而另一方不支持)、加密算法协商失败(如一方仅支持E0而另一方要求AES)。查看HCI日志中的Authentication Complete EventSimple Pairing Complete Event状态码可定位问题。

  • L2CAP阶段故障(分支F):逻辑链路建立失败通常由PSM(Protocol/Service Multiplexer)配置错误引起,例如请求连接到未注册的PSM号(如RFCOMM默认PSM=3,若配置错误则连接被拒绝)。MTU(Maximum Transmission Unit)协商失败也会导致连接异常,特别是当一方请求过大的MTU而对方缓冲区不足时。

  • SDP阶段故障(分支G):服务发现阶段失败表明物理连接正常但应用层服务不可用。需检查从设备是否正确注册SDP服务记录(Service Record),属性数据库是否包含请求的UUID(如SPP的UUID为0x1101)。某些设备在连接后立即关闭SDP通道,导致查询超时。

  • 调试手段(节点K):如果基础排查无效,需抓取HCI日志(Android的btsnoop_hci.log或Linux的hcidump)分析命令/事件流,或使用蓝牙协议分析仪(Ellisys/Frontline)抓取空口包(Air Sniffer),查看基带层PDU交互,精确定位哪一步骤的哪个协议数据单元异常。

 

 

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐