Visualizza il codice sorgente su GitHub
Questa guida illustra la compilazione e la configurazione di base del router di confine OpenThread (OTBR). Al termine di questa procedura, avrai un OTBR che funziona come dispositivo Thread completo (FTD) in un design RCP.
Configura la piattaforma
Configura una piattaforma hardware supportata:
RCP build e flash
OTBR viene eseguito su un design RCP. Seleziona una piattaforma OpenThread supportata da utilizzare come RCP e segui le istruzioni di creazione e flashing per quella piattaforma.
Per una panoramica della creazione di OpenThread, consulta la Guida alla creazione.
Istruzioni specifiche sulla creazione di piattaforme supportate con GNU Autotools sono disponibili nella cartella della piattaforma di ogni esempio.
Installa OTBR
L'OTBR comunica con l'RCP tramite spinel. Per installare OTBR sulla piattaforma hardware configurata, 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
elenco completo dei flag predefiniti OTBR, consulta
gli esempi di piattaforma su GitHub.
Seleziona la tua piattaforma, poi 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
Compila e installa OTBR
Utilizzo predefinito. Lo script di configurazione attiva il routing di confine per impostazione predefinita. Per attivare Routing delle frontiere, specifica l'interfaccia Ethernet o Wi-Fi della tua piattaforma:
Utilizza 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 firmware installato alla piattaforma del router di confine tramite USB.
Per configurare la porta seriale del dispositivo RCP in otbr-agent
, determina innanzitutto il nome della porta seriale del dispositivo RCP controllando /dev
:
ls /dev/tty*
Successivamente, controlla le impostazioni di otbr-agent
.
cd /etc/default
cat otbr-agent
Il file di configurazione otbr-agent
contiene il nome dell'interfaccia 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 con lo stesso nome di porta seriale. I nomi di porta più comuni sono ttyACM*
e ttyUSB*
. Consulta la documentazione del dispositivo per determinare il nome della porta seriale previsto.
Se necessario, aggiorna il file di configurazione otbr-agent
. Ad esempio, per un'interfaccia Wi-Fi e un nome della 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 utilizzi la piattaforma BeagleBone Black, ricordati di tenere premuto il tasto BOOT mentre lo fai.
Il servizio OTBR dovrebbe avviarsi all'avvio.
Verificare i servizi
Verifica che tutti i servizi richiesti siano attivi:
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 questi servizi sono in esecuzione, ma la parte soggetta a limitazioni è in stato degradato, significa che non è stato possibile avviare un altro servizio. 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
è attiva per impostazione predefinita per la maggior parte delle piattaforme.
Se otbr-web
non è installato, prova a passare il flag WEB_GUI
:
WEB_GUI=1 ./script/bootstrap
INFRA_IF_NAME=wlan0 WEB_GUI=1 ./script/setup
Verifica RCP
Verifica che l'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 Thread (il valore predefinito è wpan0
) a cui otbr-agent
è associato nel design 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 il problema nel seguente modo:
- Verifica che il router di confine abbia potenza sufficiente (utilizza l'adattatore AC esterno appropriato).
- Scollega e ricollega la scheda RCP alla piattaforma del router di confine.
Verifica che il dispositivo seriale RCP sia presente. Ad esempio, se il dispositivo deve essere collegato a
/dev/ttyUSB0
:ls /dev/ttyUSB*
/dev/ttyUSB0Reimposta l'RCP con
sudo ot-ctl reset
.
Controlla di nuovo lo stato del RCP con sudo ot-ctl state
.