当前位置: 首页 > news >正文

BLE 广播 rawBytes 解析说明

在 BLE 扫描结果中,rawBytes表示扫描到的原始广播数据或扫描响应数据。
这些数据通常由多个AD Structure组成,每个 AD Structure 都按照固定格式排列。


一、rawBytes 的结构

BLE 广播数据的基本结构如下:

Length | AD Type | AD Data

其中:

字段长度说明
Length1 字节表示后面还有多少字节,不包含 Length 自身
AD Type1 字节表示当前这段数据的类型
AD DataLength - 1 字节具体数据,解析方式由 AD Type 决定

需要注意:

Length 包含 AD Type 和 AD Data Length 不包含 Length 自己 AD Data 的长度 = Length - 1

例如:

02 01 06

解析为:

02 = Length,表示后面有 2 个字节 01 = AD Type 06 = AD Data

所以整个 AD Structure 实际长度是:

1 + Length = 3 字节

解析 rawBytes 时,就是不断重复读取:

读取 Length 读取 AD Type 读取 Length - 1 字节的 AD Data 根据 AD Type 解析 AD Data 继续读取下一段 AD Structure

如果遇到:

00

表示:

Length = 0

通常可以认为后面没有有效广播数据了。


二、常用 AD Type 及 Data 解析方式

AD Type名称AD Data 解析方式
0x01Flags1 字节,按 bit 位解析
0x02Incomplete List of 16-bit Service UUIDs每 2 字节一个 UUID,小端序
0x03Complete List of 16-bit Service UUIDs每 2 字节一个 UUID,小端序
0x06Incomplete List of 128-bit Service UUIDs每 16 字节一个 UUID
0x07Complete List of 128-bit Service UUIDs每 16 字节一个 UUID
0x08Shortened Local Name按 UTF-8 字符串解析
0x09Complete Local Name按 UTF-8 字符串解析
0x0ATx Power Level1 字节有符号整数,单位 dBm
0x16Service Data - 16-bit UUID前 2 字节是 16-bit UUID,小端序;后面是 Service Data
0x19Appearance2 字节,小端序
0xFFManufacturer Specific Data前 2 字节是 Company ID,小端序;后面是厂商自定义数据

1. Flags:0x01

示例:

02 01 06

解析:

02 = Length 01 = AD Type,表示 Flags 06 = AD Data

0x06转成二进制:

0000 0110

常见 bit 位含义:

含义
bit00x01LE Limited Discoverable Mode
bit10x02LE General Discoverable Mode
bit20x04BR/EDR Not Supported
bit30x08Simultaneous LE and BR/EDR to Same Device Capable, Controller
bit40x10Simultaneous LE and BR/EDR to Same Device Capable, Host

所以:

0x06 = 0x02 + 0x04

表示:

LE General Discoverable Mode BR/EDR Not Supported

2. 16-bit Service UUID:0x02 / 0x03

示例:

03 02 0F 18

解析:

03 = Length 02 = AD Type,表示 Incomplete List of 16-bit Service UUIDs 0F 18 = AD Data

16-bit UUID 使用小端序:

0F 18 => 0x180F

通常可以补全成 128-bit UUID:

0000180f-0000-1000-8000-00805f9b34fb

如果 AD Data 中有多个 UUID,例如:

05 03 0F 18 0A 18

解析为:

0F 18 => 0x180F 0A 18 => 0x180A

3. Local Name:0x08 / 0x09

示例:

08 09 44 65 76 69 63 65 31

解析:

08 = Length 09 = AD Type,表示 Complete Local Name 44 65 76 69 63 65 31 = AD Data

AD Data 按 UTF-8 字符串解析:

Device1

其中:

44 = D 65 = e 76 = v 69 = i 63 = c 65 = e 31 = 1

4. Tx Power Level:0x0A

示例:

02 0A EC

解析:

02 = Length 0A = AD Type,表示 Tx Power Level EC = AD Data

Tx Power 是 1 字节有符号整数。

0xEC => -20

所以表示:

Tx Power = -20 dBm

5. Service Data - 16-bit UUID:0x16

示例:

05 16 0F 18 64 00

解析:

05 = Length 16 = AD Type,表示 Service Data - 16-bit UUID 0F 18 = 16-bit UUID,小端序 64 00 = Service Data

其中:

0F 18 => 0x180F

后面的:

64 00

是该 Service 对应的数据,具体含义需要根据对应 Service 定义或厂商协议解析。


6. Appearance:0x19

示例:

03 19 C1 03

解析:

03 = Length 19 = AD Type,表示 Appearance C1 03 = AD Data

Appearance 是 2 字节小端序:

C1 03 => 0x03C1

常见 Appearance 示例:

含义
0x0000Unknown
0x0040Generic Phone
0x0080Generic Computer
0x03C0Generic Human Interface Device
0x03C1Keyboard
0x03C2Mouse

7. Manufacturer Specific Data:0xFF

示例:

08 FF 4C 00 01 02 03 04 05

解析:

08 = Length FF = AD Type,表示 Manufacturer Specific Data 4C 00 = Company ID 01 02 03 04 05 = Manufacturer Data

Company ID 使用小端序:

4C 00 => 0x004C

后面的:

01 02 03 04 05

是厂商自定义数据。

需要注意:

