Build und Konfiguration von OpenThread-Border-Routern

Quelle auf GitHub ansehen

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:

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

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