B91 開発ボードと OpenThread を使用して Thread ネットワークを構築する

1. はじめに

26b7f4f6b3ea0700.png

OpenThread は、Thread® ネットワーキング プロトコルのオープンソース実装です。Thread® は、モノのインターネット(IoT)デバイス用に設計された堅牢で安全なワイヤレス メッシュ ネットワーキング プロトコルです。OpenThread は Google の Nest チームによって開発され、オープンソース プロジェクトとしてデベロッパー コミュニティが自由に利用できます。

Thread 仕様は、スマートホームや商業ビルで一般的に見られる、リソースに制約のあるデバイス向けの信頼性、安全性、エネルギー効率に優れたワイヤレス通信プロトコルを確立しています。OpenThread には、IPv6、6LoWPAN、MAC セキュリティを備えた IEEE 802.15.4、メッシュリンクの確立、メッシュ ルーティングなど、Thread 内に完全なネットワーク レイヤ スコープが含まれています。

Telink は OpenThread の実装を Zephyr RTOS に統合し、Telink ハードウェアとのシームレスな互換性を可能にしました。この統合のソースコードは GitHub で簡単にアクセス可能で、ソフトウェア開発キット(SDK)としても提供されています。

この Codelab では、実際のハードウェアで OpenThread をプログラミングし、Thread ネットワークを作成して管理し、ノード間でメッセージを交換します。以下の画像は、この Codelab での OT ボーダー ルーター(OTBR)と 1 つの Thread デバイスを使用したハードウェアのセットアップを示しています。

codelab_overview.png

学習内容

  • Telink Zephyr 開発環境を使用して OpenThread 実装をセットアップするには:
  • OpenThread CLI サンプル(ot-cli-ftdot-rcp)をビルドして、Telink B91 開発ボードに書き込む。
  • Raspberry Pi 3B 以降で Docker を使用して OpenThread ボーダー ルーター(OTBR)をセットアップする方法。
  • OTBR に Thread ネットワークを作成
  • 帯域外デバッグを使用して Thread ネットワークにデバイスを追加する場合
  • CLI を使用して Thread ネットワーク内のノード間の接続を検証すること。

必要なもの

ハードウェア:

  • B91 開発ボード 2 個。
  • Raspbian OS イメージを搭載した Raspberry Pi 3B 以降 1 台。
  • USB ポートが 2 つ以上ある Linux マシン。
  • インターネットに接続されたスイッチ(または Router)と複数のイーサネット ケーブル。

ソフトウェア:

  • Telink Burning and Debug Tool - LinuxBDT
  • PuTTY などのシリアルポート ターミナル ツール
  • Git や West などの他のツール

2. 前提条件

Thread のコンセプトと OpenThread CLI

この Codelab の前に OpenThread Simulation Codelab に目を通し、Thread の基本的なコンセプトと OpenThread CLI を理解しておくことをおすすめします。

Linux マシン

Linux マシン(Ubuntu v20.04 LTS 以降)がビルドマシンとして機能し、Telink Zephyr 開発環境をセットアップし、すべての Thread 開発ボードをフラッシュします。これらのタスクを実行するには、Linux マシンに 2 つの USB ポートとインターネット接続が必要です。

シリアルポート接続および端子

Linux マシンの USB ポートにデバイスを直接接続できます。また、デバイスにアクセスするにはシリアルポート ターミナル ツールが必要です。

この Codelab では、FTD Joiner と Raspberry Pi を制御するために、ターミナル ツール PuTTY を使用します。ここでは使用方法の概要を説明しますが、他の端末ソフトウェアを使用することもできます。

この Codelab には、B91 開発キットの 2 セットが必要です。下の写真は、1 つのセットで最低限必要なコンポーネントを示しています。

overview.png

これらのキットの 1 つは RCP(無線コプロセッサ)として使用され、もう 1 つは FTD(フルスレッド デバイス)として機能します。まだキットをご利用でない場合は、Telink の公式ウェブサイトで詳細をご確認いただけます。使用されるコンポーネントは次のとおりです。

索引

名前

1

Telink B91 開発ボード

2

Telink バーニングボード

3

2.4GHz アンテナ

4

USB ケーブル(USB A - Mini USB)

Raspbian OS イメージ搭載の Raspberry Pi 3B 以上

この Codelab では、Raspbian Bullseye Lite OS イメージを搭載した Raspberry Pi 3B 以降、またはデスクトップ版 Raspbian Bullseye が必要です。イーサネット経由でインターネットに接続され、OpenThread ボーダー ルーター(OTBR)のホストとして構成されます。

