3. BLE技术概述
BLE(Bluetooth Low Energy,低功耗蓝牙)是手机钥匙系统中负责“发现、配对、鉴权、近场控制”的基础无线技术。它并不追求高吞吐,而是以极低占空比换取数月甚至数年的纽扣电池寿命。理解BLE,需要从它的演进历史、协议栈分层、物理层与链路层、GAP与GATT、广播扫描机制以及连接建立流程六个维度建立整体认知。
3.1 BLE发展史:从Nokia Wibree到蓝牙5.x
BLE并非一开始就属于蓝牙标准。2001年前后,Nokia提出Wibree低功耗无线技术,目标是手表、传感器等小数据量设备。2007年Wibree并入SIG,2010年蓝牙4.0正式将BLE与经典蓝牙BR/EDR并列发布,形成“双模”芯片形态。此后演进节奏明显加快:
- 4.0(2010):定义BLE基础协议栈,引入GAP、GATT、ATT、L2CAP、LL、PHY,广播信道37/38/39。
- 4.1(2013):优化共存与批量数据传输,支持设备同时扮演多角色。
- 4.2(2014):引入LE Data Length Extension与隐私增强,提升有效载荷与地址随机化能力。
- 5.0(2016):新增2M PHY、Coded PHY(S=2/S=8)、扩展广播,速率与距离同时提升。
- 5.1(2019):加入AoA/AoD测向,为室内定位提供基础。
- 5.2~5.4:LE Audio、LC3、EATT、PAwR、加密广播等,进一步服务音频、广播与安全场景。
对手机钥匙而言,BLE 4.2之后的Data Length Extension和5.0的Coded PHY尤为关键:前者减少分包开销,后者在车外远距离唤醒或地库弱信号场景中提升链路余量。
3.2 协议栈架构:控制器与主机分工
BLE协议栈通常划分为Controller(控制器)与Host(主机)两大部分,中间以HCI接口连接。Controller负责射频、链路与时序,Host负责逻辑、属性与安全。下图给出典型分层与数据流向:
理解这张图的关键是:HCI是分界线。手机SoC通常把Controller集成在芯片内,通过HCI命令驱动;车端模块可能把Host跑在MCU上,Controller在射频芯片中。调试时若HCI日志缺失,很多“连不上”问题就难以定位。
3.3 物理层与链路层:信道、调制与状态机
BLE物理层工作在2.4GHz ISM频段,采用GFSK调制。BLE 4.x使用40个信道,其中37、38、39为广播信道,其余37个为数据信道。BLE 5.0新增2M PHY(速率翻倍、距离略降)和Coded PHY(S=2/S=8,用编码换灵敏度,适合远距离)。链路层定义设备状态:待机、广播、扫描、发起、连接。广播态发ADV包,扫描态收SCAN_REQ/SCAN_RSP,发起态发CONNECT_IND,连接态则按连接间隔在主从间跳频收发。
广播信道:37 (2402MHz) / 38 (2426MHz) / 39 (2480MHz)
数据信道:0~36,跳频序列由信道图与跳数决定
连接间隔:7.5ms ~ 4s,手机钥匙常用 15~30ms
从机延迟:0~499,允许从机跳过若干连接事件以省电
监督超时:100ms ~ 32s,超时未收到包则断开
链路层还负责白名单、地址解析、加密启动与LL控制流程。手机钥匙中,车端常以可连接广播等待手机发起连接,连接后立即启动加密,再进入GATT服务发现。
3.4 GAP与GATT:角色、广播与属性模型
GAP(通用访问规范)定义设备如何被发现、如何建立连接,以及四种角色:广播者、观察者、外围设备、中心设备。手机钥匙中,车端通常是外围设备(可连接广播),手机是中心设备(扫描并发起连接);但手机也可作为广播者发送身份信标,车端作为观察者监听。
GATT(通用属性规范)定义数据如何组织与访问。它把数据抽象为服务(Service)、特征(Characteristic)和描述符(Descriptor)。每个属性有句柄、UUID、权限和值。手机钥匙常用服务包括:
| 服务/特征 | UUID示例 | 作用 | 典型权限 |
|---|---|---|---|
| 设备信息服务 | 0x180A | 厂商、型号、固件版本 | Read |
| 电池服务 | 0x180F | 钥匙/车端电量 | Read / Notify |
| 自定义鉴权服务 | 厂商自定义 | 挑战-响应、证书交换 | Write / Indicate |
| 车辆控制服务 | 厂商自定义 | 解闭锁、寻车、启动 | Write with Response |
| 测距配置服务 | 厂商自定义 | UWB会话参数协商 | Write / Read |
GATT操作包括Read、Write、Write Without Response、Notify、Indicate。Notify无需确认,适合高频状态;Indicate需要确认,适合鉴权结果等关键事件。手机钥匙中,鉴权结果通常用Indicate,避免丢包导致状态不一致。
3.5 广播与扫描机制:发现与过滤
广播包由报头、地址和最多31字节的AD结构组成(扩展广播可更长)。常见AD类型包括Flags、Local Name、Service UUID、Manufacturer Specific Data、Tx Power。车端可在Manufacturer Data中放入车辆标识、协议版本和状态位,手机扫描时按厂商ID与自定义字段过滤,避免误连其他BLE设备。
扫描分为被动扫描与主动扫描。被动扫描只收广播包;主动扫描会发SCAN_REQ并收SCAN_RSP,可获取更多信息但增加功耗。手机钥匙通常采用“低占空比扫描+白名单过滤+连接后停止扫描”的策略,以平衡响应速度与功耗。
3.6 连接建立流程:从广播到加密
一次完整的BLE连接建立通常经历:车端可连接广播 → 手机扫描发现 → 手机发CONNECT_IND → 连接建立 → 加密启动 → 服务发现 → 特征配置 → 业务交互。若手机与车端已配对,则使用LTK快速加密;若未配对,则走配对流程生成STK/LTK。
1. 车端: ADV_IND (可连接广播, 含厂商数据)
2. 手机: SCAN_REQ -> 车端: SCAN_RSP
3. 手机: CONNECT_IND (指定接入地址、CRCInit、连接参数)
4. 链路层: 连接事件开始, 跳频同步
5. 主机: 发起加密 (LL_ENC_REQ/RSP)
6. 主机: 服务发现 (Read By Group Type)
7. 主机: 订阅Notify/Indicate (Write CCCD)
8. 业务: 鉴权挑战-响应 -> 解闭锁指令
3.7 案例与复盘:地库连接失败排查
某车型在地库频繁出现“手机靠近但无法解闭锁”。抓取HCI日志后发现:车端广播间隔为1s,手机扫描占空比仅5%,且广播数据中厂商字段被截断,导致手机过滤失败。调整广播间隔至200ms、扩展广播数据并提高扫描占空比后,发现成功率显著提升。复盘要点:
- 广播间隔与扫描占空比必须匹配,否则发现延迟不可控。
- 广播数据长度受限时,优先保留厂商ID、协议版本和状态位。
- 连接参数需与业务匹配:鉴权阶段用较短间隔,空闲阶段用较长间隔加从机延迟。
- 加密失败要区分是配对信息丢失、LTK不匹配,还是MITM保护要求未满足。
BLE是手机钥匙的“第一跳”:它负责发现、连接与安全通道建立,为后续UWB测距和精确决策提供基础。掌握协议栈分层、GAP/GATT模型、广播扫描与连接流程,才能在工程中快速定位连接、鉴权和功耗问题。