In dieser Anleitung werden die grundlegende Erstellung und Konfiguration von OpenThread Border Router (OTBR) behandelt. Nach Abschluss dieses Verfahrens haben Sie einen OTBR, der in einem RCP-Design als Full Thread Device (FTD) fungiert.
Plattform konfigurieren
Konfigurieren Sie eine unterstützte Hardwareplattform:
RCP erstellen und flashen
OTBR basiert auf einem RCP-Design. Wählen Sie eine unterstützte OpenThread-Plattform als RCP aus und folgen Sie der Anleitung zum Erstellen und Flashen für diese Plattform.
Eine Übersicht über das Erstellen von OpenThread finden Sie in der Erstellungsanleitung.
Spezifische Anleitungen zum Erstellen unterstützter Plattformen mit GNU Autotools finden Sie im Plattformordner des jeweiligen Beispiels.
OTBR installieren
OTBR kommuniziert über Spinel mit dem RCP. Führen Sie die folgenden Schritte aus, um OTBR auf der konfigurierten Hardwareplattform zu installieren.
Klonen Sie das OTBR-Repository:
git clone https://github.com/openthread/ot-br-posix
Abhängigkeiten installieren
In der Standardkonfiguration ist BORDER_ROUTING
für die meisten Plattformen aktiviert. Eine vollständige Liste der Standard-OTBR-Flags findest du in den Plattformbeispielen auf GitHub.
Wählen Sie Ihre Plattform aus und klicken Sie dann auf default
, falls verfügbar.
Standardnutzung:
cd ot-br-posix
./script/bootstrap
BeagleBone Black mit Network Manager (optional):
cd ot-br-posix
NETWORK_MANAGER=1 NETWORK_MANAGER_WIFI=1 ./script/bootstrap
OTBR kompilieren und installieren
Standardnutzung Das Einrichtungsskript aktiviert standardmäßig das Border-Routing. Um das Border-Routing zu aktivieren, geben Sie die Ethernet- oder WLAN-Schnittstelle Ihrer Plattform an:
Ethernet verwenden:
INFRA_IF_NAME=eth0 ./script/setup
WLAN verwenden:
INFRA_IF_NAME=wlan0 ./script/setup
BeagleBone Black. Network Manager verwenden (optional):
NETWORK_MANAGER=1 NETWORK_MANAGER_WIFI=1 ./script/setup
RCP-Gerät anhängen und konfigurieren
Schließen Sie das geflashte RCP-Gerät über USB an die Border Router-Plattform an.
Zum Konfigurieren des seriellen Ports des RCP-Geräts in otbr-agent
müssen Sie zuerst den Namen des seriellen Ports für das RCP-Gerät ermitteln. Dazu prüfen Sie /dev
:
ls /dev/tty*
Prüfen Sie als Nächstes Ihre otbr-agent
-Einstellungen.
cd /etc/default
cat otbr-agent
Die Konfigurationsdatei otbr-agent
enthält den Namen der Thread-Schnittstelle, den Namen der Ethernet- oder WLAN-Schnittstelle und den Namen des RCP-Serienports.
OTBR_AGENT_OPTS="-I wpan0 -B OTBR_INFRA_IF_NAME spinel+hdlc+uart:///dev/ttyACM0 trel://OTBR_INFRA_IF_NAME"
Nicht alle Geräte werden an den Namen des seriellen Ports angehängt. Die gängigsten Portnamen sind ttyACM*
und ttyUSB*
. Den erwarteten Namen des seriellen Anschlusses finden Sie in der Dokumentation Ihres Geräts.
Aktualisieren Sie bei Bedarf die Konfigurationsdatei otbr-agent
. Beispiel für eine WLAN-Schnittstelle mit dem Namen ttyUSB0
für den seriellen Port:
OTBR_AGENT_OPTS="-I wpan0 -B wlan0 spinel+hdlc+uart:///dev/ttyUSB0 trel://wlan0"
So aktualisieren Sie eine Ethernet-Schnittstelle:
OTBR_AGENT_OPTS="-I wpan0 -B eth0 spinel+hdlc+uart:///dev/ttyUSB0 trel://eth0"
Schalten Sie den Border Router aus und wieder ein. Wenn Sie die BeagleBone Black-Plattform verwenden, halten Sie dabei die BOOT-Taste gedrückt.
Der OTBR-Dienst sollte beim Booten gestartet werden.
Dienste bestätigen
Prüfen Sie, ob alle erforderlichen Dienste aktiviert sind:
sudo systemctl status
Wenn das setup
-Script erfolgreich war, werden die folgenden Dienste in der Ausgabe angezeigt:
mdns.service
otbr-agent.service
otbr-web.service
Beispiel:
● 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
Wenn diese Dienste ausgeführt werden, der RPi aber den Status degraded (eingeschränkt) hat, konnte ein anderer Dienst nicht gestartet werden. Prüfen Sie Folgendes:
sudo systemctl --failed
Sie können auch jeden Dienst einzeln prüfen:
sudo service mdns status
sudo service otbr-agent status
sudo service otbr-web status
otbr-web
ist für die meisten Plattformen standardmäßig aktiviert.
Wenn otbr-web
nicht installiert ist, versuchen Sie, das Flag WEB_GUI
zu übergeben:
WEB_GUI=1 ./script/bootstrap
INFRA_IF_NAME=wlan0 WEB_GUI=1 ./script/setup
RCP prüfen
Prüfen Sie, ob sich der RCP im richtigen Status befindet:
sudo ot-ctl state
ot-ctl
ist ein Befehlszeilentool, das mit OTBR bereitgestellt wird. Es wird für die Kommunikation mit der Thread-PAN-Schnittstelle (Standard ist wpan0
) verwendet, an die otbr-agent
im RCP-Design gebunden ist.
Wenn der RCP erfolgreich ausgeführt wird und der Knoten kein Mitglied eines Threadnetzwerks ist, sollte die Ausgabe in etwa so aussehen:
disabled
Wenn die Ausgabe OpenThread daemon is not running
ist, gehe so vor:
- Prüfen Sie, ob der Border Router ausreichend Strom erhält (verwenden Sie den richtigen externen Netzadapter).
- Trennen Sie das RCP-Board von der Border-Router-Plattform und schließen Sie es wieder an.
Prüfen Sie, ob das serielle RCP-Gerät vorhanden ist. Wenn das Gerät beispielsweise an
/dev/ttyUSB0
angeschlossen werden soll:ls /dev/ttyUSB*
/dev/ttyUSB0Setzen Sie den RCP-Wert mit
sudo ot-ctl reset
zurück.
Prüfen Sie den RCP-Status noch einmal mit sudo ot-ctl state
.