Ce guide présente la compilation et la configuration de base du routeur de bord OpenThread (OTBR). Une fois cette procédure terminée, vous disposerez d'un OTBR qui fonctionne comme un appareil Thread complet (FTD) dans une conception RCP.
Configurer la plate-forme
Configurez une plate-forme matérielle compatible :
Compiler et flasher le RCP
OTBR s'exécute sur une conception RCP. Sélectionnez une plate-forme OpenThread compatible à utiliser comme RCP, puis suivez les instructions de compilation et de flashage pour cette plate-forme.
Pour obtenir une présentation de la compilation d'OpenThread, consultez le guide de compilation.
Vous trouverez des instructions spécifiques sur la création de plates-formes compatibles avec GNU Autotools dans le dossier de plate-forme de chaque exemple.
Installer OTBR
L'OTBR communique avec le RCP via Spinel. Pour installer OTBR sur la plate-forme matérielle configurée, procédez comme suit.
Clonez le dépôt OTBR :
git clone https://github.com/openthread/ot-br-posix
Installer des dépendances
La configuration par défaut active BORDER_ROUTING
pour la plupart des plates-formes. Pour obtenir la liste complète des options par défaut d'OTBR, consultez les exemples de plate-forme sur GitHub.
Sélectionnez votre plate-forme, puis cliquez sur default
, si cette option est disponible.
Utilisation par défaut:
cd ot-br-posix
./script/bootstrap
BeagleBone Black avec Network Manager (facultatif) :
cd ot-br-posix
NETWORK_MANAGER=1 NETWORK_MANAGER_WIFI=1 ./script/bootstrap
Compiler et installer OTBR
Utilisation par défaut. Le script de configuration active le routage de bordure par défaut. Pour activer le routage en périphérie, spécifiez l'interface Ethernet ou Wi-Fi de votre plate-forme:
Utilisez Ethernet :
INFRA_IF_NAME=eth0 ./script/setup
Utilisez le Wi-Fi :
INFRA_IF_NAME=wlan0 ./script/setup
BeagleBone Black Utiliser Network Manager (facultatif) :
NETWORK_MANAGER=1 NETWORK_MANAGER_WIFI=1 ./script/setup
Associer et configurer un appareil RCP
Connectez l'appareil RCP flashé à la plate-forme de routeur de bordure via USB.
Pour configurer le port série de l'appareil RCP dans otbr-agent
, commencez par déterminer le nom du port série de l'appareil RCP en vérifiant /dev
:
ls /dev/tty*
Vérifiez ensuite les paramètres de otbr-agent
.
cd /etc/default
cat otbr-agent
Le fichier de configuration otbr-agent
contient le nom de votre interface Thread, le nom de l'interface Ethernet ou Wi-Fi, ainsi que le nom du port série RCP.
OTBR_AGENT_OPTS="-I wpan0 -B OTBR_INFRA_IF_NAME spinel+hdlc+uart:///dev/ttyACM0 trel://OTBR_INFRA_IF_NAME"
Tous les appareils ne se connectent pas avec le même nom de port série. Les noms de port les plus courants sont ttyACM*
et ttyUSB*
. Reportez-vous à la documentation de votre appareil pour déterminer le nom de port série attendu.
Si nécessaire, mettez à jour le fichier de configuration otbr-agent
. Par exemple, pour une interface Wi-Fi et un nom de port série ttyUSB0
:
OTBR_AGENT_OPTS="-I wpan0 -B wlan0 spinel+hdlc+uart:///dev/ttyUSB0 trel://wlan0"
Pour mettre à jour une interface Ethernet :
OTBR_AGENT_OPTS="-I wpan0 -B eth0 spinel+hdlc+uart:///dev/ttyUSB0 trel://eth0"
Arrêtez et redémarrez le routeur de bordure. Si vous utilisez la plate-forme BeagleBone Black, n'oubliez pas d'maintenir le bouton BOOT enfoncé pendant ce processus.
Le service OTBR doit démarrer au démarrage.
Vérifier les services
Vérifiez que tous les services requis sont activés :
sudo systemctl status
Si le script setup
a réussi, les services suivants s'affichent dans la sortie :
mdns.service
otbr-agent.service
otbr-web.service
Exemple :
● 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 ces services s'exécutent, mais que le RPi est à l'état dégradé, un autre service n'a pas démarré. Vérifiez les points suivants :
sudo systemctl --failed
Vous pouvez également vérifier chaque service individuellement :
sudo service mdns status
sudo service otbr-agent status
sudo service otbr-web status
otbr-web
est activé par défaut pour la plupart des plates-formes.
Si otbr-web
n'est pas installé, essayez de transmettre l'indicateur WEB_GUI
:
WEB_GUI=1 ./script/bootstrap
INFRA_IF_NAME=wlan0 WEB_GUI=1 ./script/setup
Valider le RCP
Vérifiez que le RCP est dans l'état approprié :
sudo ot-ctl state
ot-ctl
est un utilitaire de ligne de commande fourni avec OTBR. Il permet de communiquer avec l'interface PAN du thread (par défaut, wpan0
) à laquelle otbr-agent
est lié dans la conception RCP.
Si le RCP s'exécute correctement et que le nœud n'est pas membre d'un réseau Thread, la sortie doit être semblable à celle-ci:
disabled
Si le résultat est OpenThread daemon is not running
, procédez comme suit:
- Vérifiez que le routeur de bordure dispose d'une puissance suffisante (utilisez l'adaptateur secteur externe approprié).
- Déconnectez et rebranchez la carte RCP sur la plate-forme du routeur de bordure.
Vérifiez que l'appareil série RCP est présent. Par exemple, si l'appareil doit être associé à
/dev/ttyUSB0
:ls /dev/ttyUSB*
/dev/ttyUSB0Réinitialisez le RCP avec
sudo ot-ctl reset
.
Vérifiez à nouveau l'état du RCP avec sudo ot-ctl state
.