OpenThread 边界路由器构建和配置

<ph type="x-smartling-placeholder"></ph> 在 GitHub 上查看源代码

本指南介绍了 OpenThread 边界路由器的基本构建和配置 (OTBR)。完成此流程后,您将得到可以正常运行的 OTBR 以 RCP 设计的形式实现全线程设备 (FTD)。

配置平台

配置支持的硬件平台:

构建并刷写 RCP

OTBR 基于 RCP 设计运行。选择一个受支持的 OpenThread 平台作为 RCP, 适用于该平台的相关说明。

有关构建 OpenThread 的概述,请参阅 制作指南

有关使用 GNU Autotools 构建受支持平台的具体说明, 可在每个样本的 platform 文件夹

安装 OTBR

OTBR 通过尖峰与 RCP 进行通信。要在配置的 请完成以下步骤。

克隆 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 接口名称“Ethernet” 或 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 的 Thread PAN 接口(默认为 wpan0)进行通信 这一点非常重要

RCP 成功运行且节点不是线程的成员 输出应类似于以下内容:

disabled

如果输出为 OpenThread daemon is not running,请使用以下代码进行问题排查:

  1. 验证边界路由器是否有足够的电力(使用正确的外部交流电流) 适配器)。
  2. 断开 RCP 板与边界路由器平台的连接,然后重新连接。
  3. 验证 RCP 串行设备是否存在。例如,如果设备 应附加到 /dev/ttyUSB0

    ls /dev/ttyUSB*
    /dev/ttyUSB0
    
  4. 使用 sudo ot-ctl reset 重置 RCP。

使用 sudo ot-ctl state 再次检查 RCP 状态。