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

1. はじめに

26b7f4f6b3ea0700.png

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

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

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

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

codelab_overview.png

学習内容

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

必要なもの

ハードウェア:

  • 2 つの B91 開発ボード。
  • Raspbian OS Image を含む 1 台の Raspberry Pi 3B 以上。
  • USB ポートが 2 つ以上ある Linux マシン。
  • インターネットに接続されたスイッチ(ルーター)と数本のイーサネット ケーブル。

ソフトウェア:

  • Telink 書き込みおよびデバッグツール - LinuxBDT。
  • シリアルポート ターミナル ツール(PuTTY など)。
  • その他のツール(Git、West など)

2. 前提条件

Thread のコンセプトと OpenThread CLI

この Codelab の前に OpenThread シミュレーションの Codelab を受講し、Thread の基本的なコンセプトと OpenThread CLI について理解を深めておくと役立ちます。

Linux マシン

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

シリアルポート接続と端子

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

この Codelab では、ターミナル ツール PuTTY を使用して FTD Joiner と Raspberry Pi を制御します。概要を示しますが、他のターミナル ソフトウェアを使用することもできます。

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

overview.png

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

インデックス

名前

1

Telink B91 開発ボード

2

Telink バーニングボード

3

2.4GHz アンテナ

4

USB ケーブル(USB A - ミニ USB)

Raspberry Pi 3B 以降と Raspbian OS イメージ

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

ネットワーク接続

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

LinuxBDT

Telink のバーニングおよびデバッグツール(BDT)は、すべての Telink Chip シリーズに適用され、OpenThread ファームウェアを消去して Telink B91 開発ボードに書き込むことができます。Linux マシンに X86 ベースの Linux バージョン linuxBDT をインストールします。

その他

  • Git: Telink Zephyr 開発環境をセットアップします。
  • West。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 build コマンドを使用して、Zephyr リポジトリのルート ディレクトリから hello_world サンプルをビルドします。zephyr.bin という名前のファームウェアは build/zephyr directory にあります。
  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 – スタートガイドをご覧ください。

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 マシンに Burning Board を接続し、次のコマンドを入力します。

$ 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
    $ 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 開発ボードを書き込みボードに接続します。

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」というラベルを付けます。ボードに「RCP」として ot-rcp がフラッシュされます。

4. FTD Joiner デバイスのシリアル コンソールを設定する

図に示すように、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 はスレッド通信を担当します。

無線コプロセッサ(RCP)

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

OTBR_overview.png

Raspberry Pi

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

Docker のインストール

前の手順でローカル リポジトリとパッケージ管理システムの APT を更新しただけの場合は、Raspberry 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

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

leader
Done

6

dataset active

アクティブな運用データセット全体を確認し、ネットワークキーを記録します。

アクティブ タイムスタンプ: 1
チャネル: 13 アクティブ タイムスタンプ: 1
チャネル: 13
9c 9 d8c:60 9c:60b8c:60bc:60bc:a98:c7ba:::/64 60bc:60bc:a98:c7ba:::/64
メッシュ ローカル プレフィックス: fd8c:60bc:a98:c7ba:::/64
メッシュ ローカル プレフィックス: fd8c:60bc:a98:c7ba:::/64./64
ネットワーク キー: c312488518579484c312488518579484c



ネットワーク作成中に 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

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

お子様/ルーター
完了

トポロジ

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

> 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 の初期の RLOC160xb001 です。この場合、ルーター 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 アドレスの 1 つでもあり、同じ 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 リソースについて詳しくは、openthread.ioGitHub をご覧ください。

参照ドキュメント: