Kompilacja i konfiguracja routera granic OpenThread

Wyświetl źródło na GitHubie

Ten przewodnik zawiera informacje o podstawowej kompilacji i konfiguracji OpenThread Border Router (OTBR). Po zakończeniu tej procedury będziesz mieć urządzenie OTBR, które działa jako urządzenie z pełnym wątkiem (FTD) w ramach projektu RCP.

Konfigurowanie platformy

Skonfiguruj obsługiwaną platformę sprzętową:

Tworzenie i flashowanie RCP

OTBR działa na podstawie projektu RCP. Wybierz obsługiwaną platformę OpenThread, której chcesz używać jako RCP, i postępuj zgodnie z instrukcjami dotyczącymi tworzenia i aktualizowania oprogramowania na tej platformie.

Omówienie tworzenia obiektów OpenThread znajdziesz w przewodniku po tworzeniu zasad.

Szczegółowe instrukcje tworzenia obsługiwanych platform za pomocą narzędzia GNU Autotools znajdziesz w folderze platformy każdego z przykładów.

Zainstaluj OTBR

Interfejs OTBR komunikuje się z interfejsem RCP za pomocą interfejsu spinel. Aby zainstalować OTBR na skonfigurowanej platformie sprzętowej, wykonaj te czynności.

Sklonuj repozytorium OTBR:

git clone https://github.com/openthread/ot-br-posix

Instalowanie zależności

Konfiguracja domyślna włącza BORDER_ROUTING na większości platform. Pełną listę domyślnych flag OTBR znajdziesz na GitHubie. Wybierz platformę, a następnie kliknij default (jeśli jest dostępna).

  • Domyślne użycie:

    cd ot-br-posix
    ./script/bootstrap
    
  • BeagleBone Black z menedżerem sieci (opcjonalnie):

    cd ot-br-posix
    NETWORK_MANAGER=1 NETWORK_MANAGER_WIFI=1 ./script/bootstrap
    

Kompilowanie i instalowanie OTBR

  • Domyślne użycie. Skrypt konfiguracji domyślnie włącza routing graniczny. Aby włączyć routing graniczny, określ interfejs Ethernet lub Wi-Fi platformy:

    Użyj sieci Ethernet:

    INFRA_IF_NAME=eth0 ./script/setup
    

    Użyj Wi-Fi:

    INFRA_IF_NAME=wlan0 ./script/setup
    
  • BeagleBone Black Użyj menedżera sieci (opcjonalnie):

    NETWORK_MANAGER=1 NETWORK_MANAGER_WIFI=1 ./script/setup
    

Podłączanie i konfigurowanie urządzenia RCP

Podłącz urządzenie RCP do platformy Border Router przez USB.

Aby skonfigurować port szeregowy urządzenia RCP w otbr-agent, najpierw określ nazwę portu szeregowego tego urządzenia RCP, zaznaczając pole /dev:

ls /dev/tty*

Następnie sprawdź ustawienia otbr-agent.

cd /etc/default
cat otbr-agent

Plik konfiguracji otbr-agent zawiera nazwę interfejsu Thread, nazwę interfejsu Ethernet lub Wi-Fi oraz nazwę portu szeregowego RCP.

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

Nie wszystkie urządzenia łączą się z tym samym portem szeregowym. Najczęstsze nazwy portów to ttyACM*ttyUSB*. Aby określić nazwę portu szeregowego, zapoznaj się z dokumentacją urządzenia.

W razie potrzeby zaktualizuj plik konfiguracji otbr-agent. Przykładowo interfejs Wi-Fi i port szeregowy o nazwie ttyUSB0:

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

Aby zaktualizować interfejs Ethernet:

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

Wyłącz i ponownie włącz router brzegowy. Jeśli korzystasz z platformy BeagleBone Black, pamiętaj, by przytrzymać przycisk BOOT.

Usługa OTBR powinna się uruchomić podczas uruchamiania.

Weryfikowanie usług

Sprawdź, czy wszystkie wymagane usługi są włączone:

sudo systemctl status

Jeśli skrypt setup wykonał się pomyślnie, w wyjściu pojawią się te usługi:

  • mdns.service
  • otbr-agent.service
  • otbr-web.service

Na przykład:

● 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

Jeśli te usługi są uruchomione, ale usługa RPi jest w pogorszonym stanie, oznacza to, że nie udało się uruchomić innej usługi. Sprawdź, które:

sudo systemctl --failed

Możesz też sprawdzić każdą usługę z osobna:

sudo service mdns status
sudo service otbr-agent status
sudo service otbr-web status

Usługa otbr-web jest domyślnie włączona na większości platform. Jeśli usługa otbr-web nie jest zainstalowana, spróbuj przekazać parametr WEB_GUI:

WEB_GUI=1 ./script/bootstrap
INFRA_IF_NAME=wlan0 WEB_GUI=1 ./script/setup

Zweryfikuj RCP

Sprawdź, czy usługa RCP jest w prawidłowym stanie:

sudo ot-ctl state

ot-ctl to narzędzie wiersza poleceń udostępniane w OTBR. Służy do komunikacji z interfejsem Thread PAN (domyślnie wpan0), do którego otbr-agentjest powiązany w ramach projektu RCP.

Jeśli RCP działa, a węzeł nie należy do sieci Thread, dane wyjściowe powinny wyglądać mniej więcej tak:

disabled

Jeśli dane wyjściowe to OpenThread daemon is not running, rozwiąż problemy w ten sposób:

  1. Sprawdź, czy router brzegowy ma wystarczającą moc (użyj odpowiedniego zewnętrznego zasilacza).
  2. Odłącz i połącz ponownie płytkę RCP z platformą Border Router.
  3. Sprawdź, czy urządzenie z numerem seryjnym RCP jest podłączone. Jeśli na przykład urządzenie powinno być podłączone do /dev/ttyUSB0:

    ls /dev/ttyUSB*
    /dev/ttyUSB0
    
  4. Zresetuj RCP za pomocą sudo ot-ctl reset.

Sprawdź stan RCP ponownie w banku sudo ot-ctl state.