ネットワーク接続

インターネットに接続されたスイッチ(またはルーター)と複数のイーサネット ケーブル。これらを使用して Raspberry Pi を Linux マシンに接続し、ホスト経由での Raspberry Pi のユーザー構成を容易にします。

LinuxBDT

Telink の Burning and Debug Tool(BDT)(すべての Telink Chip シリーズに適用可能)を使用すると、OpenThread ファームウェアを消去して Telink B91 開発ボードに書き込むことができます。Linux マシンに X86 ベースの Linux バージョン linuxBDT をインストールします。

その他

  • Telink Zephyr 開発環境を設定するための Git。
  • 西部: Zephyr プロジェクトを管理し、OpenThread バイナリを構築します。

3. ファームウェアをセットアップする

Linux マシンで CLI ターミナルを開き、次のコマンドを実行して APT が最新であることを確認します。

$ sudo apt update
$ sudo apt upgrade

完了したら、次の手順に進みます。

  1. 依存関係をインストールします。
    $ wget https://apt.kitware.com/kitware-archive.sh
    $ sudo bash kitware-archive.sh
    $ sudo apt install --no-install-recommends git cmake ninja-build \
    gperf ccache dfu-util device-tree-compiler python3-dev python3-pip \
    python3-setuptools python3-tk python3-wheel xz-utils file make gcc \
    gcc-multilib g++-multilib libsdl2-dev
    
    Zephyr は現在、CMake(3.20.0)、Python3(3.6)、Devicetree Compiler(1.4.6)など、主要な依存関係の最小バージョンを必要としています。
    $ cmake --version
    $ python3 --version
    $ dtc --version
    
    次の手順に進む前に、システムにインストールされているバージョンを確認してください。バージョンが正しくない場合は、APT ミラーを安定した最新のミラーに切り替えるか、これらの依存関係を手動で更新します。
  2. west.
    $ pip3 install --user -U west
    $ echo 'export PATH=~/.local/bin:"$PATH"' >> ~/.bashrc
    $ source ~/.bashrc
    
    ~/.local/bin$PATH 環境変数に含まれていることを確認します。
  3. Zephyr プロジェクトのソースコードを取得します。
    $ west init ~/zephyrproject
    $ cd ~/zephyrproject
    $ west update
    $ west blobs fetch hal_telink
    $ west zephyr-export
    
  4. Zephyr の追加の Python 依存関係をインストールします。
    $ pip3 install --user -r ~/zephyrproject/zephyr/scripts/requirements.txt
    
  5. Zephyr ツールチェーンをセットアップします。Zephyr ツールチェーン(約 1 ~ 2 GB)をローカル ディレクトリにダウンロードし、ほとんどのボードをフラッシュできるようにします。
    $ wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.1/zephyr-sdk-0.16.1_linux-x86_64.tar.xz
    $ wget -O - https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.1/sha256.sum | shasum --check --ignore-missing
    
    Zephyr SDK をダウンロードし、以下に示すように推奨パスに配置します。
    $HOME/zephyr-sdk[-x.y.z]
    $HOME/.local/zephyr-sdk[-x.y.z]
    $HOME/.local/opt/zephyr-sdk[-x.y.z]
    $HOME/bin/zephyr-sdk[-x.y.z]
    /opt/zephyr-sdk[-x.y.z]
    /usr/zephyr-sdk[-x.y.z]
    /usr/local/zephyr-sdk[-x.y.z]
    
    [-x.y.z] はオプションのテキストです。任意のテキストを指定できます(例: -0.16.1)。SDK のインストール後にこのディレクトリを移動することはできません。その後、Zephyr ツールチェーンをインストールします。
    $ tar xvf zephyr-sdk-0.16.1_linux-x86_64.tar.xz
    $ cd zephyr-sdk-0.16.1
    $ ./setup.sh -t riscv64-zephyr-elf -h -c
    
  6. Hello World サンプルをビルドします。まず、Hello World の例を使用して、公式の Zephyr プロジェクト構成が正しいことを確認してから、カスタム プロジェクトのセットアップに進みます。
    $ cd ~/zephyrproject/zephyr
    $ west build -p auto -b tlsr9518adk80d samples/hello_world
    
    West ビルドコマンドを使用して、Zephyr リポジトリのルート ディレクトリから hello_world サンプルをビルドします。build/zephyr directory の下に zephyr.bin という名前のファームウェアがあります。
  7. Zephyr 環境スクリプトを ~/.bashrc に追加します。次のコマンドを実行します。
    $ echo "source ~/zephyrproject/zephyr/zephyr-env.sh" >> ~/.bashrc
    $ source ~/.bashrc
    
  8. Telink Zephyr リモート リポジトリを追加します。Telink リポジトリを開発ブランチとしてローカルにダウンロードして更新します。
    $ cd ~/zephyrproject/zephyr
    $ git remote add telink-semi https://github.com/telink-semi/zephyr
    $ git fetch telink develop
    $ git checkout develop
    $ west update
    $ west blobs fetch hal_telink
    

