调试需要一台具有“调试”角色的设备,以及一台具有“连接器”角色的设备。“调试器”要么是现有 Thread 网络中的 Thread 设备,要么是位于 Thread 网络外部的设备(例如手机),用于执行“调试器”角色。Joiner 是希望加入 Thread 网络的设备。
Thread Commissioner 用于向网络验证设备。它不会转移或拥有 Thread 网络凭据(例如网络密钥)。
本指南将介绍不使用外部调试器或边界路由器的基本网状调试。如需了解如何使用外部调试器,请参阅外部线程调试。
如需查看使用虚拟设备进行调试的示例,请参阅 OpenThread 模拟 Codelab。
启用角色
如需启用调试器和连接符角色,请使用以下 cmake 选项:
选项 | 说明 |
---|---|
-DOT_COMMISSIONER=ON |
启用“调试器”角色 |
-DOT_JOINER=ON |
启用“Joiner”角色 |
例如,如需构建仅用作联接者的 CC2538 示例平台,请执行以下操作:
./script/build -DOT_JOINER=ON
将每个二进制文件刷写到所需设备上。其中一个设备用作调试器,另一个设备用作连接器。
您可以在每个平台的 OpenThread 代码库中找到有关构建和刷写受支持平台的具体说明。请参阅 OpenThread GitHub 组织以查找代码库。
创建网络
在设备上以专员身份创建一个网络:
dataset init new
Donedataset
Active Timestamp: 1 Channel: 13 Channel Mask: 07fff800 Ext PAN ID: d63e8e3e495ebbc3 Mesh Local Prefix: fd3d:b50b:f96d:722d/64 Network Key: dfd34f0f05cad978ec4e32b0413038ff Network Name: OpenThread-8f28 PAN ID: 0x8f28 PSKc: c23a76e98f1a6483639b1ac1271e2e27 Security Policy: 0, onrcb Donedataset commit active
Doneifconfig up
Donethread start
Done
等待几秒钟,并验证设备是否已成为线程领先变体:
state
leader
Done
启动调试器角色
在同一设备上,启动调试器角色:
commissioner start
Done
使用 * 通配符可允许具有指定联接凭据的任何联接成员将权限提交到网络。系统使用 Joiner 凭据(以及扩展 PAN ID 和网络名称)生成设备的预共享密钥 (PSKd)。然后,PSKd 用于在线程调试期间对设备进行身份验证。每个设备上的联接凭据应该是唯一的。
commissioner joiner add * J01NME
Done
仅限特定连接方
如需将调试限定到特定的联接设备,请使用 eui64
参数,即设备的出厂 IEEE EUI-64 参数。
在用作连接者的设备上,获取 EUI-64:
eui64
2f57d222545271f1
Done
在调试器的 commissioner joiner
命令中使用该值而不是 * 通配符:
commissioner joiner add 2f57d222545271f1 J01NME
Done
启动 Joiner 角色
在用作 Joiner 的设备上,执行恢复出厂设置,然后使用调试器中指定的相同 Joiner 凭据启用 Joiner 角色:
factoryreset
ifconfig up
Donejoiner start J01NME
Done
等待几秒钟进行确认:
Join success!
Joiner 设备已成功通过调试器自身身份验证并收到 Thread Network 凭据。
现在,在 Joiner 设备上启动 Thread:
thread start
Done
验证身份验证
检查联接设备上的状态,以验证它是否已加入该网络。在两分钟内,状态会从子级状态转换到路由器状态:
state
child Done ...state
router Done