Build und Konfiguration des OpenThread-Border-Routers

Quellcode auf GitHub ansehen

In dieser Anleitung werden die grundlegende Erstellung und Konfiguration von OpenThread Border Router (OTBR) behandelt. Nach Abschluss dieses Verfahrens haben Sie einen OTBR, der in einem RCP-Design als Full Thread Device (FTD) fungiert.

Plattform konfigurieren

Konfigurieren Sie eine unterstützte Hardwareplattform:

RCP erstellen und flashen

OTBR basiert auf einem RCP-Design. Wählen Sie eine unterstützte OpenThread-Plattform als RCP aus 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.

Spezifische Anleitungen zum Erstellen unterstützter Plattformen mit GNU Autotools finden Sie im Plattformordner des jeweiligen Beispiels.

OTBR installieren

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

In der Standardkonfiguration ist BORDER_ROUTING für die meisten Plattformen aktiviert. Eine vollständige Liste der Standard-OTBR-Flags findest du in den Plattformbeispielen auf GitHub. Wählen Sie Ihre Plattform aus und klicken Sie dann 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 standardmäßig das Border-Routing. Um das Border-Routing zu aktivieren, 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. Network Manager verwenden (optional):

    NETWORK_MANAGER=1 NETWORK_MANAGER_WIFI=1 ./script/setup
    

RCP-Gerät anhängen und konfigurieren

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

Zum Konfigurieren des seriellen Ports des RCP-Geräts in otbr-agent müssen Sie zuerst den Namen des seriellen Ports für das RCP-Gerät ermitteln. Dazu prüfen Sie /dev:

ls /dev/tty*

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

cd /etc/default
cat otbr-agent

Die Konfigurationsdatei otbr-agent enthält den Namen der Thread-Schnittstelle, den Namen der Ethernet- oder WLAN-Schnittstelle und den Namen des RCP-Serienports.

OTBR_AGENT_OPTS="-I wpan0 -B OTBR_INFRA_IF_NAME spinel+hdlc+uart:///dev/ttyACM0 trel://OTBR_INFRA_IF_NAME"

Nicht alle Geräte werden an den Namen des seriellen Ports angehängt. Die gängigsten Portnamen sind ttyACM* und ttyUSB*. Den erwarteten Namen des seriellen Anschlusses finden Sie in der Dokumentation Ihres Geräts.

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

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. Wenn Sie die BeagleBone Black-Plattform verwenden, halten Sie dabei die BOOT-Taste gedrückt.

Der OTBR-Dienst sollte beim Booten gestartet werden.

Dienste bestätigen

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

sudo systemctl status

Wenn das setup-Script 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, der RPi aber den Status degraded (eingeschränkt) hat, konnte ein anderer Dienst nicht gestartet werden. Prüfen Sie Folgendes:

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 sich der RCP im richtigen Status befindet:

sudo ot-ctl state

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

Wenn der RCP erfolgreich ausgeführt wird und der Knoten kein Mitglied eines Threadnetzwerks 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 ausreichend Strom erhält (verwenden Sie den richtigen externen Netzadapter).
  2. Trennen Sie das RCP-Board von der Border-Router-Plattform und schließen Sie es wieder an.
  3. Prüfen Sie, ob das serielle RCP-Gerät vorhanden ist. Wenn das Gerät beispielsweise an /dev/ttyUSB0 angeschlossen werden soll:

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

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