本指南將介紹 OpenThread Border Router (OTBR) 的基本建構和設定。完成這個程序後,您將擁有一個 OTBR,可在 RCP 設計中充當 Full Thread Device (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 的指令列公用程式。用於與 otbr-agent
繫結至 RCP 設計中的 Thread PAN 介面 (預設為 wpan0
) 通訊。
如果 RCP 成功執行,且節點並非 Thread 網路的成員,輸出內容應該會與以下類似:
disabled
如果輸出結果是 OpenThread daemon is not running
,請按照以下步驟進行疑難排解:
- 確認邊界路由器有足夠的電力 (使用適當的外部 AC 變壓器)。
- 中斷 RCP 遊戲板並重新連接至邊界路由器平台。
確認 RCP 序列裝置是否存在。舉例來說,如果裝置應連結至
/dev/ttyUSB0
:ls /dev/ttyUSB*
/dev/ttyUSB0使用
sudo ot-ctl reset
重設 RCP。
請再次使用 sudo ot-ctl state
檢查 RCP 狀態。