O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Build e configuração do roteador de borda do OpenThread

Veja o código no GitHub

Este guia aborda a criação e a configuração básicas do OpenThread Border Router (OTBR). Após a conclusão desse procedimento, você terá um OTBR que funciona como um dispositivo de linha de execução completa (FTD) em um design RCP.

Configurar plataforma

Configure uma plataforma de hardware compatível:

Criar e atualizar o RCP

O OTBR é executado em um design de RCP. Selecione uma plataforma OpenThread compatível para usar como RCP e siga as instruções de criação e atualização para essa plataforma.

Para ter uma visão geral da criação do OpenThread, consulte o Guia de criação.

Veja instruções específicas sobre a criação de plataformas compatíveis com o GNU Autotools em cada pasta de plataforma de exemplo.

Instalar o OTBR

O OTBR se comunica com o RCP por fuso. Para instalar o OTBR na plataforma de hardware configurada, conclua as etapas a seguir.

Clone o repositório OTBR:

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

Instalar dependências

A configuração padrão ativa BORDER_ROUTING para a maioria das plataformas. Para ver uma lista completa de sinalizações padrão de OTBR, consulte os exemplos de plataforma no GitHub. Selecione sua plataforma e clique em default, se disponível.

  • Uso padrão:

    cd ot-br-posix
    ./script/bootstrap
    
  • BeagleBone Black com gerenciador de rede (opcional):

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

Compilar e instalar o OTBR

  • Uso padrão. O script de configuração ativa o roteamento de borda por padrão. Para ativar o Roteamento de borda, especifique a interface Ethernet ou Wi-Fi da sua plataforma:

    Use Ethernet:

    INFRA_IF_NAME=eth0 ./script/setup
    

    Usar Wi-Fi:

    INFRA_IF_NAME=wlan0 ./script/setup
    
  • BeagleBone Black (em inglês). Usar o Gerenciador de rede (opcional):

    NETWORK_MANAGER=1 NETWORK_MANAGER_WIFI=1 ./script/setup
    

Anexar e configurar o dispositivo RCP

Conecte o dispositivo RCP atualizado à plataforma do roteador de borda via USB.

Para configurar a porta serial do dispositivo RCP em otbr-agent, primeiro determine o nome da porta serial do dispositivo RCP marcando /dev:

ls /dev/tty*

Em seguida, verifique as configurações do otbr-agent.

cd /etc/default
cat otbr-agent

O arquivo de configuração otbr-agent contém o nome da interface da linha de execução, o nome da interface Ethernet ou Wi-Fi e o nome da porta serial RCP.

OTBR_AGENT_OPTS="-I wpan0 -B OTBR_INFRA_IF_NAME spinel+hdlc+uart:///dev/ttyACM0 trel://OTBR_INFRA_IF_NAME"

Nem todos os dispositivos se conectam com o mesmo nome de porta serial. Os nomes de porta mais comuns são ttyACM* e ttyUSB*. Consulte a documentação do seu dispositivo para determinar o nome esperado da porta serial.

Se necessário, atualize o arquivo de configuração otbr-agent. Por exemplo, para uma interface Wi-Fi e um nome de porta serial de ttyUSB0:

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

Para atualizar uma interface Ethernet:

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

Reinicie o roteador da borda. Se você estiver usando a plataforma BeagleBone Black, lembre-se de manter o botão BOOT pressionado ao fazer isso.

O serviço OTBR será iniciado na inicialização.

Verificar serviços

Verifique se todos os serviços necessários estão ativados:

sudo systemctl status

Se o script setup for bem-sucedido, os seguintes serviços aparecerão na saída:

  • mdns.service
  • otbr-agent.service
  • otbr-web.service

Exemplo:

● 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 esses serviços estiverem em execução, mas a RPi estiver em um estado degradado, alguns outros serviços não foram iniciados. Verifique quais:

sudo systemctl --failed

Também é possível verificar cada serviço individualmente:

sudo service mdns status
sudo service otbr-agent status
sudo service otbr-web status

O otbr-web está ativado por padrão na maioria das plataformas. Se otbr-web não estiver instalado, tente transmitir a sinalização WEB_GUI:

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

Verificar RCP

Verifique se o RCP está no estado correto:

sudo ot-ctl state

O ot-ctl é um utilitário de linha de comando fornecido com o OTBR. Ele é usado para se comunicar com a interface PAN Thread (o padrão é wpan0) a que otbr-agent está vinculado no design RCP.

Se o RCP estiver em execução e o nó não for membro de uma rede Thread, a saída será semelhante à seguinte:

disabled

Se a saída for OpenThread daemon is not running, resolva o seguinte:

  1. Verifique se o roteador de borda tem energia suficiente (use o adaptador de CA externo adequado).
  2. Desconecte e reconecte a placa RCP à plataforma do roteador de borda.
  3. Verifique se o dispositivo serial RCP está presente. Por exemplo, se o dispositivo estiver conectado a /dev/ttyUSB0:

    ls /dev/ttyUSB*
    /dev/ttyUSB0
    
  4. Redefina o RCP com sudo ot-ctl reset.

Verifique o status do RCP novamente com sudo ot-ctl state.