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 应用协议本身。

Matter 配网协议栈与 BLE 承载层 协议栈分层 交互模型层 General / Network / Operational Credentials 安全层 PASE(首次配网) / CASE(入网后) 消息层 Message Frame / Session ID / Counter 承载层 BLE(配网) / IP(UDP·TCP) 物理/链路层 BLE / Thread(802.15.4) / Wi-Fi / Ethernet 三种承载的配网路径 Thread 设备 BLE 发现+PASE 下发 Thread 凭证 入 Thread 网 BLE 仅用于首次配网,入网后走 Thread/IP Wi-Fi 设备 BLE 发现+PASE 下发 SSID/密码 入 Wi-Fi 网 BLE 承担配网,入网后切换到 Wi-Fi/IP Ethernet 设备 IP 发现+PASE 无需网络凭证 直接入网 不依赖 BLE,PASE 直接跑在 IP 上 关键点:BLE 是 PASE 的一条可选承载通道,不是 Matter 应用协议本身;Thread/Wi-Fi 首次配网依赖 BLE,Ethernet 可直接走 IP。 PASE 建立后,Commissioner 通过 Network Commissioning Cluster 下发网络凭证,设备切换承载并加入目标网络。

二、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 协商

连接建立过程大致如下:

  1. Commissioner 扫描到 Commissioning Advertisement,解析出设备地址与 Discriminator。
  2. 发起 BLE 连接,连接间隔、从机延迟等参数由双方协商。
  3. 发现 Matter GATT 服务,定位 C1/C2/C3 特征。
  4. 订阅 C2 的 Notify,使设备可以主动上报。
  5. 发起 MTU 协商,确定单次 ATT 载荷上限。
  6. 在 C1 上写入 PASE 第一条消息,开始安全会话建立。

MTU 协商是这里最容易被忽视、却最容易出问题的环节。BLE 默认 ATT MTU 为 23 字节,扣除 3 字节 ATT 头后,单次有效载荷只有 20 字节。Matter 消息帧往往大于 20 字节,因此必须协商更大的 MTU。常见做法是请求 247 字节(BLE 4.2/5.0 常见上限),扣除 ATT 头后有效载荷约 244 字节。如果协商失败或对端只支持 23 字节,Matter 层需要做分片重组。

在实际调试中,如果 PASE 会话建立到一半卡住,优先检查 MTU 协商结果。可以用手机端 BLE 调试工具查看协商后的 MTU 值,若仍为 23,说明设备端未正确响应 MTU 请求,或协议栈未启用大 MTU 支持。

五、从 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 地址