Creazione e configurazione di router Thread OpenThread

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Visualizza origine su GitHub

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

Configura piattaforma

Configura una piattaforma hardware supportata:

Crea e Flash RCP

OTBR viene eseguita su un progetto RCP. Seleziona una piattaforma OpenThread supportata da utilizzare come RCP e segui le istruzioni per creare e lampeggiare la piattaforma in questione.

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

Puoi trovare istruzioni specifiche per la creazione di piattaforme supportate con GNU Autotools in ogni cartella di piattaforme di esempio.

Installa OTBR

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

Clona il repository OTBR:

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

Installazione delle dipendenze

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

  • 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 il routing della frontiera per impostazione predefinita. Per attivare il routing della frontiera, 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. Utilizza Network Manager (facoltativo):

    NETWORK_MANAGER=1 NETWORK_MANAGER_WIFI=1 ./script/setup
    

Collega e configura dispositivo RCP

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

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

ls /dev/tty*

Dopodiché controlla le impostazioni di otbr-agent.

cd /etc/default
cat otbr-agent

Il file di configurazione di otbr-agent contiene il nome dell'interfaccia Thread, il nome della rete 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 hanno lo stesso nome per la porta seriale. I nomi delle porte più comuni sono ttyACM* e ttyUSB*. Consulta la documentazione del dispositivo per determinare il nome della porta seriale prevista.

Se necessario, aggiorna il file di configurazione di 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, ricordati di tieni premuto il pulsante BOOT.

Il servizio OTBR dovrebbe iniziare all'avvio.

Verifica servizi

Verifica che tutti i servizi richiesti siano abilitati:

sudo systemctl status

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

  • 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 tali servizi sono in esecuzione, ma l'RPi si trova in uno stato degradato, non è stato possibile avviare alcuni altri servizi. Controlla 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 RCP sia corretto:

sudo ot-ctl state

ot-ctl è un'utilità a riga di comando fornita con OTBR. Viene usato per comunicare con l'interfaccia PAN Thread (valore predefinito: wpan0) a cui è associato otbr-agent nel progetto RCP.

Se l'RCP è in esecuzione 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 relativi a quanto segue:

  1. Verifica che il router di confine disponga di corrente (utilizza l'adattatore CA esterno appropriato).
  2. Scollega e ricollega la scheda RCP alla piattaforma del 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.