Creazione e configurazione del router di confine OpenThread

Visualizza il codice sorgente su GitHub

Questa guida illustra la build e la configurazione di base del router di confine OpenThread (OTBR). Al termine di questa procedura, avrai un OTBR che funzioni come dispositivo Full Thread (FTD) in un design RCP.

Configura la piattaforma

Configura una piattaforma hardware supportata:

RCP build e flash

OTBR funziona con un design RCP. Seleziona un OpenThread supportato da usare come RCP e seguire la struttura e il flash istruzioni per quella piattaforma.

Per una panoramica della creazione di OpenThread, consulta Guida allo sviluppo.

È possibile trovare istruzioni specifiche sulla creazione di piattaforme supportate con GNU Autotools che puoi trovare nella cartella cartella della piattaforma.

Installa OTBR

OTBR comunica con l'RCP tramite spinello. Per installare OTBR sul piattaforma hardware, completa i seguenti passaggi.

Clona il repository OTBR:

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

Installa le dipendenze

La configurazione predefinita attiva BORDER_ROUTING per la maggior parte delle piattaforme. Per un per l'elenco completo dei flag predefiniti di OTBR, consulta esempi di piattaforme su GitHub. Seleziona la tua piattaforma, poi fai clic su default, se disponibile.

  • Utilizzo predefinito:

    cd ot-br-posix
    ./script/bootstrap
    
  • (Facoltativo) BeagleBone Black con Network Manager:

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

Compila e installa OTBR

  • Utilizzo predefinito. Lo script di configurazione abilita il routing delle frontiere per impostazione predefinita. Per attivare Border Routing, specifica l'interfaccia Ethernet o Wi-Fi della tua piattaforma:

    Usa Ethernet:

    INFRA_IF_NAME=eth0 ./script/setup
    

    Usa Wi-Fi:

    INFRA_IF_NAME=wlan0 ./script/setup
    
  • Nero beagleBone. Usa Network Manager (facoltativo):

    NETWORK_MANAGER=1 NETWORK_MANAGER_WIFI=1 ./script/setup
    

Collega e configura il dispositivo RCP

Collega il dispositivo RCP con il flashing alla piattaforma router di confine tramite USB.

Per configurare la porta seriale del dispositivo RCP in otbr-agent, innanzitutto determina nome della porta seriale del dispositivo RCP controllando /dev:

ls /dev/tty*

Dopodiché controlla le impostazioni di otbr-agent.

cd /etc/default
cat otbr-agent

Il file di configurazione otbr-agent contiene il nome dell'interfaccia Thread, Ethernet o Wi-Fi e il nome della porta seriale RCP.

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

Non tutti i dispositivi si collegano con lo stesso nome di porta seriale. Il più i nomi di porta più comuni sono ttyACM* e ttyUSB*. Consulta la documentazione per il tuo dispositivo per determinare il nome della porta seriale previsto.

Se necessario, aggiorna il file di configurazione di otbr-agent. Ad esempio, per una connessione Wi-Fi e un nome di porta seriale ttyUSB0:

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

Per aggiornare un'interfaccia Ethernet:

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

Spegni e riaccendi il router di confine. Se usi la piattaforma BeagleBone Black, ricordati di tenere premuto il pulsante di AVVIAMENTO mentre in questo modo.

Il servizio OTBR dovrebbe essere avviato all'avvio.

Verifica i servizi

Verifica che tutti i servizi richiesti siano abilitati:

sudo systemctl status

Se lo script setup ha esito positivo, i seguenti servizi vengono visualizzati nella :

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

Ad esempio:

● 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

Se questi servizi sono in esecuzione, ma la parte soggetta a limitazioni è ridotta, alcune l'avvio di un altro servizio non è riuscito. Verifica quali:

sudo systemctl --failed

Puoi anche controllare ogni servizio singolarmente:

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

otbr-web è abilitato per impostazione predefinita per la maggior parte delle piattaforme. Se otbr-web non è installato, prova a trasmettere il flag WEB_GUI:

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

Verifica RCP

Verifica che lo stato del RCP sia corretto:

sudo ot-ctl state

ot-ctl è un'utilità a riga di comando fornita con OTBR. È utilizzato per comunica con l'interfaccia PAN Thread (il valore predefinito è wpan0) che otbr-agent a cui è associato nella progettazione RCP.

Se RCP viene eseguito correttamente e il nodo non è membro di un thread l'output dovrebbe essere simile al seguente:

disabled

Se l'output è OpenThread daemon is not running, risolvi i problemi con il seguente codice:

  1. Verifica che la potenza del router di confine sia sufficiente (utilizza il cavo CA esterno appropriato) dell'adattatore).
  2. Scollega e ricollega la scheda RCP alla piattaforma router di confine.
  3. Verifica che sia presente il dispositivo seriale RCP. Ad esempio, se il dispositivo deve essere collegato a /dev/ttyUSB0:

    ls /dev/ttyUSB*
    /dev/ttyUSB0
    
  4. Reimposta l'RCP con sudo ot-ctl reset.

Controlla di nuovo lo stato RCP con sudo ot-ctl state.