Build und Konfiguration von OpenThread-Border-Routern

Quelle auf GitHub ansehen

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:

  1. Prüfen Sie, ob der Border-Router genügend Strom hat. Verwenden Sie dazu den richtigen externen AC-Adapter.
  2. Trennen Sie das RCP-Board und verbinden Sie es wieder mit der Border Router-Plattform.
  3. 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/ttyUSB0
    
  4. Setzen Sie den RCP mit sudo ot-ctl reset zurück.

Prüfe den RCP-Status noch einmal mit sudo ot-ctl state.