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

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

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

GitHub でソースを見る

このガイドでは、OpenThread Border Router(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(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 BlackNetwork 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 が正常に実行されていて、ノードが Thread ネットワークのメンバーでない場合、出力は次のようになります。

disabled

出力が OpenThread daemon is not running の場合は、以下を使用してトラブルシューティングします。

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

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

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