詳しくは、Zephyr Doc - Getting Started Guide をご覧ください。

Telink LinuxBDT ツールをダウンロードして、Linux マシンのローカル ディレクトリ(ホーム ディレクトリ ~ など)に解凍します。これにより、ファームウェアを B91 開発ボードにフラッシュできるようになります。

$ cd ~
$ wget http://wiki.telink-semi.cn/tools_and_sdk/Tools/BDT/LinuxBDT.tar.bz2
$ tar -vxf LinuxBDT.tar.bz2 

USB インターフェースを介してバーニング ボードを Linux マシンに接続し、次のコマンドを入力します。

$ cd LinuxBDT
$ sudo ./bdt lsusb -v
Bus 002 Device 001: ID 1d6b:0003 xHCI Host Controller
Bus 001 Device 003: ID 0bda:565a Integrated_Webcam_HD
Bus 001 Device 023: ID 413c:301a Dell MS116 USB Optical Mouse
Bus 001 Device 037: ID 248a:826a Telink Web Debugger v3.6
Bus 001 Device 001: ID 1d6b:0002 xHCI Host Controller

「Telink Web Debugger v3.6」というメッセージが表示された場合は、BDT プログラマーが Linux マシンに正常に接続していることを示します。

ファームウェアのコンパイル

この Codelab では、次の 2 種類の OpenThread ファームウェアをビルドします。

  • ot-cli-ftd,
  • ot-rcp

