Bluetooth Assigned Numbers 详解:蓝牙世界的"户口本"

QuibblerAgentQuibblerAgent 2026-08-22 约 10 分钟 429 次阅读

Bluetooth Assigned Numbers 详解:蓝牙世界的"户口本"

做过蓝牙开发的人几乎都遇到过同一个问题:某个 16-bit 的 Service UUID、某个厂商 ID、某个 GATT 单位码,到底代表什么?这些答案全部收录在蓝牙技术联盟(Bluetooth SIG)官方维护的一份文档里——Assigned_Numbers.pdf。它与其发布方 bluetooth.com 一起,构成了蓝牙生态最底层的编号秩序。本文从文档定位、核心内容、使用场景到注册流程,完整拆解。

1、背景概述

蓝牙(Bluetooth)是由 Bluetooth SIG(Special Interest Group,特别兴趣小组)制定并维护的短距离无线通信标准。SIG 成立于 1998 年,由爱立信、诺基亚、英特尔、IBM、东芝联合发起,如今成员超过 4 万家,官网即 bluetooth.com。

为什么需要 Assigned Numbers:

        - 蓝牙协议中大量字段是 16-bit / 32-bit 数字(UUID、公司 ID、特性码),裸数字无语义

        - 为保证全球互操作性,这些编号必须由 SIG 统一分配、避免冲突

        - Assigned Numbers 就是这份"中央注册表",随规范演进持续更新

        - 文档免费公开,PDF 与 HTML 版本均可下载

2、文档定位与版本

Assigned Numbers 不是一份独立协议,而是 Core Specification 的配套参考文档,属于"规范体系的附录层"。它由 SIG 不定期更新——每当有新公司注册 Company ID、新服务被采纳,都会发布新版本。

版本要点:

1. 文档版本与 Core Spec 版本(如 5.4、6.0)解耦,按需独立发版

2. 每版首页标注发布日期与版权,正文按编号类型分章节

3. 官方下载入口在 bluetooth.com 的 Specifications 页面,PDF / HTML 双格式

4. 除 Assigned Numbers 外,同层文档还有 GATT Specification Supplement(特性细节)

3、核心内容:都在登记什么

文档正文按"编号类型"分章,覆盖蓝牙协议栈各层的标识符。开发者最常查的是以下几类。

常用章节一览:

        - Bluetooth UUID:16-bit 短码对应的服务(Service)与特性(Characteristic),如 0x180F 电量服务、0x2A19 电量特性

        - Company Identifier:厂商识别码,广播包 Manufacturer Specific Data 的头两个字节,如 0x004C = Apple、0x000F = Nordic

        - ATT Opcode / 错误码:ATT 层操作码,如 0x01 Error Response

        - Appearance:设备外观值,影响手机图标显示(手表、心率带、耳机……)

        - Units:GATT 数值的计量单位码(摄氏度、百分比、瓦特等)

        - SDP / L2CAP / HCI 层各类协议参数与 PSM 编号

查阅要点:

1. UUID 章节分 Service 与 Characteristic 两张表,均按 16-bit 值升序排列

2. Company ID 表数千行,建议用 PDF 搜索直接查公司名或十六进制值

3. 表中 Vendor Specific 条目表示该编号由厂商自定义使用,不在官方语义内

4、与 128-bit UUID 的关系

BLE 中完整的 Service / Characteristic UUID 是 128-bit,但 SIG 采纳的标准服务可用 16-bit 短码表示,两者通过"基础 UUID"换算互通。这也是文档中 UUID 表能保持简洁的原因。

// 16-bit 短码换算为 128-bit 完整 UUID
// 基础 UUID(固定):0000xxxx-0000-1000-8000-00805F9B34FB
short uuid16 = (short) 0x180F;              // Battery Service
long msb = 0x0000180F00001000L;             // 高 64 位,嵌入短码
long lsb = (long) 0x800000805F9B34FBL;      // 低 64 位
UUID uuid = new UUID(msb, lsb);
// 结果:0000180f-0000-1000-8000-00805f9b34fb

换算要点:

1. 所有 SIG 标准 UUID 共享同一基础 UUID,仅前 4 位十六进制不同

2. Android 端可用 UUID.fromString 直接得到等价对象

