1. はじめに
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 デバイスを使用したハードウェアのセットアップを示しています。
学習内容
- Telink Zephyr 開発環境を使用して OpenThread 実装をセットアップするには:
- OpenThread CLI サンプル(
ot-cli-ftd
とot-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 を使用します。ここでは使用方法の概要を説明しますが、他の端末ソフトウェアを使用することもできます。
Telink B91 開発キット
この Codelab には、B91 開発キットの 2 セットが必要です。下の写真は、1 つのセットで最低限必要なコンポーネントを示しています。
これらのキットの 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. ファームウェアをセットアップする
Telink Zephyr 開発環境の設定
Linux マシンで CLI ターミナルを開き、次のコマンドを実行して APT が最新であることを確認します。
$ sudo apt update $ sudo apt upgrade
完了したら、次の手順に進みます。
- 依存関係をインストールします。
$ 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 ミラーを安定した最新のミラーに切り替えるか、これらの依存関係を手動で更新します。 - west.
$ pip3 install --user -U west $ echo 'export PATH=~/.local/bin:"$PATH"' >> ~/.bashrc $ source ~/.bashrc
~/.local/bin
が$PATH
環境変数に含まれていることを確認します。 - Zephyr プロジェクトのソースコードを取得します。
$ west init ~/zephyrproject $ cd ~/zephyrproject $ west update $ west blobs fetch hal_telink $ west zephyr-export
- Zephyr の追加の Python 依存関係をインストールします。
$ pip3 install --user -r ~/zephyrproject/zephyr/scripts/requirements.txt
- 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
- 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
という名前のファームウェアがあります。 - Zephyr 環境スクリプトを
~/.bashrc
に追加します。次のコマンドを実行します。$ echo "source ~/zephyrproject/zephyr/zephyr-env.sh" >> ~/.bashrc $ source ~/.bashrc
- 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 をセットアップする
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
。
コンパイル方法は次のとおりです。
- 無線共同プロセッサ(
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
- インタラクティブなコマンドライン(
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 に接続します(次の図を参照)。
コマンドラインで次のコマンドを実行して、ファームウェアを書き込みます(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 ポートに直接接続します。
FTD Joiner デバイスを Linux マシンに接続した後、PuTTY を開きます。新しい端末を作成し、シリアルポート情報を設定して、シリアルポートを開きます。
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 ポートに接続します。
Raspberry Pi
- Raspbian Bullseye Lite OS イメージまたはデスクトップ版 Raspbian Bullseye が SD カードに正しく書き込まれていることを確認します。
- SSH 経由で Raspberry Pi に接続するか、Raspbian Desktop で直接操作するかを選択できます。この Codelab では SSH を使用します。
- 次のステップで OTBR Docker のインストールに進む前に、まずローカル リポジトリとパッケージ マネージャーを更新してください。
$ sudo apt-get update $ sudp apt-get upgrade
Docker のインストール
前のステップでローカル リポジトリとパッケージ マネージャー APT を更新しただけの場合は、Rspberry Pi を再起動して SSH ターミナル ウィンドウを開きます。
- Docker をインストールします。
$ curl -sSL https://get.docker.com | sh
- 現在のアカウントを Docker グループに配置して権限を付与します。これにより、各コマンドの前に
sudo
を追加する必要がなくなります。$ sudo usermod -aG docker $USER
有効にするには Raspberry Pi を再起動する必要があります。 - Docker が起動していない場合は、起動します。
$ sudo dockerd
- OTBR ファイアウォール スクリプトは、Docker コンテナ内でルールを生成します。その前に、
modprobe
を実行して iptables のカーネル モジュールを読み込みます。$ sudo modprobe ip6table_filter
Docker を構成して実行する
この Codelab では、OTBR Docker イメージを OpenThread Docker Hub から直接 pull します。このイメージは、OpenThread チームによってテストおよび検証されています。
- 最新のイメージを pull します。
$ docker pull openthread/otbr:latest
- Docker コンテナのイメージリストを確認します。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE openthread/otbr latest db081f4de15f 6 days ago 766MB
/dev
を確認して、RCP デバイスのシリアルポート名を判断します。ttyACM0
は、RCP が正しく接続されていることを示します。$ ls /dev/tty* ... /dev/ttyACM0 ...
- 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
- 新しい 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 |
| 新しいランダム ネットワーク データセットを作成する。 | 完了 | ||
2 |
| 新しいデータセットを不揮発性ストレージのアクティブ運用データセットに commit します。 | 完了 | ||
3 |
| IPv6 インターフェースを起動します。 | 完了 | ||
4 |
| Thread プロトコル オペレーションを有効にして、Thread ネットワークに接続します。 | 完了 | ||
スレッド インターフェースが動作するまで 10 秒待ちます。 | |||||
5 |
| デバイスの状態を確認します。リーダーになって次のステップに進むまで、このコマンドを複数回呼び出すことができます。 | リーダー | ||
6 |
| 完全なアクティブ オペレーション データセットを確認し、ネットワーク キーを記録します。 | アクティブなタイムスタンプ: 1 |
ネットワーク作成時に OTBR によってランダムに生成されたネットワーク キーは、ot-cli-ftd
デバイスがこの Thread ネットワークに接続する際に使用されます。
帯域外コミッショニングで FTD Joiner を Thread に追加する
帯域外のコミッショニングとは、ワイヤレス以外の方法(OpenThread CLI への手動入力など)を使用して、ネットワークへの参加を待機しているデバイスへのネットワーク認証情報の送信を指します。シリアル コンソールで、以下のコマンドを順番に FTD Joiner に入力します。
索引 | コマンド | はじめに | 想定されるレスポンス | ||
1 |
| デバイスを Thread ネットワークに接続するために必要なのは、ネットワーク キーのみです。 | 完了 | ||
2 |
| 新しいデータセットを不揮発性ストレージのアクティブ運用データセットに commit します。 | 完了 | ||
3 |
| IPv6 インターフェースを起動します。 | 完了 | ||
4 |
| Thread プロトコル オペレーションを有効にして、Thread ネットワークに接続します。 | 完了 | ||
デバイスが参加して設定されるまで 20 秒ほど待ちます。 | |||||
5 |
| デバイスの状態を確認します。 | 子/ルーター |
トポロジ
SSH ターミナルに ipaddr
、child table
、router 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 の RLOC16
は 0xb000
で、FTD Joiner の RLOC16
は最初は 0xb001
です。Router ID を取得すると、FTD Joiner の RLOC16
は 0x8400
になります。FTD Joiner が子からルーターにアップグレードされたことがわかります。
現在の Thread ネットワークには 2 つのノードがあり、そのトポロジは次の図のようになります。
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.io と GitHub で、以下を含むさまざまな OpenThread リソースをご確認ください。
- 対応プラットフォーム - OpenThread をサポートするすべてのプラットフォームを確認する
- OpenThread をビルドする - OpenThread のビルドと構成に関する詳細
- Thread Primer - この Codelab で取り上げる Thread のコンセプトをすべてカバーしています。
リファレンス ドキュメント: