OpenThread Border Router erstellen und konfigurieren

Quelle auf GitHub ansehen

In dieser Anleitung werden die grundlegende Erstellung und Konfiguration von OpenThread Border Router (OTBR) erläutert. Nach Abschluss dieses Vorgangs haben Sie ein OTBR, das als 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 Gebäude- und Flash-Anleitung für diese Plattform.

Eine Übersicht zum Erstellen von OpenThread finden Sie in der Gebäudeübersicht.

Spezifische Anleitungen zum Erstellen unterstützter Plattformen mit GNU Autotools finden Sie im Plattformordner der einzelnen Beispiele.

OTBR installieren

OTBR kommuniziert über Spine 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

Die Standardkonfiguration aktiviert BORDER_ROUTING für die meisten Plattformen. Eine vollständige Liste der OTBR-Standard-Flags finden Sie in den Plattformbeispielen auf GitHub. Wählen Sie Ihre Plattform aus und klicken Sie dann auf default (falls verfügbar).

  • Standardeinstellung:

    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. Zum Aktivieren von Border Routing 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: Netzwerkmanager verwenden (optional):

    NETWORK_MANAGER=1 NETWORK_MANAGER_WIFI=1 ./script/setup
    

RCP-Gerät anhängen und konfigurieren

Schließen Sie das blinkende RCP-Gerät über USB an die Plattform Border Router an.

Seriellen Port des RCP-Geräts konfigurieren inotbr-agent ermitteln Sie zuerst den Namen des seriellen Ports für das RCP-Gerät, indem Sie/dev:

ls /dev/tty*

Prüfen Sie als Nächstes Ihre Einstellungen für die otbr-agent.

cd /etc/default
cat otbr-agent

Die Konfigurationsdatei otbr-agent enthält den Namen Ihrer Thread-Schnittstelle, den Namen der Ethernet- oder WLAN-Schnittstelle und 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 erwarteten seriellen Portnamens finden Sie in der Dokumentation zu Ihrem Gerät.

Aktualisieren Sie bei Bedarf die Konfigurationsdatei otbr-agent. Beispiel für eine WLAN-Schnittstelle und den seriellen Port-Namen ttyUSB0:

OTBR_AGENT_OPTS="-I wpan0 -B wlan0 spinel+hdlc+uart:///dev/ttyUSB0 trel://wlan0"

So aktualisieren Sie eine Ethernetschnittstelle:

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 Hochfahren gestartet werden.

Dienste bestätigen

Prüfen Sie, ob alle erforderlichen Dienste aktiviert sind:

sudo systemctl status

Wenn das Skript setup erfolgreich ausgeführt wurde, 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 jedoch eingeschränkt ist, konnten einige andere Dienste nicht gestartet werden. So finden Sie heraus:

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 der RCP den richtigen Status hat:

sudo ot-ctl state

ot-ctl ist ein Befehlszeilendienstprogramm, das in OTBR enthalten ist. Es wird für die Kommunikation mit der Thread-PAN-Schnittstelle verwendet (Standard ist wpan0), an die otbr-agent im RCP-Design gebunden ist.

Wenn der RCP erfolgreich 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, führen Sie die Fehlerbehebung für Folgendes aus:

  1. Prüfen Sie, ob der Border-Router genügend Energie hat (korrekten externen Adapter verwenden).
  2. Trennen Sie die Verbindung zum RCP-Board und verbinden Sie es mit der Plattform des Border-Routers.
  3. Prüfen Sie, ob das serielle Gerät (RCP) vorhanden ist. Angenommen, das Gerät sollte an /dev/ttyUSB0 angehängt sein:

    ls /dev/ttyUSB*
    /dev/ttyUSB0
    
  4. Setzen Sie den RCP mit sudo ot-ctl reset zurück.

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