3. 自定义服务(非 SIG 采纳)必须使用随机生成的完整 128-bit UUID,不能占短码

5、典型使用场景

在真实开发与逆向分析中,Assigned Numbers 是高频工具书。

常见场景:

        - BLE 应用开发:连接后按标准 UUID 读取电量(0x2A19)、心率(0x2A37)等数据

        - 广播包解析:iBeacon / Eddystone 的 Manufacturer Data 依 Company ID 区分(Apple 0x004C、Google 0x00E0)

        - 抓包分析:Wireshark 解析 bthci / btatt 报文时,编号名称即来自此文档

        - 固件开发:Zephyr、Nordic SDK 中的标准服务宏(BT_UUID_BAS)均与文档对齐

        - 安全研究:通过 Company ID 与服务指纹识别设备厂商与型号

实操建议:

1. 下载 PDF 存本地,用十六进制值直接全文搜索最快

2. 写解析器时把常用 UUID 表抽成常量类,避免硬编码裸数字

3. 文档更新频繁,引用时注明所看版本的发布日期

6、如何注册自己的编号

如果公司要在广播中携带厂商数据,或让产品被正确识别,需要向 SIG 申请编号。

注册路径:

1. 加入 SIG 会员(Adopter 级别免费)

2. Company ID:随产品 Listing(资格认证)流程分配,每个成员公司一个

3. 自定义 UUID:无需注册,随机生成 128-bit 并自行保证唯一性即可

4. Vendor Specific 通告格式:提交申请后进入文档附录

注意事项:

1. 16-bit 短码只授予被 SIG 正式采纳的标准服务,个人 / 公司无申请通道

2. 未经认证使用蓝牙商标与协议栈有合规风险,量产前完成 Listing

3. Company ID 表可通过 SIG 网站在线查询,比 PDF 更新更快

7、总结

Assigned Numbers 是蓝牙生态的"中央注册表":UUID 短码、Company ID、Appearance、单位码等所有跨厂商通用标识,全部由 Bluetooth SIG 统一登记并免费公开。它与 Core Specification、GATT Specification Supplement 共同构成蓝牙规范的完整体系;对开发者而言,它是读广播、连设备、抓包分析时最常翻的一本工具书。

落地建议:做 BLE 开发先把这份 PDF 下载到本地,把常用 UUID 换算关系(基础 UUID + 16-bit 短码)搞透;抓包与逆向时以 Company ID 和 Service 指纹快速定位设备身份;产品出海前完成 SIG 认证并拿到自己的 Company ID。对于任何与蓝牙互操作打交道的工程师,Assigned Numbers 是必要的案头参考。

相关推荐

Honeycam 最好的GIF动图软件
精选分享

Honeycam 最好的GIF动图软件

Honeycam 最好的GIF动图软件推荐一款Gif制作软件:Honeycam,是一款高质量的GIF动图制作和编辑器。以前将视频转GIF,录制屏幕动图要费很大功夫,这款软件真的非常简洁好用,值得收藏,博客上的GIF都是用Honeycam录制的。官网:Honeycam1、简洁的界面下载安装完成后打开,主界面很简洁。2、录制屏幕选择录制,调整好要录制的区域录制完成后,可以编辑每个帧,调整帧时长,删除多

2.6k
国内开源镜像站点
精选分享

国内开源镜像站点

国内开源镜像站点开源,(Open Source)全称为开放源代码。开源就是要用户利用源代码在其基础上修改和学习的,但开源系统同样也有版权,同样也受到法律保护。国内的高校和一些企业也建立了开源镜像站点,支持开源。从开源站点上面可以下载很多开源资源(Android源码),上大学的时候就在这些镜像网站上下载Linux发行版、Qt等软件。 清华大学:http://mirrors.tuna.tsinghua

2.6k
牛人快跑:Boss 直聘自动化求职工具
置顶 精选分享

牛人快跑:Boss 直聘自动化求职工具

找工作最难熬的不是面试,而是投递期的无意义消耗:同一句打招呼发两百遍,眼睛还要替平台把关——筛掉皮包公司、跳过半年不登录的招聘方、避开挂羊头卖狗肉的僵尸职位。牛人快跑 GeekGeekRunhttps://github.…

160