本指南介绍了 OpenThread 边界路由器 (OTBR) 的基本构建和配置。完成此过程后,您将获得一个在 RCP 设计中用作完整线程设备 (FTD) 的 OTBR。
配置平台
配置受支持的硬件平台:
构建并刷写 RCP
OTBR 采用 RCP 设计。选择一个受支持的 OpenThread 平台用作 RCP,然后按照该平台的构建和刷写说明操作。
如需大致了解如何构建 OpenThread,请参阅构建指南。
如需有关使用 GNU Autotools 构建受支持平台的具体说明,请参阅每个示例的平台文件夹。
安装 OTBR
OTBR 通过尖峰与 RCP 进行通信。如需在已配置的硬件平台上安装 OTBR,请完成以下步骤。
克隆 OTBR 代码库:
git clone https://github.com/openthread/ot-br-posix
安装依赖项
默认配置会为大多数平台启用 BORDER_ROUTING
。如需查看 OTBR 默认标志的完整列表,请参阅 GitHub 上的平台示例。选择您的平台,然后点击 default
(如果有)。
默认用法:
cd ot-br-posix
./script/bootstrap
配备网络管理器的 BeagleBone Black(可选):
cd ot-br-posix
NETWORK_MANAGER=1 NETWORK_MANAGER_WIFI=1 ./script/bootstrap
编译并安装 OTBR
默认用途。设置脚本默认启用边界路由。如需启用边界路由,请指定平台的以太网或 Wi-Fi 接口:
使用以太网:
INFRA_IF_NAME=eth0 ./script/setup
使用 Wi-Fi:
INFRA_IF_NAME=wlan0 ./script/setup
BeagleBone Black。使用网络管理器(可选):
NETWORK_MANAGER=1 NETWORK_MANAGER_WIFI=1 ./script/setup
连接并配置 RCP 设备
通过 USB 将刷写的 RCP 设备连接到边界路由器平台。
如需在 otbr-agent
中配置 RCP 设备的串行端口,请先通过检查 /dev
确定 RCP 设备的串行端口名称:
ls /dev/tty*
接下来,检查您的 otbr-agent
设置。
cd /etc/default
cat otbr-agent
otbr-agent
配置文件包含 Thread 接口名称、以太网或 Wi-Fi 接口名称和 RCP 串行端口名称。
OTBR_AGENT_OPTS="-I wpan0 -B OTBR_INFRA_IF_NAME spinel+hdlc+uart:///dev/ttyACM0 trel://OTBR_INFRA_IF_NAME"
并非所有设备都使用相同的串行端口名称进行连接。最常见的端口名称是 ttyACM*
和 ttyUSB*
。请参阅设备的相关文档,确定预期的串行端口名称。
根据需要更新 otbr-agent
配置文件。例如,对于 Wi-Fi 接口和串行端口名称 ttyUSB0
,请使用以下命令:
OTBR_AGENT_OPTS="-I wpan0 -B wlan0 spinel+hdlc+uart:///dev/ttyUSB0 trel://wlan0"
如需更新以太网接口,请执行以下操作:
OTBR_AGENT_OPTS="-I wpan0 -B eth0 spinel+hdlc+uart:///dev/ttyUSB0 trel://eth0"
重启边界路由器。如果使用 BeagleBone Black 平台,请记得在执行此操作时按住 BOOT 按钮。
OTBR 服务应在启动时启动。
验证服务
验证是否已启用所有必需的服务:
sudo systemctl status
如果 setup
脚本成功执行,输出中会显示以下服务:
mdns.service
otbr-agent.service
otbr-web.service
例如:
● raspberrypi State: running Jobs: 0 queued Failed: 0 units Since: Thu 1970-01-01 00:00:01 UTC; 47 years 7 months ago CGroup: / ├─user.slice │ └─user-1000.slice │ ├─user@1000.service │ │ └─init.scope │ │ ├─576 /lib/systemd/systemd --user │ │ └─580 (sd-pam) │ └─session-c1.scope │ ├─480 /bin/login -- │ └─585 -bash ├─init.scope │ └─1 /sbin/init └─system.slice ├─systemd-timesyncd.service │ └─334 /lib/systemd/systemd-timesyncd ├─dbus.service │ └─339 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation ├─hciuart.service │ └─442 /usr/bin/hciattach /dev/serial1 bcm43xx 921600 noflow - ├─ssh.service │ └─621 /usr/sbin/sshd -D ├─avahi-daemon.service │ ├─341 avahi-daemon: running [raspberrypi.local] │ └─361 avahi-daemon: chroot helper # enabled ├─otbr-web.service │ └─472 /usr/sbin/otbr-web ├─triggerhappy.service │ └─354 /usr/sbin/thd --triggers /etc/triggerhappy/triggers.d/ --socket /run/thd.socket --user nobody --deviceglob /dev/input/event* ├─systemd-logind.service │ └─353 /lib/systemd/systemd-logind # enabled ├─otbr-agent.service │ └─501 /usr/sbin/otbr-agent -I wpan0 ├─cron.service │ └─350 /usr/sbin/cron -f ├─systemd-udevd.service │ └─154 /lib/systemd/systemd-udevd ├─rsyslog.service │ └─345 /usr/sbin/rsyslogd -n ├─bluetooth.service │ └─445 /usr/lib/bluetooth/bluetoothd # enabled ├─mdns.service │ └─725 /usr/sbin/mdnsd ├─systemd-journald.service │ └─136 /lib/systemd/systemd-journald └─dhcpcd.service ├─409 wpa_supplicant -B -c/etc/wpa_supplicant/wpa_supplicant.conf -iwlan0 └─466 /sbin/dhcpcd -q -w
如果这些服务正在运行,但 RPi 处于降级状态,则表示某些其他服务未能启动。请检查以下各项:
sudo systemctl --failed
您也可以单独查看每项服务:
sudo service mdns status
sudo service otbr-agent status
sudo service otbr-web status
对于大多数平台,otbr-web
默认处于启用状态。如果未安装 otbr-web
,请尝试传递 WEB_GUI
标志:
WEB_GUI=1 ./script/bootstrap
INFRA_IF_NAME=wlan0 WEB_GUI=1 ./script/setup
验证 RCP
验证 RCP 是否处于正确状态:
sudo ot-ctl state
ot-ctl
是随 OTBR 提供的命令行实用程序。它用于与 RCP 设计中 otbr-agent
绑定的线程 PAN 接口(默认为 wpan0
)进行通信。
如果 RCP 成功运行且节点不是线程网络的成员,则输出应类似于以下内容:
disabled
如果输出为 OpenThread daemon is not running
,请按以下步骤进行问题排查:
- 验证边界路由器是否有足够的电量(使用正确的外部交流适配器)。
- 断开 RCP 板与边界路由器平台之间的连接,然后重新连接。
确认存在 RCP 串行设备。例如,如果设备应连接到
/dev/ttyUSB0
:ls /dev/ttyUSB*
/dev/ttyUSB0使用
sudo ot-ctl reset
重置 RCP。
再次使用 sudo ot-ctl state
检查 RCP 状态。