OpenThread 邊界路由器建構與設定

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

前往 GitHub 查看原始碼

本指南涵蓋 OpenThread Border Router (OTBR) 的基本建構與設定。完成這項程序後,您會使用 OTBR,做為 RCP 設計中的完整執行緒裝置 (FTD)。

設定平台

設定支援的硬體平台:

建構及執行 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 的指令列公用程式。用於與 Thread PAN 介面 (預設為 wpan0) 相互通訊,而 otbr-agent

如果 RCP 成功執行,且節點不是 Thread 網路的成員,輸出應如下所示:

disabled

如果輸出結果是 OpenThread daemon is not running,請使用以下方式進行疑難排解:

  1. 確認邊界路由器的電力充足 (使用適當的外部 AC 變壓器)。
  2. 中斷 RCP 板連線,然後重新連線到邊界路由器平台。
  3. 確認 RCP 序列裝置確實存在。舉例來說,如果裝置應附加到 /dev/ttyUSB0

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

再次使用 sudo ot-ctl state 檢查 RCP 狀態。