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

Veja o código-fonte no GitHub

Este guia aborda a criação e a configuração básicas do roteador de borda do OpenThread (OTBR). Após a conclusão deste procedimento, você terá um OTBR que funciona como um dispositivo de linha de execução completa (FTD) em um design de 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 OpenThread compatível plataforma para usar como RCP e acompanhar a criação e atualização ou instruções específicas para essa plataforma.

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

Instruções específicas sobre a construção de plataformas suportadas com GNU Autotools podem ser nos exemplos pasta da plataforma.

Instalar o OTBR

O OTBR se comunica com o RCP por meio do spinel. Para instalar o OTBR no plataforma de hardware, 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 o BORDER_ROUTING para a maioria das plataformas. Para um lista completa de sinalizações padrão do OTBR, consulte 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 Roteamento de borda, especifique a interface de Ethernet ou Wi-Fi da sua plataforma:

    Usar Ethernet:

    INFRA_IF_NAME=eth0 ./script/setup
    

    Usar Wi-Fi:

    INFRA_IF_NAME=wlan0 ./script/setup
    
  • BeagleBone Preto. Use o Gerenciador de rede (opcional):

    NETWORK_MANAGER=1 NETWORK_MANAGER_WIFI=1 ./script/setup
    

Anexar e configurar um 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 o nome da porta serial do dispositivo RCP verificando /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, Ethernet. ou da interface de Wi-Fi e o nome da porta serial do 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 são anexados com o mesmo nome de porta serial. A maior nomes de porta comuns são ttyACM* e ttyUSB*. Na documentação, você encontra 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 rede Wi-Fi e o nome de porta serial 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 de borda. Se você usa a plataforma BeagleBone Black, lembre-se de manter o botão BOOT pressionado enquanto 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 Falha ao iniciar outro serviço. 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

otbr-web é ativado por padrão para a maioria das plataformas. Se otbr-web não estiver instalado, tente transmitir a flag 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 do Thread (o padrão é wpan0) que otbr-agent está vinculado no design do RCP.

Se o RCP estiver em execução com êxito e o nó não for membro de uma linha de execução a saída será semelhante a esta:

disabled

Se a saída for OpenThread daemon is not running, resolva o problema desta forma:

  1. Verifique se o roteador de borda tem energia suficiente (use a fonte de alimentação externa apropriada ou adaptador de rede).
  2. Desconecte e reconecte a placa RCP à plataforma do roteador de borda.
  3. Verifique se o dispositivo serial do RCP está presente. Por exemplo, se o dispositivo precisa ser anexado a /dev/ttyUSB0:

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

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