Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。

OpenThread 境界ルーターのビルドと構成

GitHub でソースを見る

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

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

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

RCP の作成とフラッシュ

OTBR は RCP 設計で実行されます。RCP として使用するサポートされている OpenThread プラットフォームを選択し、そのプラットフォームのビルドとフラッシュの手順を行います。

OpenThread のビルドの概要については、Build Guide を参照してください。

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

    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 経由で 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 が de 化状態になった場合、他のサービスを開始できない可能性があります。以下の項目をご確認ください。

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. Border Router プラットフォームに RCP ボードを取り外して再接続します。
  3. RCP シリアル デバイスが存在することを確認します。たとえば、デバイスを /dev/ttyUSB0 にアタッチする必要がある場合は、次のようにします。

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

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