OpenThread ボーダー ルーターのビルドと構成

GitHub でソースを見る

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

プラットフォームを構成する

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

RCP をビルドしてフラッシュする

OTBR は RCP 設計で実行されます。RCP として使用するサポートされている OpenThread プラットフォームを選択し、そのプラットフォームのビルドと書き込みの手順に沿って操作します。

OpenThread のビルドの概要については、ビルドガイドをご覧ください。

GNU Autotools でサポートされているプラットフォームをビルドする具体的な手順については、各サンプルのプラットフォーム フォルダをご覧ください。

OTBR をインストールする

OTBR は、Spinel を介して 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 デバイスの接続と設定

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

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 に付属するコマンドライン ユーティリティです。これは、RCP 設計で otbr-agent がバインドされている Thread PAN インターフェース(デフォルトは wpan0)と通信するために使用されます。

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 のステータスを再度確認してください。