In dieser Anleitung werden die grundlegende Build- und Konfigurationsanleitung von OpenThread Border Router (OTBR) beschrieben. Nach Abschluss dieses Vorgangs haben Sie ein OTBR, das als Full-Thread-Gerät (FTD) in einem RCP-Design fungiert.
Plattform konfigurieren
Unterstützte Hardwareplattform konfigurieren:
RCP erstellen und flashen
OTBR basiert auf einem RCP-Design. 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 das Erstellen von OpenThread finden Sie in der Erstellungsanleitung.
Eine genaue Anleitung zum Erstellen unterstützter Plattformen mit GNU Autotools findest du in jedem Beispielordner.
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
Die Standardkonfiguration aktiviert für die meisten Plattformen BORDER_ROUTING
. Eine vollständige Liste der OTBR-Standard-Flags finden Sie unter Plattformbeispiele auf GitHub.
Wählen Sie Ihre Plattform aus und klicken Sie dann auf default
, sofern 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 das 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 anhängen und konfigurieren
Das angeschlossene RCP-Gerät muss über USB an die Border Router-Plattform angeschlossen werden.
Zum Konfigurieren des seriellen Ports für das RCP-Gerät in otbr-agent
musst du zuerst den Namen des seriellen Ports für das RCP-Gerät ermitteln. Dazu musst du /dev
prüfen:
ls /dev/tty*
Prüfe anschließend deine otbr-agent
-Einstellungen.
cd /etc/default
cat otbr-agent
Die Konfigurationsdatei otbr-agent
enthält den Namen Ihrer Thread-Schnittstelle, Ihren Ethernet- oder WLAN-Schnittstellennamen und den Namen des seriellen Portes der RCP.
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 Port. Die gängigsten Portnamen sind ttyACM*
und ttyUSB*
. Wie Sie den erwarteten Namen des seriellen Ports ermitteln, erfahren Sie in der Dokumentation Ihres Geräts.
Aktualisieren Sie bei Bedarf die Konfigurationsdatei otbr-agent
. Beispiel für eine WLAN-Schnittstelle und den seriellen Portnamen ttyUSB0
:
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"
Border-Router aus- und wieder einschalten Wenn du die BeagleBone Black-Plattform verwendest, musst du daran denken, die BOOT-Schaltfläche gedrückt zu halten.
Der OTBR-Dienst sollte beim Starten gestartet werden.
Dienste bestätigen
Prüfen Sie, ob alle erforderlichen Dienste aktiviert sind:
sudo systemctl status
Wenn das Skript setup
erfolgreich war, werden in der Ausgabe die folgenden Dienste 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 sich jedoch in einem eingeschränkten Status befindet, 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, versuche, das Flag WEB_GUI
zu übergeben:
WEB_GUI=1 ./script/bootstrap
INFRA_IF_NAME=wlan0 WEB_GUI=1 ./script/setup
RCP bestätigen
Prüfen Sie, ob der RCP den richtigen Status hat:
sudo ot-ctl state
ot-ctl
ist ein Befehlszeilenprogramm, das mit OTBR bereitgestellt wird. Es wird zur Kommunikation mit der Thread-PAN-Schnittstelle (Standardwert wpan0
) verwendet, 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, gehe so vor:
- Prüfen Sie, ob der Border-Router genügend Strom hat. Verwenden Sie dazu den richtigen externen AC-Adapter.
- Trennen Sie das RCP-Board und verbinden Sie es wieder mit der Border Router-Plattform.
Prüfen Sie, ob das RCP-Seriengerät vorhanden ist. Wenn das Gerät zum Beispiel an
/dev/ttyUSB0
angehängt werden sollte:ls /dev/ttyUSB*
/dev/ttyUSB0Setzen Sie den RCP mit
sudo ot-ctl reset
zurück.
Prüfe den RCP-Status noch einmal mit sudo ot-ctl state
.