Посмотреть исходный код на GitHub
В этом руководстве описывается базовая сборка и настройка пограничного маршрутизатора OpenThread (OTBR). По завершении этой процедуры у вас будет OTBR, который функционирует как полнопоточное устройство (FTD) в конструкции RCP.
Настроить платформу
Настройте поддерживаемую аппаратную платформу:
Сборка и прошивка RCP
OTBR работает по схеме RCP. Выберите поддерживаемую платформу OpenThread для использования в качестве RCP и следуйте инструкциям по сборке и обновлению для этой платформы.
Обзор сборки OpenThread см. в Руководстве по сборке .
Конкретные инструкции по созданию поддерживаемых платформ с помощью GNU Autotools можно найти в папке платформы каждого примера.
Установить ОТБР
OTBR связывается с RCP через шпинель. Чтобы установить OTBR на настроенную аппаратную платформу, выполните следующие действия.
Клонируйте репозиторий OTBR:
git clone https://github.com/openthread/ot-br-posix
Установить зависимости
Конфигурация по умолчанию включает BORDER_ROUTING
для большинства платформ. Полный список флагов OTBR по умолчанию см. в примерах платформ на GitHub . Выберите свою платформу, затем нажмите default
, если доступно.
Использование по умолчанию:
cd ot-br-posix
./script/bootstrap
BeagleBone Black с сетевым менеджером (опционально):
cd ot-br-posix
NETWORK_MANAGER=1 NETWORK_MANAGER_WIFI=1 ./script/bootstrap
Скомпилируйте и установите OTBR
Использование по умолчанию. Сценарий установки по умолчанию включает пограничную маршрутизацию. Чтобы включить пограничную маршрутизацию, укажите интерфейс Ethernet или Wi-Fi вашей платформы:
Используйте Ethernet:
INFRA_IF_NAME=eth0 ./script/setup
Используйте Wi-Fi:
INFRA_IF_NAME=wlan0 ./script/setup
БиглБоун Блэк . Используйте сетевой менеджер (необязательно):
NETWORK_MANAGER=1 NETWORK_MANAGER_WIFI=1 ./script/setup
Подключите и настройте устройство RCP
Подключите прошитое устройство RCP к платформе Border Router через USB.
Чтобы настроить последовательный порт устройства RCP в otbr-agent
, сначала определите имя последовательного порта для устройства RCP, проверив /dev
:
ls /dev/tty*
Далее проверьте настройки вашего otbr-agent
.
cd /etc/default
cat otbr-agent
Файл конфигурации otbr-agent
содержит имя вашего интерфейса Thread, имя интерфейса Ethernet или Wi-Fi и имя последовательного порта RCP.
OTBR_AGENT_OPTS="-I wpan0 -B OTBR_INFRA_IF_NAME spinel+hdlc+uart:///dev/ttyACM0 trel://OTBR_INFRA_IF_NAME"
Не все устройства подключаются с одинаковым именем последовательного порта. Наиболее распространенные имена портов — ttyACM*
и ttyUSB*
. Обратитесь к документации вашего устройства, чтобы определить ожидаемое имя последовательного порта.
При необходимости обновите файл конфигурации otbr-agent
. Например, для интерфейса Wi-Fi и имени последовательного порта ttyUSB0
:
OTBR_AGENT_OPTS="-I wpan0 -B wlan0 spinel+hdlc+uart:///dev/ttyUSB0 trel://wlan0"
Чтобы обновить интерфейс Ethernet:
OTBR_AGENT_OPTS="-I wpan0 -B eth0 spinel+hdlc+uart:///dev/ttyUSB0 trel://eth0"
Выключите и включите пограничный маршрутизатор. Если вы используете платформу BeagleBone Black, не забудьте при этом удерживать кнопку BOOT .
Служба OTBR должна запуститься при загрузке.
Проверить услуги
Убедитесь, что все необходимые службы включены:
sudo systemctl status
Если сценарий setup
прошел успешно, в выходных данных появятся следующие службы:
-
mdns.service
-
otbr-agent.service
-
otbr-web.service
Например:
● 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
Если эти службы работают, но RPi находится в ухудшенном состоянии, значит, не удалось запустить какую-то другую службу. Проверьте, какие:
sudo systemctl --failed
Вы также можете проверить каждую услугу отдельно:
sudo service mdns status
sudo service otbr-agent status
sudo service otbr-web status
otbr-web
включен по умолчанию для большинства платформ . Если otbr-web
не установлен, попробуйте передать флаг WEB_GUI
:
WEB_GUI=1 ./script/bootstrap
INFRA_IF_NAME=wlan0 WEB_GUI=1 ./script/setup
Проверить RCP
Убедитесь, что RCP находится в правильном состоянии:
sudo ot-ctl state
ot-ctl
— это утилита командной строки, входящая в состав OTBR. Он используется для связи с интерфейсом Thread PAN (по умолчанию — wpan0
), к которому привязан otbr-agent
в проекте RCP.
Если RCP успешно запущен и узел не является членом сети потоков, выходные данные должны быть аналогичны приведенным ниже:
disabled
Если в результате выводится сообщение о том, что OpenThread daemon is not running
, устраните неполадки, выполнив следующие действия:
- Убедитесь, что пограничный маршрутизатор имеет достаточную мощность (используйте соответствующий внешний адаптер переменного тока).
- Отсоедините и снова подключите плату RCP к платформе пограничного маршрутизатора.
Убедитесь, что последовательное устройство RCP присутствует. Например, если устройство должно быть подключено к
/dev/ttyUSB0
:ls /dev/ttyUSB*
/dev/ttyUSB0Сбросьте RCP с помощью
sudo ot-ctl reset
.
Еще раз проверьте статус RCP с помощью sudo ot-ctl state
.