本指南介绍了 OpenThread Border Router (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
使用 Network Manager 的 BeagleBone Black(可选):
cd ot-br-posix
NETWORK_MANAGER=1 NETWORK_MANAGER_WIFI=1 ./script/bootstrap
编译并安装 OTBR
默认用法。默认情况下,设置脚本会启用边界路由。如需启用边界路由,请指定平台的以太网或 Wi-Fi 接口:
使用以太网:
INFRA_IF_NAME=eth0 ./script/setup
使用 WLAN:
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
配置文件包含线程接口名称、以太网或 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
配置文件。例如,对于 WLAN 接口和串行端口名称 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 状态。