BLE 扫描与扩展广播机制全解析:从 Scan Response 到 Extended Advertising
一、问题背景
在 BLE 开发中,经常会遇到这些问题:
1. 扫描响应包到底是什么?
2. 为什么有些设备看不到 Scan Response?
3. 扩展广播有没有“扩展扫描响应”?
4. iOS 明明支持扩展扫描,为什么看到的还是传统广播?
5. HCI 日志中为什么出现 “Ext ADV + Scan Response”?
这篇文章一次性讲清楚。
二、扫描包与扫描响应包(Legacy Advertising)
1. 工作流程
ADV(广播包)
↓
SCAN_REQ(主端发起)
↓
SCAN_RSP(外设响应)
2. SCAN_REQ 的本质
只包含:
- ScanA(谁在请求)
- AdvA(请求谁)
👉 它不是数据请求,而是:
一个“触发响应”的信号
3. SCAN_RSP 的特点
✔ 只发给发起请求的主端
✔ 用于补充 31 字节限制
✔ 属于单播响应(不是广播)
三、扩展广播(Extended Advertising)
1. 机制变化
Legacy:
ADV + SCAN_RSP
Extended:
ADV_EXT_IND
↓
AUX_ADV_IND
↓
AUX_CHAIN_IND
2. 核心变化
❌ 不再需要 Scan Request
✅ 使用链式广播发送数据
3. 是否存在“扩展扫描响应”?
❌ 不存在
因为:
扩展广播已经用链式结构取代了 SCAN_RSP
四、扩展广播的数据限制
1. 单包限制
最大 251 字节
2. 总数据量
通过链式广播可以超过 251 字节
3. 信道使用
Primary:37 / 38 / 39
Secondary:0~36 任意信道
👉 不存在“最多几个信道”的限制。
五、iOS 对扩展广播的支持
1. 扫描能力
[CBCentralManager supportsFeatures:CBCentralManagerFeatureExtendedScanAndConnect]
✔ 支持扩展扫描(BLE5)
2. 广播能力
❌ 仅支持 Legacy Advertising(31字节)
六、为什么 iOS HCI 日志看起来“很混乱”?
上图为 iPhone 6s HCI 日志
上图为 iPhone 13 HCI 日志
现象:
LE - Ext ADV Report
Event Type: Legacy Advertising PDUs Used
Scan Response 仍然存在
原因:
iOS 用 Extended Advertising Report 统一上报所有广播
判断是否真正扩展广播:
❌ 仅看 Ext ADV 不够
必须看:
1. Data Length > 31
2. Secondary PHY ≠ None
3. 是否存在 AUX_CHAIN_IND
七、总结
1. SCAN_REQ 是触发器,不是数据请求
2. SCAN_RSP 是单播响应,不是广播
3. 扩展广播没有扫描响应包
4. 251 字节是单包限制,不是总数据限制
5. iOS 支持扩展扫描,但不支持扩展广播发送
6. Ext ADV Report ≠ 扩展广播
最后一条(核心理解)
BLE 从“请求-响应模型(ADV + SCAN_RSP)”
演进到“链式广播模型(Extended Advertising)”,
这是一次机制替换,而不是功能增强。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐





所有评论(0)