Ver el código fuente en GitHub
En esta guía, se abordan la compilación básica y la configuración del router de borde de OpenThread (OTBR). Cuando completes este procedimiento, tendrás un OTBR que funcionará como un dispositivo de subproceso completo (FTD) en un diseño de RCP.
Configurar plataforma
Configura una plataforma de hardware compatible:
RCP de compilación y escritura en la memoria flash
OTBR se ejecuta en un diseño de RCP. Selecciona una plataforma de OpenThread compatible para usar como RCP y sigue las instrucciones de compilación y escritura en la memoria flash de esa plataforma.
Para obtener una descripción general de la compilación de OpenThread, consulta la Guía de compilación.
Puedes encontrar instrucciones específicas sobre cómo compilar plataformas compatibles con las herramientas automáticas de GNU en la carpeta de plataformas de cada ejemplo.
Instalar OTBR
OTBR se comunica con el RCP mediante una espinel. Para instalar OTBR en la plataforma de hardware configurada, completa los siguientes pasos.
Clona el repositorio de OTBR:
git clone https://github.com/openthread/ot-br-posix
Instale dependencias
La configuración predeterminada habilita BORDER_ROUTING
para la mayoría de las plataformas. Para obtener una lista completa de las marcas predeterminadas de OTBR, consulta los ejemplos de la plataforma en GitHub.
Seleccione su plataforma y, luego, haga clic en default
(si está disponible).
Uso predeterminado:
cd ot-br-posix
./script/bootstrap
BeagleBone Black con administrador de red (opcional):
cd ot-br-posix
NETWORK_MANAGER=1 NETWORK_MANAGER_WIFI=1 ./script/bootstrap
Compilar e instalar OTBR
Uso predeterminado. La secuencia de comandos de configuración habilita el enrutamiento fronterizo de forma predeterminada. Para habilitar el enrutamiento fronterizo, especifica la interfaz Ethernet o Wi-Fi de tu plataforma:
Usar Ethernet:
INFRA_IF_NAME=eth0 ./script/setup
Usar Wi-Fi:
INFRA_IF_NAME=wlan0 ./script/setup
BeagleBone negro Usa el Administrador de redes (opcional):
NETWORK_MANAGER=1 NETWORK_MANAGER_WIFI=1 ./script/setup
Conecta y configura un dispositivo de RCP
Conecta el dispositivo de RCP enviado a la plataforma del router de borde mediante USB.
Para configurar el puerto en serie del dispositivo RCP en otbr-agent
, primero determina /dev
:
ls /dev/tty*
Luego, revisa la configuración de otbr-agent
.
cd /etc/default
cat otbr-agent
El archivo de configuración otbr-agent
contiene el nombre de la interfaz de Thread, el nombre de la interfaz Ethernet o Wi-Fi y el nombre del puerto en serie del RCP.
OTBR_AGENT_OPTS="-I wpan0 -B OTBR_INFRA_IF_NAME spinel+hdlc+uart:///dev/ttyACM0 trel://OTBR_INFRA_IF_NAME"
No todos los dispositivos se conectan con el mismo nombre de puerto en serie. Los nombres de puertos más comunes son ttyACM*
y ttyUSB*
. Consulta la documentación de tu dispositivo a fin de determinar el nombre del puerto en serie esperado.
Si es necesario, actualiza el archivo de configuración otbr-agent
. Por ejemplo, para una interfaz Wi-Fi y un nombre de puerto en serie de ttyUSB0
, haz lo siguiente:
OTBR_AGENT_OPTS="-I wpan0 -B wlan0 spinel+hdlc+uart:///dev/ttyUSB0 trel://wlan0"
Para actualizar una interfaz Ethernet, haz lo siguiente:
OTBR_AGENT_OPTS="-I wpan0 -B eth0 spinel+hdlc+uart:///dev/ttyUSB0 trel://eth0"
Reinicia el router de borde. Si usas la plataforma BeagleBone Black, recuerda mantener presionado el botón BOOT mientras lo haces.
El servicio OTBR debería iniciarse en el inicio.
Verificar servicios
Verifique que todos los servicios obligatorios estén habilitados:
sudo systemctl status
Si la secuencia de comandos setup
se realizó de forma correcta, aparecerán los siguientes servicios en el resultado:
mdns.service
otbr-agent.service
otbr-web.service
Por ejemplo:
● 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
Si esos servicios se están ejecutando, pero el RPi está en estado degradado, no se pudo iniciar otro servicio. Revisa los siguientes elementos:
sudo systemctl --failed
También puedes verificar cada servicio de forma individual:
sudo service mdns status
sudo service otbr-agent status
sudo service otbr-web status
otbr-web
está habilitado de forma predeterminada para la mayoría de las plataformas.
Si otbr-web
no está instalado, intenta pasar la marca WEB_GUI
:
WEB_GUI=1 ./script/bootstrap
INFRA_IF_NAME=wlan0 WEB_GUI=1 ./script/setup
Verificar RCP
Verifica que el RCP esté en el estado correcto:
sudo ot-ctl state
ot-ctl
es una utilidad de línea de comandos que proporciona OTBR. Se usa para comunicarse con la interfaz de PAN de Thread (el valor predeterminado es wpan0
) a la que otbr-agent
está vinculado en el diseño de RCP.
Si el RCP se ejecuta correctamente y el nodo no es miembro de una red Thread, el resultado debería ser similar al siguiente:
disabled
Si el resultado es OpenThread daemon is not running
, usa el siguiente comando para solucionar problemas:
- Verifica que el router de borde tenga suficiente energía (usa el adaptador de CA externo adecuado).
- Desconecta y vuelve a conectar la placa RCP a la plataforma del router de borde.
Verifica que el dispositivo en serie del RCP esté presente. Por ejemplo, si el dispositivo debe estar conectado a
/dev/ttyUSB0
, haz lo siguiente:ls /dev/ttyUSB*
/dev/ttyUSB0Restablece el RCP con
sudo ot-ctl reset
.
Vuelve a verificar el estado de RCP con sudo ot-ctl state
.