Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Construcción y configuración del enrutador de borde OpenThread

Ver fuente en GitHub

Esta guía cubre la compilación y configuración básicas de OpenThread Border Router (OTBR). Al completar este procedimiento, tendrá un OTBR que funciona como un dispositivo de subproceso completo (FTD) en un diseño RCP.

Configurar plataforma

Configure una plataforma de hardware compatible:

Construir y flashear RCP

OTBR se ejecuta en un diseño RCP. Seleccione una plataforma OpenThread compatible para usar como RCP y siga las instrucciones de creación y actualización para esa plataforma.

Para obtener una descripción general de la creación de OpenThread, consulte la Guía de creación .

Las instrucciones específicas sobre la creación de plataformas compatibles con GNU Autotools se pueden encontrar en la carpeta de la plataforma de cada ejemplo.

Instalar OTBR

OTBR se comunica con el RCP a través de espinela. Para instalar OTBR en la plataforma de hardware configurada, complete los siguientes pasos.

Clonar el repositorio OTBR:

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

Instalar dependencias

La configuración predeterminada habilita BORDER_ROUTING para la mayoría de las plataformas. Para obtener una lista completa de los indicadores predeterminados de OTBR, consulte los ejemplos de plataforma en GitHub . Seleccione su plataforma, luego haga clic en default , si está disponible.

  • Uso predeterminado:

    cd ot-br-posix
    ./script/bootstrap
    
  • BeagleBone Black con Network Manager (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, especifique la interfaz Ethernet o Wi-Fi de su plataforma:

    Usa Ethernet:

    INFRA_IF_NAME=eth0 ./script/setup
    

    Usar wifi:

    INFRA_IF_NAME=wlan0 ./script/setup
    
  • Beagle Hueso Negro . Utilice el administrador de red (opcional):

    NETWORK_MANAGER=1 NETWORK_MANAGER_WIFI=1 ./script/setup
    

Adjunte y configure el dispositivo RCP

Conecte el dispositivo RCP flasheado a la plataforma Border Router a través de USB.

Para configurar el puerto serie del dispositivo RCP en otbr-agent , primero determine el nombre del puerto serie para el dispositivo RCP marcando /dev :

ls /dev/tty*

A continuación, verifique la otbr-agent .

cd /etc/default
cat otbr-agent

El archivo de configuración otbr-agent contiene el nombre de su interfaz Thread, el nombre de la interfaz Ethernet o Wi-Fi y el nombre del puerto serie 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 serie. Los nombres de puerto más comunes son ttyACM* y ttyUSB* . Consulte la documentación de su dispositivo para determinar el nombre del puerto serie esperado.

Si es necesario, actualice el archivo de configuración otbr-agent . Por ejemplo, para una interfaz Wi-Fi y un nombre de puerto serie de ttyUSB0 :

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

Para actualizar una interfaz Ethernet:

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

Apague y encienda el enrutador de borde. Si usa la plataforma BeagleBone Black, recuerde mantener presionado el botón BOOT mientras lo hace.

El servicio OTBR debería comenzar en el arranque.

Verificar servicios

Verifique que todos los servicios requeridos estén habilitados:

sudo systemctl status

Si el script de setup fue exitoso, los siguientes servicios aparecen en la salida:

  • 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 un estado degradado , algún otro servicio no pudo iniciarse. Mira a ver cuál:

sudo systemctl --failed

También puedes consultar cada servicio individualmente:

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, intente pasar el indicador WEB_GUI :

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

Verificar PCR

Verifique que el RCP esté en el estado correcto:

sudo ot-ctl state

ot-ctl es una utilidad de línea de comandos proporcionada con OTBR. Se utiliza para comunicarse con la interfaz Thread PAN (la predeterminada es wpan0 ) a la que está vinculado otbr-agent 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 , solucione el problema con lo siguiente:

  1. Verifique que el enrutador de borde tenga suficiente energía (utilice el adaptador de CA externo adecuado).
  2. Desconecte y vuelva a conectar la placa RCP a la plataforma del enrutador de borde.
  3. Verifique que el dispositivo serie RCP esté presente. Por ejemplo, si el dispositivo debe conectarse a /dev/ttyUSB0 :

    ls /dev/ttyUSB*
    /dev/ttyUSB0
    
  4. Restablezca el RCP con sudo ot-ctl reset .

Vuelva a verificar el estado de RCP con sudo ot-ctl state .