Сборка и настройка пограничного маршрутизатора OpenThread

Посмотреть исходный код на GitHub

Это руководство охватывает базовую сборку и настройку граничного маршрутизатора OpenThread (OTBR). По завершении этой процедуры у вас будет OTBR, который функционирует как Full Thread Device (FTD) в проекте RCP.

Настроить платформу

Настройте поддерживаемую аппаратную платформу:

Сборка и прошивка RCP

OTBR работает по дизайну RCP. Выберите поддерживаемую платформу OpenThread для использования в качестве RCP и следить за зданием и мигающие инструкциями для этой платформы.

Для получения дополнительной информации о построении OpenThread см Руководство здания .

Конкретные инструкции по строительству поддерживаемых платформ с GNU Autotools можно найти в каждом примере в папке платформы .

Установить OTBR

OTBR связывается с RCP через шпинель. Чтобы установить OTBR на настроенную аппаратную платформу, выполните следующие действия.

Клонируйте репозиторий OTBR:

git clone https://github.com/openthread/ot-br-posix

Установите зависимости:

cd ot-br-posix
./script/bootstrap

Скомпилируйте и установите OTBR. Обратите внимание, что сценарий установки по умолчанию включает граничную маршрутизацию. Чтобы включить пограничную маршрутизацию, укажите интерфейс Ethernet или Wi-Fi вашей платформы.

Чтобы использовать Ethernet:

INFRA_IF_NAME=eth0 ./script/setup

Чтобы использовать Wi-Fi:

INFRA_IF_NAME=wlan0 ./script/setup

Подключите и настройте устройство RCP

Подключите прошитое устройство RCP к платформе Border Router через USB.

Для настройки последовательного порта RCP устройства в otbr-agent , во- первых, определить имя последовательного порта для устройства RCP путем проверки /dev :

ls /dev/tty*

Далее, добавьте это в /etc/default/otbr-agent и /etc/default/otbr-agent по /etc/default/otbr-agent . Например, для последовательного порта имя ttyUSB0 :

OTBR_AGENT_OPTS="-I wpan0 spinel+hdlc+uart:///dev/ttyUSB0"

Выключите и снова включите пограничный маршрутизатор. При использовании платформы BeagleBone Black, не забудьте удерживать кнопку BOOT при этом.

Служба OTBR должна запускаться при загрузке.

Проверить услуги

Убедитесь, что все необходимые службы включены:

sudo systemctl status

Если setup скрипта был успешным, следующие услуги в выводе:

  • avahi-daemon.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
  # enabled  ├─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
             ├─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

Проверить RCP

Убедитесь, что RCP находится в правильном состоянии:

sudo ot-ctl state

ot-ctl является утилита командной строки снабжена OTBR. Он используется для связи с интерфейсом Thread PAN ( по умолчанию wpan0 ) , что otbr-agent обязан в разработке RCP.

Если RCP успешно работает и узел не является членом сети потоков, выходные данные должны быть аналогичны приведенным ниже:

disabled

Если выход OpenThread daemon is not running , проведите диагностику со следующими:

  1. Убедитесь, что на пограничный маршрутизатор достаточно питания (используйте подходящий внешний адаптер переменного тока).
  2. Отключите и снова подключите плату RCP к платформе пограничного маршрутизатора.
  3. Убедитесь, что серийное устройство RCP присутствует. Например, если устройство должно быть присоединено к /dev/ttyUSB0 :

    ls /dev/ttyUSB*
    /dev/ttyUSB0
    
  4. Сброс с RCP sudo ot-ctl reset .

Проверьте состояние RCP снова sudo ot-ctl state .