OpenThread ボーダー ルーターの構築と構成

GitHub でソースを見る

このガイドでは、OpenThread ボーダー ルーター(OTBR)の基本的なビルドと構成について説明します。この手順を完了すると、RCP 設計でフルスレッド デバイス(FTD)として機能する OTBR が作成されます。

プラットフォームの構成

サポートされているハードウェア プラットフォームを構成します。

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 を使用する(省略可):

    NETWORK_MANAGER=1 NETWORK_MANAGER_WIFI=1 ./script/setup
    

RCP デバイスの接続と構成

フラッシュされた RCP デバイスを USB 経由で Border Router プラットフォームに接続します。

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 の場合は、次のトラブルシューティングを行います。

  1. ボーダー ルーターに十分な電力が供給されていることを確認します(適切な外部 AC アダプターを使用します)。
  2. RCP ボードをボーダー ルーター プラットフォームから取り外して再接続します。
  3. RCP シリアル デバイスが存在することを確認します。たとえば、デバイスを /dev/ttyUSB0 に接続する必要がある場合は、次のようにします。

    ls /dev/ttyUSB*
    /dev/ttyUSB0
    
  4. sudo ot-ctl reset で RCP をリセットします。

sudo ot-ctl state で、RCP のステータスを再度確認します。