In diesem Leitfaden werden die grundlegende Erstellung und Konfiguration von OpenThread Border Router (OTBR) beschrieben. Nach Abschluss dieses Vorgangs haben Sie ein OTBR, das als Full-Thread-Gerät (Full Thread Device, FTD) in einem RCP-Design fungiert.
Plattform konfigurieren
Konfigurieren Sie eine unterstützte Hardwareplattform:
Build und Flash-RCP
OTBR wird auf einem RCP-Design ausgeführt. Wählen Sie eine unterstützte OpenThread-Plattform aus, die als RCP verwendet werden soll, und folgen Sie der Anleitung zum Erstellen und Flashen für diese Plattform.
Eine Übersicht über die Erstellung von OpenThread finden Sie in der Erstellungsanleitung.
Eine genaue Anleitung zum Erstellen unterstützter Plattformen mit GNU Autotools finden Sie im Plattformordner der einzelnen Beispiele.
OTBR installieren
OTBR kommuniziert mit dem RCP über Spinell. 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
Durch die Standardkonfiguration wird BORDER_ROUTING
für die meisten Plattformen aktiviert. Eine vollständige Liste der OTBR-Standard-Flags finden Sie in den Plattformbeispielen auf GitHub.
Wählen Sie Ihre Plattform aus und klicken Sie 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 Border Routing standardmäßig. Geben Sie zum Aktivieren von Border Routing 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: Netzwerkmanager verwenden (optional):
NETWORK_MANAGER=1 NETWORK_MANAGER_WIFI=1 ./script/setup
RCP-Gerät verbinden und konfigurieren
Verbinden Sie das Flash-RCP-Gerät über USB mit der Border Router-Plattform.
Um den seriellen Port des RCP-Geräts in otbr-agent
zu konfigurieren, prüfen Sie zuerst den Namen des seriellen Ports für das RCP-Gerät: /dev
ls /dev/tty*
Prüfen Sie als Nächstes Ihre Einstellungen für otbr-agent
.
cd /etc/default
cat otbr-agent
Die Konfigurationsdatei otbr-agent
enthält den Namen der Thread-Schnittstelle, den Ethernet- oder WLAN-Schnittstellennamen sowie den Namen des seriellen RCP-Ports.
OTBR_AGENT_OPTS="-I wpan0 -B OTBR_INFRA_IF_NAME spinel+hdlc+uart:///dev/ttyACM0 trel://OTBR_INFRA_IF_NAME"
Nicht alle Geräte haben denselben seriellen Portnamen. Die gängigsten Portnamen sind ttyACM*
und ttyUSB*
. Informationen zum Ermitteln des Namens des seriellen Ports finden Sie in der Dokumentation zu Ihrem Gerät.
Aktualisieren Sie bei Bedarf die Konfigurationsdatei otbr-agent
. Für eine WLAN-Schnittstelle und den Namen des seriellen Ports ttyUSB0
wäre dies beispielsweise:
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. Achten Sie bei Verwendung der BeagleBone Black-Plattform darauf, die BOOT-Taste gedrückt zu halten.
Der OTBR-Dienst sollte beim Booten starten.
Dienste bestätigen
Prüfen Sie, ob alle erforderlichen Dienste aktiviert sind:
sudo systemctl status
Wenn das Skript setup
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, das RPi jedoch den Status Eingeschränkt hat, konnte ein anderer Dienst nicht gestartet werden. Überprüfen Sie, welche:
sudo systemctl --failed
Sie können jeden Dienst auch 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 überprüfen
Prüfen Sie, ob der RCP den richtigen Status hat:
sudo ot-ctl state
ot-ctl
ist ein Befehlszeilenprogramm mit OTBR. Es wird zur Kommunikation mit der Thread-PAN verwendet (Standard ist wpan0
), an die otbr-agent
im RCP-Design gebunden ist.
Wenn der RCP ausgeführt wird und der Knoten kein Mitglied eines Thread-Netzwerks ist, sollte die Ausgabe in etwa so aussehen:
disabled
Wenn die Ausgabe OpenThread daemon is not running
ist, beheben Sie Folgendes:
- Prüfen Sie, ob der Border Router ausreichend Strom hat. Verwenden Sie dazu den richtigen externen AC-Adapter.
- Trennen Sie die RCP-Karte und verbinden Sie sie wieder mit der Border Router-Plattform.
Prüfen Sie, ob das serielle RCP-Gerät vorhanden ist. Wenn das Gerät beispielsweise an
/dev/ttyUSB0
angehängt werden soll:ls /dev/ttyUSB*
/dev/ttyUSB0Setze den RCP mit
sudo ot-ctl reset
zurück.
Prüfen Sie den RCP-Status noch einmal mit sudo ot-ctl state
.