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:
- Verifique se o roteador de borda tem energia suficiente (use a fonte de alimentação externa apropriada ou adaptador de rede).
- Desconecte e reconecte a placa RCP à plataforma do roteador de borda.
Verifique se o dispositivo serial do RCP está presente. Por exemplo, se o dispositivo precisa ser anexado a
/dev/ttyUSB0
:ls /dev/ttyUSB*
/dev/ttyUSB0Redefina o RCP com
sudo ot-ctl reset
.
Verifique o status do RCP de novo com sudo ot-ctl state
.