Configurazione e configurazione del router di confine OpenThread

Visualizza sorgente su GitHub

Questa guida illustra le build di base del router OpenThread Border Router (OTBR). Al termine di questa procedura, avrai una tecnologia OTBR che funziona come un dispositivo Full Thread (FTD) in un progetto RCP.

Configura la piattaforma

Configura una piattaforma hardware supportata:

Creazione e flash di RCP

OTBR viene eseguito su un design RCP. Seleziona una piattaforma OpenThread supportata da utilizzare come RCP e segui le istruzioni di creazione e lampeggiamento per tale piattaforma.

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

Istruzioni specifiche sulla creazione di piattaforme supportate con GNU Autotools sono disponibili nella cartella della piattaforma di ogni esempio.

Installazione di OTBR

OTBR comunica con la RCP tramite spinel. Per installare OTBR sulla piattaforma hardware configurata, completa i seguenti passaggi.

Clonare il repository OTBR:

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

Installare le dipendenze

La configurazione predefinita consente di attivare BORDER_ROUTING per la maggior parte delle piattaforme. Per un elenco completo dei flag predefiniti OTBR, fai riferimento agli esempi di piattaforme su GitHub. Seleziona la piattaforma e, se disponibile, fai clic su default.

  • Utilizzo predefinito:

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

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

Compilare e installare OTBR

  • Utilizzo predefinito. Lo script di configurazione attiva Routing bordo per impostazione predefinita. Per abilitare il routing per i confini, specifica l'interfaccia Ethernet o Wi-Fi della tua piattaforma:

    Utilizza Ethernet:

    INFRA_IF_NAME=eth0 ./script/setup
    

    Usa il Wi-Fi:

    INFRA_IF_NAME=wlan0 ./script/setup
    
  • Nero BeagleBone. Utilizza Network Manager (facoltativo):

    NETWORK_MANAGER=1 NETWORK_MANAGER_WIFI=1 ./script/setup
    

Collega e configura un dispositivo RCP

Collega il dispositivo RCP flash alla piattaforma del router perimetrale tramite USB.

Per configurare la porta seriale del dispositivo RCP in otbr-agent, devi prima determinare il nome della porta seriale del dispositivo RCP controllando /dev:

ls /dev/tty*

Quindi, controlla le impostazioni di otbr-agent.

cd /etc/default
cat otbr-agent

Il file di configurazione otbr-agent contiene il nome dell'interfaccia di Thread, il nome dell'interfaccia 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 allo stesso nome della porta seriale. I nomi di porta più comuni sono ttyACM* e ttyUSB*. Consulta la documentazione relativa al dispositivo per determinare il nome previsto per la porta seriale.

Se necessario, aggiorna il file di configurazione otbr-agent. Ad esempio, per un'interfaccia Wi-Fi e un nome di porta seriale di 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 utilizzi la piattaforma BeagleBone Black, ricorda di tenere premuto il pulsante BOOT durante questa operazione.

Il servizio OTBR deve avviarsi all'avvio.

Verifica servizi

Verifica che tutti i servizi richiesti siano attivi:

sudo systemctl status

Se lo script setup ha esito positivo, i seguenti servizi verranno visualizzati nell'output:

  • 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 l'RPi è in stato compromesso, non è stato possibile avviare alcuni altri servizi. 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

La funzionalità otbr-web è attiva 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 RCP sia nello stato corretto:

sudo ot-ctl state

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

Se l'RCP viene eseguito correttamente e il nodo non è membro di una rete Thread, l'output dovrebbe essere simile al seguente:

disabled

Se l'output è OpenThread daemon is not running, risolvi i problemi seguenti:

  1. Verifica che il router di confine abbia abbastanza potenza (utilizza l'adattatore CA esterno appropriato).
  2. Scollega e ricollega la scheda RCP alla piattaforma del router perimetrale.
  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 la richiesta RCP con sudo ot-ctl reset.

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