1. Einführung
OpenThread (OT) von Google ist eine Open-Source-Implementierung von Thread. Google hat OpenThread veröffentlicht, um die in den Google Nest-Produkten verwendete Netzwerktechnologie Entwicklern mehr zugänglich zu machen und so die Entwicklung von Produkten für Smart Home- und Geschäftsgebäude zu beschleunigen. Mit einer schmalen Plattform-Abstraktionsebene und einem geringen Speicherbedarf ist OpenThread sehr portabel. Es unterstützt sowohl System-on-Chip- (SoC) als auch Netzwerk-Co-Prozessor-Designs (NCP).
Die Thread-Spezifikation definiert ein IPv6-basiertes, zuverlässiges, sicheres und energiesparendes Kommunikationsprotokoll für drahtlose Geräte-zu-Gerät-Verbindungen für Heim- und Gewerbebauanwendungen.
Silicon Labs hat OpenThread verbessert, damit es mit Silicon Labs-Hardware funktioniert. Dieser Quellcode ist auf GitHub verfügbar und auch als Software Development Kit (SDK) verfügbar, das mit Simplicity Studio 5 (SSv5) installiert wird. Das SDK enthält einen vollständig getesteten Snapshot des GitHub-Quellcodes. Sie unterstützt eine größere Bandbreite an Hardware als die GitHub-Version und umfasst Dokumentation und Beispielanwendungen, die nicht auf GitHub verfügbar sind.
In diesem Handbuch werden die ersten Schritte zur Entwicklung von OpenThread-Anwendungen mit dem Silicon Labs OpenThread SDK und Simplicity Studio 5 beschrieben. Die folgende Abbildung zeigt die Boards (BRDs) und die Hardware, die mit einem OT-Border-Router (OTBR) und zwei Thread-Geräten im Codelab eingerichtet wurden.
Lerninhalte
- So erstellen Sie ein OpenThread-Projekt mit der Silicon Labs Simplicity Studio IDE.
- Anleitung zum Erstellen und Flashen von OpenThread-CLI-Binärdateien in Silicon Labs-Radioboards
- Hier erfahren Sie, wie Sie einen Raspberry Pi 3B oder höher als OpenThread-Border-Router (OTBR) mit Docker einrichten.
- Thread-Netzwerk im OTBR erstellen
- Out-of-Band-Inbetriebnahme von Geräten in einem Thread-Netzwerk.
- Thread-Kommunikation zwischen den Knoten mit dem Ping-Befehl prüfen
2. Vorbereitung
Hardware:
- 3 EFR32MGxx-Funkkarten – eine beliebige Kombination dieser Geräte kann verwendet werden. In diesem Codelab werden ein BRD4166A als RCP und zwei BRD4168As als Full-Thread-Geräte verwendet.
- EFR32MG12 (BRD4161A, BRD4166A, BRD4170A, BRD4304A)
- EFR32MG13 (BRD4168A)
- EFR32MG21 (BRD4180A, BRD4180B)
- BRD4001A: Wireless Starter Main Boards (WSTK) zum Hosten der Funkplatinen. Mit Ausnahme von BRD4166A benötigen alle Funkplatinen jeweils eine Starter-Hauptplatine. Mini-USB-Kabel zum Anschluss und zur Stromversorgung der Hauptplatinen oder des Micro-USB-Kabels für BRD4166A.
- Ein Raspberry Pi 3B oder höher mit Raspbian Stretch Lite OS-Image oder Raspbian Stretch mit Desktop, das über Ethernet mit dem Internet verbunden ist. Wir konfigurieren diesen als OT-Border-Router.
- Ein Windows-/Linux-/Mac-Hostsystem mit mindestens 2 USB-Ports und einer Internetverbindung Prüfen Sie die Hardware- und Betriebssystemanforderungen unter SSv5.
- Mindestens ein Ethernetkabel für die Verbindung des Raspberry Pi mit dem Internet. Die WSTKs unterstützen auch Debugging und Flashen über IP. Sie können also optional zusätzliche Ethernetkabel verwenden, um das WSTK über einen Ethernet-Switch mit Ihrem Hostsystem zu verbinden.
Software:
- Installation und Aktualisierung von Studio v5 auf dem Windows-/Linux-/Mac-Hostsystem mit
- GNU ARM-Toolchain
- Gecko SDK Suite 3.2.0 oder höher und Silicon Labs OpenThread SDK.
3. Hardware einrichten
Dieses Codelab wurde mit erstellt
- EFR32MG12 BRD4166A Thunderboard Sense 2 wie links abgebildet.
- Zwei EFR32MG13 BRD4168A wie rechts abgebildet.
- Simplizity Studio v5 auf macOS Catalina 10.15.7 mit
- installiert
- Gecko SDK 3.2.0
- GNU ARM Version 7.2.1
Verbinden Sie die Hauptplatinen des Wireless Starter Kit über USB mit dem Hostcomputer, wie in der Abbildung unten gezeigt. Diese Verbindungen ermöglichen die Programmierung und Netzwerkanalyse des RCP und der Endgeräte. Zuerst verwenden wir den Hostcomputer, um den BRD4166A mit der ot-rcp-Firmware zu programmieren, und verbinden ihn schließlich mit dem Raspberry Pi. Optional können Endgeräte über einen gemeinsamen Ethernet-Switch mit dem Hostcomputer verbunden werden. Die Starter Kits unterstützen auch die Programmierung und Netzwerkanalyse über IPv4.
4. Firmware eingerichtet
Dafür gibt es zwei Möglichkeiten: Mit beiden Optionen können Sie die für dieses Codelab erforderlichen Firmwares flashen.
- Projekte: (Empfohlen) Erstellen, erstellen und flashen Sie eine Beispielanwendung. Mit dieser Option können Sie die Anwendung im Projekt anpassen.ODER
- Demos (optional): Hiermit können Sie die vordefinierten Demos für beliebige Beispielanwendungen direkt auf der Funkplatine blinken. Nutzern wird empfohlen, die Einrichtung der Demos-Firmware als optionale Übung auszuprobieren. Weitere Informationen finden Sie unter „Optionale Firmware-Einrichtung – Demos“. am Ende dieses Codelabs.
In diesem Codelab verwenden wir die projektbasierte Methode.
Projekte mit Beispielen erstellen
Wir werden zwei Projekte erstellen. Das Projekt ot-rcp
für BRD4166A und das Projekt ot-cli-ftd
für die beiden BRD4168A. Führen Sie diese Schritte aus und wählen Sie die passende Beispielanwendung für Ihr Board aus.
- Öffnen Sie in Studio das Menü Datei und wählen Sie Neu > Silicon Labs-Projektassistent. Das Dialogfeld für die Auswahl von Ziel, SDK und Toolchain wird geöffnet. Ändern Sie nicht die standardmäßige IDE / GNU-Toolchain, die von OpenThread unterstützt wird. Klicken Sie auf „Weiter“.
- Ziel-Boards: Zeigt die ausgewählte Funkkarte (BRD4168A) zusammen mit der Hauptplatine (BRD4001A) an
- Zielgerät: In diesem Feld wird der integrierte Mikrocontroller (MCU) angezeigt. Das BRD4168A hat einen EFR32MG13-MCU.
- SDK: Hier können Sie die SDK-Version von OT auswählen, mit der Sie arbeiten. Zu den Suite-Informationen gehören das SDK-Tag und der Silicon Labs-Build von OpenThread, z. B.
Platform 4.0.1.0
undOpenThread 2.0.1.0 (GitHub-55af6ce2c)
. - IDE/ Toolchain: Die Toolchain, die zum Kompilieren des OT-Projekts verwendet wird. Wir verwenden GNU ARM.
- Das Dialogfeld „Beispielprojektauswahl“ wird geöffnet. Sie sehen nun eine Liste mit Beispielprojekten. Verwenden Sie den Technologietyp Thread und Schlüsselwortfilter, um nach einem bestimmten Beispiel zu suchen. Notieren Sie sich die Versionsnummer der Gecko SDK Suite. Sie benötigen dieses Versions-Tag, wenn Sie den Raspberry Pi als Border-Router einrichten. Wählen Sie ot-cli-ftd aus und klicken Sie auf WEITER.
- Das Dialogfeld „Projektkonfiguration“ wird geöffnet. Hier können Sie Ihr Projekt umbenennen, den Speicherort der Standard-Projektdatei ändern und festlegen, ob Sie Projektdateien verknüpfen oder kopieren möchten. Verknüpfte Projektdateien verweisen auf das SDK. Alle Änderungen, die Sie vornehmen, werden im SDK vorgenommen und für zukünftige Projekte verwendet. Durch das Kopieren von Projektquellen können Sie eine projektlokale Kopie bearbeiten, sodass SDK-Dateien intakt bleiben. SDK verknüpfen und Projektquellen kopieren ist die Standardeinstellung und wird empfohlen. Klicken Sie auf FINISH (Fertigstellen).
- Die IDE-Perspektive „Einfachheit“ wird geöffnet und der Projektkonfigurator ist auf dem Tab ÜBERSICHT geöffnet.
Das Projekt wird über den Tab Software Components konfiguriert. Dazu werden Komponenten installiert und deinstalliert und installierte Komponenten konfiguriert. Installierte Komponenten sind geprüft. Klicken Sie auf Installierte Komponenten, um eine gefilterte Liste der von der Beispielanwendung installierten Komponenten aufzurufen. Alle Änderungen werden automatisch gespeichert und die Projektdateien automatisch generiert. Der Fortschritt wird unten rechts in der Perspektive der Simplizity IDE angezeigt.
Für diese Demo verwenden wir die Standardkonfiguration der Beispielanwendungen. Wiederholen Sie die obigen Schritte, um das ot-rcp
-Projekt für das andere Board zu erstellen.
Projekte erstellen und flashen
Erstellen und flashen Sie sowohl ot-rcp
- als auch ot-cli-ftd
-Projekte.
- Klicken Sie nach der Konfiguration des Projekts in der oberen Symbolleiste auf das Build-Steuerelement (Hammersymbol). Alternativ können Sie mit der rechten Maustaste auf das Projekt und dann auf „Projekt erstellen“ klicken.
- Der Fortschritt wird in der Konsole und unten rechts eine Fortschrittsanzeige angezeigt. Alle Fehler oder Warnungen in Bezug auf Ihr Projekt werden ebenfalls in diesem Ausgabefenster angezeigt.
- Die Binär-Images werden nach einem erfolgreichen Projekt-Build generiert. Sie können das Binärbild aus der Projekt-Explorer-Ansicht flashen. Suchen Sie im Compiler-Unterverzeichnis nach der BIN-, HEX- oder S37-Datei. Klicken Sie mit der rechten Maustaste auf die Datei und wählen Sie Flash to Device aus. Wenn mehrere Geräte verbunden sind, wählen Sie ein Gerät aus, das Sie programmieren möchten, und klicken Sie auf OK. Flash Programmer wird mit dem entsprechenden Dateipfad geöffnet. Klicken Sie auf PROGRAMM.
5. Zusammenfassung der Firmware-Einrichtung
Zu diesem Zeitpunkt sollten Sie die entsprechende Firmware auf den Radioplatinen erstellt, kompiliert und geflasht haben. Sobald ot-rcp
auf BRD4166A geflasht ist, trennen Sie es vom Hostsystem und verbinden Sie es mit dem Raspberry Pi.
Nach Abschluss dieses Abschnitts sieht die Thread-Netzwerkhardware-Einrichtung so aus.
6. Serielle Konsole einrichten für ot-cli-ftd-geräte
Wenn Sie die Benutzeroberfläche der Konsole starten möchten, klicken Sie in der Perspektive der Einfachheit-IDE mit der rechten Maustaste im Fenster „Geräteansicht“/„Fehlerbehebungsadapter“ auf Ihr J-Link-Gerät. Wählen Sie Konsole starten aus. Wählen Sie den Tab Serial 1 aus und drücken Sie die Eingabetaste, um eine Eingabeaufforderung in der Konsole zu erhalten. Überprüfen Sie den Status des FTD-Knotens.
Wie Sie sehen werden, gibt es noch keine Konsole für ot-rcp
. Im nächsten Schritt konfigurieren wir den Raspberry Pi als OT-Border-Router und richten die Konsole für ot-rcp
ein.
7. Raspberry Pi als Border-Router einrichten
Silicon Labs empfiehlt, den Docker-Container des Unternehmens mit OTBR bereitzustellen. Die Ausführung des OTBR in einem Container ermöglicht das Erstellen von leicht bereitstellbaren Artefakten sowie schnelles Prototyping und Testen bei der Entwicklung.
OTBR-Images von Silicon Labs werden auf siliconlabsinc DockerHub mit Tags gehostet. Jedes Tag entspricht einer GSDK-Version:
https://hub.docker.com/r/siliconlabsinc/openthread-border-router/tags
Docker-Container müssen mit RCPs verwendet werden, die für einen bestimmten Release mit Simplicity Studio 5 erstellt wurden. Achten Sie darauf, dass eine Container-Tag-Version der GSDK-Version entspricht, mit der Sie testen. Wenn Ihre GDSK-Version beispielsweise Gecko SDK Suite v4.0.1 (140)
war, als Sie ot-rcp
im Fenster Beispielprojektauswahl ausgewählt haben, verwenden Sie das siliconlabsinc/openthread-border-router:gsdk-4.0.1
-Image.
Raspberry Pi einrichten
- Auf der SD-Karte muss das Betriebssystem-Image Raspbian Stretch Lite oder Raspbian Stretch with Desktop flashen.
- Sie können entweder eine SSH-Verbindung zum Raspberry Pi herstellen oder direkt mit Raspbian Desktop arbeiten. Öffnen Sie ein Terminalfenster.
- Aktualisieren Sie unbedingt Ihre lokalen Repositories und den Paketmanager (apt-get update und apt-get upgrade, bevor Sie Docker installieren).
Docker-Image installieren
- Installieren Sie Docker mit dem folgenden Befehl auf Ihrem RPi.
curl -sSL https://get.docker.com | sh
- Anschließend können Sie die Docker-Nutzereinstellungen so ändern, dass vor jedem Befehl kein sudo erforderlich ist. Neustart erforderlich.
sudo usermod -aG docker $USER
- Führen Sie die folgenden Befehle aus, um die Container zu installieren. Beachten Sie, dass mit Ihrem RCP immer nur ein Border Router-Container gleichzeitig ausgeführt werden kann. Achten Sie außerdem darauf, dass die GSDK-Version von Simplicity Studio dem richtigen Docker-Image entspricht. Beispiel:
gsdk-4.0.1
:docker pull siliconlabsinc/openthread-border-router:gsdk-4.0.1
Docker konfigurieren und ausführen
- Sie müssen den TTY-Port konfigurieren, über den der OTBR beim Start eine Verbindung zu Ihrem RCP herstellt. Suchen Sie nach dem TTY-Port Ihres RCP-Geräts. Am einfachsten geht das, wenn du nach einem
/tty/dev
...-Eintrag suchst, sobald die RCP-Verbindung hergestellt ist. Er sollte im Allgemeinen entweder/dev/ttyUSB0
oder/dev/ttyACM0
sein. - Führen Sie die Docker-Installation mit dem folgenden Befehl aus. Achten Sie darauf, den Namen Ihres Docker-Images durch die entsprechende GSDK-Version zu ersetzen. Zum Beispiel
gsdk-4.0.1
:docker run -d --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 siliconlabsinc/openthread-border-router:gsdk-4.0.1 \ --radio-url spinel+hdlc+uart:///dev/ttyACM0?uart-baudrate=460800 \ --backbone-interface eth0
-d
sorgt dafür, dass der Container im getrennten Modus ausgeführt wird.- Die laufenden Logs für den Container können Sie jederzeit mit dem Befehl
docker logs
aufrufen. --name
bleibt gespeichert, bis der Docker-Container ordnungsgemäß geschlossen (oder entfernt) wird.- Port 8080 gibt den Port des Webservers an, auf dem die Border Router-Verwaltungswebseite gehostet wird.
?uart-baudrate=460800
ist in den Radio-URL-Optionen erforderlich, um Fragmentierungs-/Wiederzusammensetzungsprobleme über UART zu umgehen, was kostspielige Vorgänge wie DTLS mit langen IPv6-Paketen verursacht.
Mit dem RCP-Knoten interagieren
Sobald das Docker-Plug-in ausgeführt wird, können Sie mit diesem Befehl über eine interaktive Shell mit dem RCP-Knoten kommunizieren. Prüfen Sie den Status des RCP-Knotens.
$ docker exec -ti otbr sh -c "sudo ot-ctl" > state disabled Done
Sie können eine Liste der laufenden Container-IDs abrufen.
$ docker ps -aq
Sie können das Fenster überprüfen, in dem der OTBR-Docker-Container ausgeführt wird, um die Logausgabe des Border Routers auszuführen, oder das Containerlog so verwenden:
$ docker logs [container-id] -f
Optional können Sie das Image stoppen, entfernen oder löschen, wenn der Docker-Container ordnungsgemäß geladen wird.
$ docker stop otbr
$ docker rm otbr
$ docker kill otbr
Optional: Verwenden Sie CNTL + C, um die Shell zu beenden.
Sie sollten jetzt drei Konsolen haben.
- Zwei
ot-cli-ftd
-Konsolen in Simplicity Studio, die als Full-Thread-Geräte eingerichtet sind. - Eine interaktive
ot-ctl
-Shell auf dem Raspberry Pi, die als OT-Border-Router eingerichtet ist
Jetzt sind wir bereit für ein Thread-Netzwerk.
8. Thread-Netzwerk erstellen
RCP einrichten
Zum Erstellen des Netzwerks beginnen wir mit der ot-ctl
-Shell auf dem OTBR, das für die Kommunikation mit dem RCP-Knoten verwendet wird. Geben Sie die folgenden Befehle in der angegebenen Reihenfolge ein:
Index | Befehl | Befehlsbeschreibung | Erwartete Antwort | ||
1 |
| Erstellen Sie eine neue Netzwerkkonfiguration. | Fertig | ||
2 |
| Übertragen Sie das neue Dataset per Commit an das aktive operative Dataset. | Fertig | ||
3 |
| Thread-Schnittstelle aktivieren. | Fertig | ||
4 |
| Thread-Protokollvorgang aktivieren und anhängen. | Fertig | ||
Warten Sie zehn Sekunden, bis die Thread-Schnittstelle aktiv ist. | |||||
5 |
| Prüfen Sie den Gerätestatus. Er sollte der Leader sein. | Leader | ||
6 |
| Netzwerkkonfiguration ansehen. | 1 |
Wir verwenden die Kanalnummer und den Netzwerkschlüssel auf der ot-cli-ftd
, um die beiden FTDs mit diesem Thread-Netzwerk zu verbinden.
FTD einrichten und unserem Thread-Netzwerk hinzufügen (Out-of-Band-Methode)
Bei der Out-of-Band-Methode kennen wir alle Sicherheitsinformationen und fügen den Knoten manuell hinzu. Fügen Sie in den Konsolen für Einfachheit beide FTDs zu unserem Netzwerk hinzu. Verwenden Sie dazu die folgenden Befehle in der unten dargestellten Reihenfolge.
Index | Befehl | Befehlsbeschreibung | Erwartete Antwort | ||
1 |
| Legen Sie den vom OTBR verwendeten Kanal fest. | Fertig | ||
2 |
| Nur der Netzwerkschlüssel ist erforderlich, damit ein Gerät mit einem Thread-Netzwerk verbunden werden kann. | Fertig | ||
3 |
| Übertragen Sie das neue Dataset per Commit an das aktive operative Dataset. | Fertig | ||
4 |
| Thread-Schnittstelle aktivieren. | Fertig | ||
5 |
| Thread-Protokollvorgang aktivieren und anhängen. | Fertig | ||
Warten Sie 20 Sekunden, während sich das Gerät verbindet und sich selbst konfiguriert. | |||||
6 |
| Sehen Sie sich die Netzwerkkonfiguration an. | Kind |
Kommunikation zwischen Thread-Geräten
Wir verwenden den Befehl ping
, um zu prüfen, ob Geräte miteinander kommunizieren können. Um den Ping-Befehl verwenden zu können, benötigen wir die IPv6-Adressen der Geräte. Diese können mit dem Befehl ipaddr
abgerufen werden.
> ipaddr fd5c:c6b:3a17:40b9:0:ff:fe00:fc00 # Leader Anycast Locator (ALOC) fd5c:c6b:3a17:40b9:0:ff:fe00:1800 # Routing Locator (RLOC) fd5c:c6b:3a17:40b9:84e2:bae8:bd5b:fa03 # Mesh-Local EID (ML-EID) fe80:0:0:0:c449:ca4a:101f:5d16 # Link-Local Address (LLA)
Pingen Sie das OTBR von beiden FTDs über die RLOC-Adresse des OTBR an.
> ping fd5c:c6b:3a17:40b9:0:ff:fe00:1800 Done > > 16 bytes from fd5c:c6b:3a17:40b9:0:ff:fe00:1800: icmp_seq=3 hlim=64 time=30ms 16 bytes from fd5c:c6b:3a17:40b9:0:ff:fe00:1800: icmp_seq=3 hlim=64 time=52ms
Die Antwort zeigt an, dass die Nutzlast empfangen wurde und dass die Kommunikation erfolgreich ist. Wiederholen Sie diesen Vorgang, um FTDs aus dem OTBR zu pingen.
9. Glückwunsch
Du hast ein Thread-Netzwerk erstellt.
Jetzt wissen Sie:
- So erstellen Sie ein OpenThread-Projekt mit der Silicon Labs Simplicity Studio IDE.
- Anleitung zum Erstellen und Flashen von OpenThread-CLI-Binärdateien in Silicon Labs-Radioboards
- Hier erfahren Sie, wie Sie einen Raspberry Pi 3B oder höher als OpenThread-Border-Router (OTBR) mit Docker einrichten.
- Thread-Netzwerk im OTBR erstellen
- Out-of-Band-Inbetriebnahme von Geräten in einem Thread-Netzwerk.
- Thread-Kommunikation zwischen den Knoten mit dem Ping-Befehl prüfen
Weitere Informationen
Unter openthread.io und GitHub finden Sie eine Vielzahl von OpenThread-Ressourcen, darunter:
- Unterstützte Plattformen – Finden Sie alle Plattformen, die OpenThread unterstützen.
- OpenThread erstellen – weitere Details zum Erstellen und Konfigurieren von OpenThread
- Thread Primer – behandelt alle Thread-Konzepte in diesem Codelab
- Silicon Labs OpenThread Training – Eine Einführung in OpenThread, in dem die Inbetriebnahme und Border-Router sowie eine praktische Übung zum Erstellen eines OpenThread-Netzwerks behandelt werden.
- QSG170: Silicon Labs OpenThread Quick-Start Guide – behandelt die ersten Schritte für die Thread-Entwicklung in Silicon Labs ausführlich.
- AN1256: Silicon Labs RCP mit dem OpenThread-Border-Router verwenden – Build- und Installationsanleitung für den Raspberry Pi Border Router-Host
10. Optionale Firmware-Einrichtung – Demos
Demos sind vordefinierte Firmware-Images, die auf ein kompatibles Gerät heruntergeladen werden können. Am schnellsten finden Sie heraus, ob eine Demo für Ihr Teil in Simplicity Studio verfügbar ist, indem Sie in der Ansicht „Debug Adapters“ auf Ihr Teil klicken und dann die BEISPIELE-PROJEKTE aufrufen. Tab „DEMOS“ in der Launcher-Perspektive Deaktivieren Sie den Filter „Beispielprojekte“ und aktivieren Sie unter „Technologietyp“ das Optionsfeld „Thread“.
Vorkompilierte Demo-Anwendungs-Images, die mit dem OpenThread-SDK bereitgestellt werden, sind mit den folgenden Boards kompatibel:
- BRD4161a
- BRD4166a
- BRD4168a
- BRD4180a
- BRD4304a
Diese Liste wird in zukünftigen SDK-Releases möglicherweise aktualisiert, um weitere Radioboards hinzuzufügen. Eine vollständige Liste der unterstützten Teile finden Sie in den Versionshinweisen zum Silicon Labs OpenThread SDK unter Dokumentation.
Flashe die folgenden Demos auf die jeweiligen Boards. Wählen Sie zum Flashen das Board unter Debug Adapters auf der linken Seite aus und klicken Sie für die entsprechenden Beispielanwendungen auf RUN (AUSFÜHREN). Ein Pop-up-Fenster zeigt den Blitzfortschritt an.
- BRD4166A: ot-rcp – Dieses Gerät fungiert als Funkprozessor für den OT-Border-Router. Wir verwenden dieses Gerät, um ein Thread-Netzwerk zu erstellen und die anderen beiden Geräte im Thread-Netzwerk einzurichten. Als Border-Router fungiert dieses Gerät auch als Gateway für die Geräte im Thread-Netzwerk, um über das Internet zu kommunizieren.
- Zwei BRD4168A: ot-cli-ftd – Diese beiden Geräte dienen als Full-Thread-Geräte. Sie werden dem Thread-Netzwerk hinzugefügt, das vom OTBR erstellt wurde.