本指南将介绍 OpenThread 边界路由器 (OTBR) 的基本构建和配置。完成此过程后,您将有一个 OTBR,在 RCP 设计中用作全线程设备 (FTD)。
配置平台
配置受支持的硬件平台:
构建并刷写 RCP
OTBR 采用 RCP 设计。选择要用作 RCP 的受支持的 OpenThread 平台,并按照该平台的构建和刷写说明执行操作。
如需简要了解如何构建 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 一起提供的命令行实用程序。它用于与 otbr-agent
在 RCP 设计中绑定的线程 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 状态。