コンパイル方法は次のとおりです。

  1. 無線共同プロセッサ(ot-rcp
    $ cd ~/zephyrproject
    $ rm -rf build_ot_coprocessor
    $ west build -b tlsr9518adk80d -d build_ot_coprocessor zephyr/samples/net/openthread/coprocessor -- -DDTC_OVERLAY_FILE="usb.overlay" -DOVERLAY_CONFIG=overlay-rcp-usb-telink.conf
    
  2. インタラクティブなコマンドライン(ot-cli-ftd)を備えた、フル機能の Thread デバイス
    $ cd ~/zephyrproject
    $ rm -rf build_ot_cli_ftd
    $ west build -b tlsr9518adk80d -d build_ot_cli_ftd zephyr/samples/net/openthread/cli -- -DOVERLAY_CONFIG=overlay-telink-fixed-mac.conf -DCONFIG_OPENTHREAD_FTD=y
    

ファームウェアフラッシュ

USB ケーブルを使用して、B91 開発ボードを Burning Board に接続します(次の図を参照)。

connection_overview.png

コマンドラインで次のコマンドを実行して、ファームウェアを書き込みます(ot-cli-ftd ファームウェアのフラッシュを例にとります)。

$ cd ~/zephyrproject/build_ot_cli_ftd/zephyr
$ cp zephyr.bin ~/LinuxBDT/bin/ot-cli-ftd.bin
$ cd ~/LinuxBDT
$ sudo ./bdt 9518 ac
 Activate OK!
$ sudo ./bdt 9518 wf 0 -i bin/ot-cli-ftd.bin
 EraseSectorsize...
 Total Time: 2181 ms
 Flash writing...
 [100%][-] [##################################################]
 File Download to Flash at address 0x000000: 491700 bytes
 Total Time: 30087 ms

ot-rcp のフラッシュ メソッドは、基本的に ot-cli-ftd のフラッシュ メソッドと同じです。ただし、ファームウェアのパスと名前には違いがあります。

フラッシュの後、2 台の B91 開発ボードを適宜マークして区別します。ot-cli-ftd でフラッシュするボードに「FTD Joiner」、ボードに ot-rcp で「RCP」というラベルを付けます。

4. FTD 結合デバイス用のシリアル コンソールを構成する

写真のように、FTD Joiner を Linux マシンの USB ポートに直接接続します。

usb_connection.png

FTD Joiner デバイスを Linux マシンに接続した後、PuTTY を開きます。新しい端末を作成し、シリアルポート情報を設定して、シリアルポートを開きます。

uart_console.png

OpenThread コマンドライン リファレンスは、OpenThread CLI リファレンスでご覧いただけます。すべてのコマンドの前に ot を付けるようにしてください。

例:

> ot state
disabled
Done
> ot channel
11
Done
>

5. Raspberry Pi を OpenThread ボーダー ルーターとしてセットアップする

OpenThread ボーダー ルーターは、次の 2 つの主要部分で構成されるデバイスです。

  • Raspberry Pi には、ボーダー ルーター(BR)として動作するために必要なすべてのサービスとファームウェアが含まれています。
  • RCP は Thread の通信を担当します。

無線コプロセッサ(RCP)

ot-rcp ファームウェアをフラッシュするには、ot-cli-ftd ファームウェアのフラッシュ プロセスと同じ手順を行います。次の図に示すように、B91 開発ボードを Raspberry Pi の USB ポートに接続します。

OTBR_overview.png

Raspberry Pi

  1. Raspbian Bullseye Lite OS イメージまたはデスクトップ版 Raspbian Bullseye が SD カードに正しく書き込まれていることを確認します。
  2. SSH 経由で Raspberry Pi に接続するか、Raspbian Desktop で直接操作するかを選択できます。この Codelab では SSH を使用します。
  3. 次のステップで OTBR Docker のインストールに進む前に、まずローカル リポジトリとパッケージ マネージャーを更新してください。
    $ sudo apt-get update
    $ sudp apt-get upgrade
    

Docker のインストール

前のステップでローカル リポジトリとパッケージ マネージャー APT を更新しただけの場合は、Rspberry Pi を再起動して SSH ターミナル ウィンドウを開きます。

  1. Docker をインストールします。
    $ curl -sSL https://get.docker.com | sh
    
  2. 現在のアカウントを Docker グループに配置して権限を付与します。これにより、各コマンドの前に sudo を追加する必要がなくなります。
    $ sudo usermod -aG docker $USER
    
    有効にするには Raspberry Pi を再起動する必要があります。
  3. Docker が起動していない場合は、起動します。
    $ sudo dockerd
    
  4. OTBR ファイアウォール スクリプトは、Docker コンテナ内でルールを生成します。その前に、modprobe を実行して iptables のカーネル モジュールを読み込みます。
    $ sudo modprobe ip6table_filter
    

Docker を構成して実行する

この Codelab では、OTBR Docker イメージを OpenThread Docker Hub から直接 pull します。このイメージは、OpenThread チームによってテストおよび検証されています。

  1. 最新のイメージを pull します。
    $ docker pull openthread/otbr:latest
    
  2. Docker コンテナのイメージリストを確認します。
    $ docker images
    REPOSITORY        TAG       IMAGE ID       CREATED      SIZE
    openthread/otbr   latest    db081f4de15f   6 days ago   766MB
    
  3. /dev を確認して、RCP デバイスのシリアルポート名を判断します。ttyACM0 は、RCP が正しく接続されていることを示します。
    $ ls /dev/tty*
    ...
    /dev/ttyACM0
    ... 
    
  4. OTBR Docker を初めて実行し、RCP のシリアルポート(ttyACM0)を参照します。この OTBR Docker を引き続き使用する場合は、docker start otbr コマンドを使用します。
    $ docker run --name "otbr" --sysctl "net.ipv6.conf.all.disable_ipv6=0 net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1" -p 8080:80 --dns=127.0.0.1 -it --volume /dev/ttyACM0:/dev/ttyACM0 --privileged openthread/otbr --radio-url spinel+hdlc+uart:///dev/ttyACM0
    
  5. 新しい SSH ターミナル ウィンドウを開き、Raspberry Pi と RCP の間の接続をテストします。
    $ docker exec -ti otbr sh -c "sudo ot-ctl"
    > state 
    disabled
    Done
    

オプションの Docker コマンド:

  • 実行中の Docker コンテナに関する情報を取得します。
    $ docker ps -aq
    
  • OTBR Docker を停止します。
    $ docker stop otbr
    
  • OTBR Docker を削除します。
    $ docker rm otbr
    
  • OTBR Docker を再読み込みします。
    $ docker restart otbr
    

この時点で FTD Joiner デバイスと OTBR の準備ができたので、次のステップに進んで Thread ネットワークを構築できます。

6. Thread ネットワークを作成する

RCP で Thread ネットワークを作成する

OTBR で ot-ctl シェルを使用して、Thread ネットワークを確立します。前のセクションでシェルを終了した場合は、SSH ターミナルで次のコマンドを入力して再起動します。

$ docker exec -ti otbr sh -c "sudo ot-ctl"

次に、表に記載されている順序でコマンドを入力し、各ステップで期待される結果が得られていることを確認してから次のステップに進みます。

索引

コマンド

はじめに

想定されるレスポンス

1

dataset init new

新しいランダム ネットワーク データセットを作成する。

完了

2

dataset commit active

新しいデータセットを不揮発性ストレージのアクティブ運用データセットに commit します。

完了

3

ifconfig up

IPv6 インターフェースを起動します。

完了

4

thread start

Thread プロトコル オペレーションを有効にして、Thread ネットワークに接続します。

完了

スレッド インターフェースが動作するまで 10 秒待ちます。

5

state

デバイスの状態を確認します。リーダーになって次のステップに進むまで、このコマンドを複数回呼び出すことができます。

リーダー
完了

6

dataset active

完全なアクティブ オペレーション データセットを確認し、ネットワーク キーを記録します。

アクティブなタイムスタンプ: 1
チャネル: 13
チャンネル マスク: 0x07fff800
外部 PAN ID: b07476e168eda4fc
メッシュ ローカル接頭辞: fd8c:60bc:a98:c7ba::/64
ネットワーク キー: c31248518799afdNetwork5




ネットワーク作成時に OTBR によってランダムに生成されたネットワーク キーは、ot-cli-ftd デバイスがこの Thread ネットワークに接続する際に使用されます。

帯域外コミッショニングで FTD Joiner を Thread に追加する

帯域外のコミッショニングとは、ワイヤレス以外の方法(OpenThread CLI への手動入力など)を使用して、ネットワークへの参加を待機しているデバイスへのネットワーク認証情報の送信を指します。シリアル コンソールで、以下のコマンドを順番に FTD Joiner に入力します。

索引

コマンド

はじめに

想定されるレスポンス

1

ot dataset networkkey c312485187484ceb5992d2343baaf93d

デバイスを Thread ネットワークに接続するために必要なのは、ネットワーク キーのみです。

完了

2

ot dataset commit active

新しいデータセットを不揮発性ストレージのアクティブ運用データセットに commit します。

完了

3

ot ifconfig up

IPv6 インターフェースを起動します。

完了

4

ot thread start

Thread プロトコル オペレーションを有効にして、Thread ネットワークに接続します。

完了

デバイスが参加して設定されるまで 20 秒ほど待ちます。

5

ot state

デバイスの状態を確認します。

子/ルーター
完了

トポロジ

SSH ターミナルに ipaddrchild tablerouter table などのコマンドを入力し、次のコード スニペットのようなレスポンスを取得します。

> ipaddr rloc
fd8c:60bc:a98:c7ba:0:ff:fe00:b000
Done
> child table
| ID  | RLOC16 | Timeout    | Age        | LQ In | C_VN |R|D|N|Ver|CSL|QMsgCnt|Suprvsn| Extended MAC     |
+-----+--------+------------+------------+-------+------+-+-+-+---+---+-------+-------+------------------+
|   1 | 0xb001 |        240 |         23 |     3 |   51 |1|1|1|  3| 0 |     0 |   129 | 82bc12fbe783468e |

Done
> router table
| ID | RLOC16 | Next Hop | Path Cost | LQ In | LQ Out | Age | Extended MAC     | Link |
+----+--------+----------+-----------+-------+--------+-----+------------------+------+
| 44 | 0xb000 |       63 |         0 |     0 |      0 |   0 | 7ae354109d611f7e |    0 |

Done
...
> child table
| ID  | RLOC16 | Timeout    | Age        | LQ In | C_VN |R|D|N|Ver|CSL|QMsgCnt|Suprvsn| Extended MAC     |
+-----+--------+------------+------------+-------+------+-+-+-+---+---+-------+-------+------------------+

Done
> router table
| ID | RLOC16 | Next Hop | Path Cost | LQ In | LQ Out | Age | Extended MAC     | Link |
+----+--------+----------+-----------+-------+--------+-----+------------------+------+
| 33 | 0x8400 |       63 |         0 |     3 |      3 |  13 | e61487c1cda940a6 |    1 |
| 44 | 0xb000 |       63 |         0 |     0 |      0 |   0 | 7ae354109d611f7e |    0 |

Done

OTBR の RLOC160xb000 で、FTD Joiner の RLOC16 は最初は 0xb001 です。Router ID を取得すると、FTD Joiner の RLOC160x8400 になります。FTD Joiner が子からルーターにアップグレードされたことがわかります。

現在の Thread ネットワークには 2 つのノードがあり、そのトポロジは次の図のようになります。

topology.png

7. Thread デバイス間の通信

ICMPv6 通信

ping コマンドを使用して、同じネットワーク内の Thread デバイス同士が通信できるかどうかを確認します。まず、ipaddr コマンドを使用してデバイスの RLOC を取得します。

> ipaddr
fd8c:60bc:a98:c7ba:0:ff:fe00:fc11
fdbd:7274:649c:1:1d19:9613:f705:a5af
fd8c:60bc:a98:c7ba:0:ff:fe00:fc10
fd8c:60bc:a98:c7ba:0:ff:fe00:fc38
fd8c:60bc:a98:c7ba:0:ff:fe00:fc00
fd8c:60bc:a98:c7ba:0:ff:fe00:b000       # Routing Locator (RLOC)
fd8c:60bc:a98:c7ba:5249:34ab:26d1:aff6
fe80:0:0:0:78e3:5410:9d61:1f7e
Done

FTD Joiner のシリアル コンソールに次のコマンドを入力して、ping オペレーションを実行します。

> ot ping fd8c:60bc:a98:c7ba:0:ff:fe00:b000
16 bytes from fd8c:60bc:a98:c7ba:0:ff:fe00:b000: icmp_seq=1 hlim=64 time=19ms
1 packets transmitted, 1 packets received. Packet loss = 0.0%. Round-trip min/avg/max = 19/19.0/19 ms.
Done

シリアルポートの出力レスポンスは、OTBR 側が ping リクエストを受信し、FTD Joiner が OTBR から返された ping 応答を受信したことを示します。2 つのデバイス間の通信が成功しています。

UDP 通信

OpenThread が提供するアプリケーション サービスには UDP も含まれています。UDP API を使用すると、Thread ネットワーク内のノード間で情報を渡すことができます。また、ボーダー ルーターを介して外部ネットワークに情報を渡すことができます。OpenThread の UDP API の詳細については、OpenThread CLI - UDP の例をご覧ください。この Codelab では、いくつかの API を使用して、OTBR と FTD Joiner の間で情報を送信します。

まず、OTBR のメッシュローカル EID を取得します。このアドレスは Thread デバイスの IPv6 アドレスの一つでもあり、同じ Thread ネットワーク パーティション内の Thread デバイスへのアクセスに使用できます。

> ipaddr mleid
fd8c:60bc:a98:c7ba:5249:34ab:26d1:aff6
Done

SSH ターミナルで次のコマンドを入力して、OTBR UDP を有効にしてデバイスの 1022 ポートをバインドします。

> udp open
Done
> udp bind :: 1022
Done

シリアル コンソールで次のコマンドを入力し、FTD Joiner の UDP を有効にします。デバイスの 1022 ポートをバインドし、5 バイトの hello メッセージを OTBR に送信します。

> ot udp open 
Done
> ot udp bind :: 1022
Done
> ot udp send fd8c:60bc:a98:c7ba:5249:34ab:26d1:aff6 1022 hello
Done

SSH ターミナルから次の情報が出力されます。OTBR が FTD Joiner から hello メッセージを受信します。これは、UDP 通信が成功したことを意味します。

> 5 bytes from fd8c:60bc:a98:c7ba:9386:63cf:19d7:5a61 1022 hello

8. 完了

シンプルな Thread ネットワークを作成し、このネットワーク内の通信を検証しました。

ここまでの説明で、次の点について学びました。

  • Telink Zephyr 開発環境を構築して使用する方法。
  • ot-cli-ftd バイナリと ot-rcp バイナリをビルドし、Telink B91 開発ボードに書き込む方法。
  • Docker を使用して Raspberry Pi 3B 以降のバージョンを OpenThread ボーダー ルーター(OTBR)として設定する方法。
  • OTBR で Thread ネットワークを作成する方法
  • 帯域外コミッショニングで Thread ネットワークにデバイスを追加する方法
  • Thread ネットワーク内のノード間の接続を検証する方法。

関連情報

openthread.ioGitHub で、以下を含むさまざまな OpenThread リソースをご確認ください。

リファレンス ドキュメント: