2. Matter配网协议栈与BLE承载层
Matter 的配网(Commissioning)并不是单一协议在工作,而是一条从“发现设备”到“把设备接入 IP 网络”的完整协议栈协作链。理解这条链的关键,是先分清两个层次:Commissioning 应用层负责身份认证、凭证下发和网络配置;承载层(Transport)负责把这些消息真正送到对端。Matter 规范允许 Thread、Wi-Fi、Ethernet 三种承载,其中 Ethernet 设备天然已有 IP 连接,Thread 与 Wi-Fi 设备则通常需要借助 BLE 完成“首次入网”。
因此本节的核心问题是:一台尚未入网的 Matter 设备,如何通过 BLE 被 Commissioner(配网器,通常是手机 App 或生态 Hub)发现、连接、协商参数,并最终把网络凭证交给它。下面按协议栈自下而上拆解。
一、Matter 配网协议栈的分层结构
从下往上,Matter 配网涉及以下层次:
- 物理/链路层:BLE(用于发现与初始配网)、Thread(802.15.4)、Wi-Fi、Ethernet。
- 承载层:BLE 承载用于 Commissioning 阶段;IP 承载(UDP/TCP)用于设备入网后的操作通信。
- 消息层:Matter 消息帧(Message Frame),包含 Session ID、安全标志、消息计数器等。
- 安全层:PASE(Passcode-Authenticated Session Establishment)用于配网器与设备之间的首次安全会话;CASE 用于设备入网后与 Fabric 内其他节点的会话。
- 交互模型层:Commissioning 相关的 Cluster,如 General Commissioning、Network Commissioning、Operational Credentials。
需要特别强调:PASE 会话可以跑在 BLE 上,也可以跑在 IP 上。对于 Thread/Wi-Fi 设备,首次 PASE 通常建立在 BLE 之上;对于 Ethernet 设备,PASE 直接建立在 IP 之上。这就是“BLE 承载层”在 Matter 中的真实定位——它是 PASE 的一条可选传输通道,而非 Matter 应用协议本身。
二、BLE GATT 服务定义
Matter 在 BLE 上定义了一个专用的 GATT 服务,用于承载 Commissioning 消息。其核心特征如下:
- Service UUID:
0000FFF6-0000-1000-8000-00805F9B34FB,这是 Matter 规定的配网服务 UUID。 - C1 特征:用于 Commissioner 向设备写入数据(Write),UUID 为
18EE2EF5-263D-4559-959F-4F9C429F9D11。 - C2 特征:用于设备向 Commissioner 上报数据(Notify/Indicate),UUID 为
18EE2EF5-263D-4559-959F-4F9C429F9D12。 - C3 特征:用于 Commissioner 向设备写入附加数据,UUID 为
18EE2EF5-263D-4559-959F-4F9C429F9D13。
实际开发中,C1 和 C2 构成一对双向通道:手机 App 通过 C1 写入配网请求,设备通过 C2 的 Notify 返回响应。C3 用于某些扩展场景。需要注意的是,Matter 的 BLE 承载并不使用标准 BLE 的“读写特征值”语义来传业务数据,而是把 Matter 消息帧封装进 GATT 写入/通知中,因此 MTU 协商直接决定了单次能传多少字节。
三、Commissioning Advertisement
设备在未配网状态下会持续广播 BLE 广告包,这就是 Commissioning Advertisement。它承担两个作用:一是让 Commissioner 发现设备,二是携带配网所需的引导信息。
广告包中通常包含:
- 设备名称:如
MATTER-1234,便于用户识别。 - Discriminator:12 位判别值,用于在多个设备中筛选目标设备。
- Vendor ID / Product ID:厂商与产品标识。
- Commissioning Mode:指示当前是否处于可配网状态。
Commissioner 扫描到广告包后,会根据 Discriminator 和用户输入的配对码(Passcode)决定是否发起连接。配对码通常印在设备标签或二维码上,是 PASE 会话的初始凭证。
四、BLE 连接建立与 MTU 协商
连接建立过程大致如下:
- Commissioner 扫描到 Commissioning Advertisement,解析出设备地址与 Discriminator。
- 发起 BLE 连接,连接间隔、从机延迟等参数由双方协商。
- 发现 Matter GATT 服务,定位 C1/C2/C3 特征。
- 订阅 C2 的 Notify,使设备可以主动上报。
- 发起 MTU 协商,确定单次 ATT 载荷上限。
- 在 C1 上写入 PASE 第一条消息,开始安全会话建立。
MTU 协商是这里最容易被忽视、却最容易出问题的环节。BLE 默认 ATT MTU 为 23 字节,扣除 3 字节 ATT 头后,单次有效载荷只有 20 字节。Matter 消息帧往往大于 20 字节,因此必须协商更大的 MTU。常见做法是请求 247 字节(BLE 4.2/5.0 常见上限),扣除 ATT 头后有效载荷约 244 字节。如果协商失败或对端只支持 23 字节,Matter 层需要做分片重组。
五、从 BLE 到 IP 的承载切换
PASE 会话建立后,Commissioner 通过 Network Commissioning Cluster 向设备下发网络凭证。对于 Thread 设备,下发的是 Operational Dataset(含网络密钥、PAN ID、信道等);对于 Wi-Fi 设备,下发的是 SSID 和密码。设备收到凭证后尝试加入目标网络,成功后通过 IP 承载向 Commissioner 上报结果。
此时 BLE 连接可以断开,后续的 CASE 会话、Operational Credentials 下发等都在 IP 上进行。整个流程可以概括为:BLE 发现 → BLE 连接 → PASE 建立 → 下发网络凭证 → 设备入网 → 切换到 IP 承载 → CASE 建立。
六、开发中的关键检查点
| 检查项 | 预期值/现象 | 异常处理 |
|---|---|---|
| Commissioning Advertisement 是否可见 | 扫描到 MATTER-xxxx 广告包 | 检查设备是否进入配网模式、广播间隔是否合理 |
| GATT 服务 UUID 是否正确 | FFF6 服务及 C1/C2/C3 特征存在 | 核对固件中 GATT 表定义 |
| MTU 协商结果 | ≥ 247 字节 | 检查协议栈 MTU 配置、对端是否响应 |
| PASE 会话是否建立 | 收到 PASE 响应帧 | 核对配对码、Discriminator 是否匹配 |
| 网络凭证下发是否成功 | 设备上报入网成功 | 检查 SSID/密码或 Thread Dataset 是否正确 |
| 承载切换是否完成 | BLE 断开后 IP 可达 | 检查设备是否成功获取 IP 地址 |