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:
- BeagleBone Black
- Raspberry Pi (em inglês)
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:
- Verifique se o roteador de borda tem energia suficiente (use o adaptador de CA externo adequado).
- Desconecte e reconecte a placa RCP à plataforma do roteador de borda.
Verifique se o dispositivo serial RCP está presente. Por exemplo, se o dispositivo estiver conectado a
/dev/ttyUSB0
:ls /dev/ttyUSB*
/dev/ttyUSB0Redefina o RCP com
sudo ot-ctl reset
.
Verifique o status do RCP novamente com sudo ot-ctl state
.