0xFF 的 AD Data 中,只有前 2 字节 Company ID 是标准规定的; 后面的 Manufacturer Data 由厂商自己定义。

所以 Manufacturer Data 可能表示设备型号、MAC 地址、序列号、传感器数据、业务状态等,具体要看厂商协议。


三、完整示例

下面用一段脱敏后的 rawBytes 举例:

02 01 06 03 03 0F 18 08 09 44 65 76 69 63 65 31 08 FF 4C 00 01 02 03 04 05 03 19 C1 03

逐段解析如下。


第 1 段

02 01 06

解析:

02 = Length 01 = AD Type,Flags 06 = AD Data

0x06表示:

LE General Discoverable Mode BR/EDR Not Supported

第 2 段

03 03 0F 18

解析:

03 = Length 03 = AD Type,Complete List of 16-bit Service UUIDs 0F 18 = AD Data

小端序解析:

0F 18 => 0x180F

补全成 128-bit UUID:

0000180f-0000-1000-8000-00805f9b34fb

第 3 段

08 09 44 65 76 69 63 65 31

解析:

08 = Length 09 = AD Type,Complete Local Name 44 65 76 69 63 65 31 = AD Data

按 UTF-8 字符串解析:

Device1

第 4 段

08 FF 4C 00 01 02 03 04 05

解析:

08 = Length FF = AD Type,Manufacturer Specific Data 4C 00 = Company ID 01 02 03 04 05 = Manufacturer Data

Company ID 小端序:

4C 00 => 0x004C

Manufacturer Data:

01 02 03 04 05

这部分是厂商自定义数据,不能只根据蓝牙通用规则继续判断其业务含义。


第 5 段

03 19 C1 03

解析:

03 = Length 19 = AD Type,Appearance C1 03 = AD Data

小端序解析:

C1 03 => 0x03C1

表示:

Keyboard

四、解析总结

BLErawBytes的解析核心是:

Length | AD Type | AD Data

解析规则是:

1. 先读取 1 字节 Length 2. 再读取 1 字节 AD Type 3. 再读取 Length - 1 字节 AD Data 4. 根据 AD Type 决定 AD Data 的解析方式 5. 继续解析下一段 AD Structure

需要特别注意:

Length 不包含自己 Length 包含 AD Type AD Data 长度 = Length - 1 UUID 通常按小端序解析 Local Name 按 UTF-8 字符串解析 Manufacturer Specific Data 只有前 2 字节 Company ID 是通用格式,后面的数据由厂商自定义

因此,拿到 BLE 广播rawBytes后,不能直接把整段数据当成业务数据解析,而应该先按照 BLE AD Structure 拆分,再根据不同的 AD Type 分别解析。

http://www.jsqmd.com/news/1067365/

相关文章:

  • 二年级下册语文复习1-8单元:口语交际+写话训练(ppt课件)
  • 基于KNN算法的健身会员个性化锻炼与饮食方案推荐研究
  • 90% 运营踩坑:跳过监测直接优化,难怪流量上不去
  • 代码审查与性能诊断实战:用Gemini镜像站对PHP/Java项目进行自动化深度体检
  • 一文读懂主流仓库管理系统,精准选型不踩坑
  • 维铂叁科普知识丨数字防伪印章
  • Agent替人打电话:银企直连支付终态确认的语音问询方案探索
  • 从概念验证到百万QPS商用:3家头部AI OS厂商同步采用的插件生命周期管理模型(含GitHub Star超2.4k的开源参考实现)
  • 网络安全学习笔记
  • 5. 油气开采工程
  • RTKLIB中关于不同的码通道
  • Codex 负责人:下一代 AI,会像私人助理一样替你干活
  • LY62256BSL-45SLI 技术解析:32K×8低功耗SRAM
  • 单模型采样的统计学本质与系统性偏差分析 | 上篇单模型采样的统计学本质与系统性偏差分析 | 上篇
  • 大模型下半场抢人开战!DeepSeek重金扩招Agent配套Harness人才,暴露AI全新发展趋势。
  • 2026 降AI率工具实测对比:公认好用的,科研党救急指南
  • SK海力士营业利润率超70%,与英伟达、台积电结盟能否摆脱“硅周期”?
  • Linux 单用户模式 vs 救援模式的区别
  • 为什么92%的AI中台项目在Adapter层失败?20年架构老兵亲授6个反模式诊断清单与即时修复checklist
  • Advanced RAG实战:基于PDF文件构建RAG知识库
  • 作为宝妈研究者我给孩子选的脑营养不是最贵的是最对的
  • 5分钟快速上手Bongo Cat Mver:让键盘操作变成可爱动画的终极指南
  • 香橙派nomachine远程桌面连接显示无画面的解决办法
  • 如何将iPhone上的联系人AirDrop到iPhone上?
  • 表面等离子共振SPR技术结果解析
  • 硬核科技+柔性创新”2026第三代半导体与柔性电子展会抢先看
  • 【2026奇点智能权威报告】:首次公开XAI for LLM三大可解释性范式演进路径与落地阈值
  • 《图解HTTP》--第5章-与HTTP协作的Web服务器
  • AI原生跨模态学习实战手册(SITS 2026官方基准全解析):从零部署VLM推理服务, latency压至117ms以内
  • 光伏多合一四可装置:一台搞定电站 “可观可测可控可调” 全闭环