Программное обеспечение контроллеров Wiren Board
Общая информация
Если у вас контроллер из партии v7.2.1A, выпущенной в декабре 2021 г. и в консоли написано «This is a development release» — перед обновлением или сбросом, переключите его на релиз. Инструкции в этой статье работают на контроллере Wiren Board 7.
ПО контроллера выпускается в формате релизов stable — новые функции каждые три месяца, и testing — новые функции каждый день. Между релизами можно переключаться. С завода на контроллере установлен stable.
Прошивку контроллера Wiren Board можно обновить в консоли с помощью apt, через веб-интерфейс. Также контроллер можно сбросить к заводским настройкам и удалить пользовательские данные.
Для обновления через веб-интерфейс или с USB-флешки вам понадобится fit-файл прошивки, который можно скачать в нашем репозитории или по прямой ссылке на stable-релиз: Wiren Board 7.x.
Журнал изменений в релизах
Ветка | Имя |
---|---|
stable | wb-2407 • wb-2404 • wb-2401 • wb-2310 • wb-2307 • wb-2304 • wb-2207 • wb-2204 • wb-2201 • wb-2110 • wb-2108 • wb-2104 |
testing | скользящий релиз, изменения |
Проверка обновлений
Обновление в консоли через apt
Обновление через веб-интерфейс
Обновление и сброс через разъём Debug Network
В контроллере есть разъём Debug Network, который можно использовать для обновления прошивки или сброса настроек:
- Загрузите на компьютер fit-файл прошивки и переименуйте его в:
wb_update.fit
для обновления илиwb_update_FACTORYRESET.fit
для сброса контроллера к заводским настройкам. - Выключите контроллер кнопкой на корпусе.
- Подключите контроллер к компьютеру через разъём Debug Network. Вам потребуется кабель USB-C с возможностью передачи данных.
- Зажмите кнопку FW и удерживайте её.
- Включите контроллер и после короткого звукового сигнала отпустите кнопку FW.
- Индикатор контроллера медленно замигает красным, а ещё через 10 секунд компьютер определит съёмный накопитель.
- Скопируйте подготовленный в шаге 1 файл на определившийся накопитель.
- Извлеките (отмонтируйте) флешку программно и отключите кабель от контроллера физически.
- В зависимости от того, какой файл вы положили, возможно два варианта:
- Контроллер начнёт обновлять прошивку.
- Контроллер издаст продолжительный звуковой сигнал, а индикатор быстро замигает красным — это запрос на сброс к заводским настройкам:
- Чтобы подтвердить сброс настроек и удалить все пользовательские данные, зажмите и держите кнопку FW.
- Контроллер пикнет четыре раза и перейдёт к сбросу настроек. Кнопку можно отпустить.
- После обновления прошивки или сброса настроек контроллер перезагрузится в рабочем режиме, а его индикатор замигает зелёным.
Вывод в Debug-консоль во время обновления прошивки: выделенная строка — момент короткого звукового сигнала:
U-Boot 2021.10-wb1.1.1-g4c04347f3e (Feb 03 2022 - 14:48:16 +0000) CPU: Allwinner R40 (SUN8I 1701) Model: Wiren Board rev. 7.2.0 (A40i) I2C: ready DRAM: 1 GiB MMC: mmc@1c0f000: 0, mmc@1c11000: 1 Loading Environment from MMC... OK In: serial@1c28000 Out: serial@1c28000 Err: serial@1c28000 Will only keep env vars: mmcpart bootcount upgrade_available uenvcmd otp_program otp_aes_program ## Info: input data size = 43 = 0x2B bootcount=0 mmcpart=2 upgrade_available=0 Environment size: 43/131068 bytes ## Resetting to default environment ## Info: input data size = 43 = 0x2B Net: No ethernet found. Hit any key to stop autoboot: 0 switch to partitions #0, OK mmc1(part 0) is current device eMMC found on device 1 Press FW button to enter firmware update mode .. Entering firmware update mode. Checking if ubootenv part is present ## Loading FIT header to 0x42000000 ... ## Loading FIT strings to 0x42000028 ... ## Loading FIT struct to 0x42000100 ... Can't find subimage 'ubootenv' Extracting kernel ## Loading FIT header to 0x42000000 ... ## Loading FIT strings to 0x42000028 ... ## Loading FIT struct to 0x42000100 ... 7772640 bytes read in 190 ms (39 MiB/s) Description: Update kernel Type: Kernel Image Compression: uncompressed Data Start: 0x42000300 Data Size: 7763680 Bytes = 7.4 MiB Architecture: ARM OS: Linux Load Address: unavailable Entry Point: unavailable Hash algo: sha1 Hash value: 8fa0750fc5f1738f05856b25f5a4c2fc9159b420 ## Verifying ... sha1+ Loading part 0 ... OK Extracting DTB ## Loading FIT header to 0x43000000 ... ## Loading FIT strings to 0x43000028 ... ## Loading FIT struct to 0x43000100 ... 63624 bytes read in 30 ms (2 MiB/s) Description: Update DTB Type: Flat Device Tree Compression: uncompressed Data Start: 0x43000440 Data Size: 54344 Bytes = 53.1 KiB Architecture: ARM Hash algo: sha1 Hash value: 88cb690e62d3e2fbe97df37350c2ee8c8abab757 ## Verifying ... sha1+ Loading part 0 ... OK Kernel image @ 0x42000000 [ 0x000000 - 0x7676e0 ] ## Flattened Device Tree blob at 43000000 Booting using the fdt blob at 0x43000000 Loading Device Tree to 49fef000, end 49fff447 ... OK Starting kernel ... [ 0.000000] Booting Linux on physical CPU 0x0 …
Сброс к заводским настройкам
Если у вас контроллер из партии v7.2.1A, выпущенной в декабре 2021 года, перед первым сбросом подготовьте контроллер по инструкции.
Процедура сброса:
- Выключите контроллер кнопкой на корпусе.
- Зажмите и не отпускайте кнопку FW, включите контроллер.
- Через 5-7 секунд раздастся короткий звуковой сигнал, отпустите кнопку.
- Индикатор будет некоторое время мигать красным, а потом раздастся длинный звуковой сигнал — запрос подтверждения на сброс к заводским настройкам.
- Чтобы подтвердить сброс и удалить все файлы, нажмите и держите кнопку FW.
- Контроллер четыре раза коротко пикнет, а индикатор мигнёт зелёным, кнопку можно отпустить.
- Дождитесь окончания сброса. В конце контроллер перезагрузится и загрузится в обычном режиме.
Пользовательские настройки и файлы
Wbincludes:Firmware Update Save DataВнимание: Отображаемое название «Программное обеспечение контроллеров Wiren Board» переопределяет ранее заданное отображаемое название «Обновление прошивки контроллера Wiren Board 7».
Описание
Установка
Программное обеспечение устанавливается на заводе на автоматизированном стенде во время производства партии контроллеров. Конечному пользователю не требуется предпринимать никаких действий для установки, все взаимодействие происходит через веб-интерфейс и командную строку.
Стоимость
Программное обеспечение поставляется бесплатно вместе с контроллерами Wiren Board.
Как устроено ПО Wiren Board
Wiren Board работает под управлением Debian Linux. Для архитектуры используемого процессора есть официальный порт, поэтому любое стандартное Linux-приложение можно установить из репозитория одной командой apt install имя_пакета
.
Все сервисы контроллера общаются между собой по общей «шине», в роли которой выступает Очередь сообщений MQTT.
По умолчанию установлены Веб-интерфейс Wiren Board, Движок правил wb-rules, а также драйвера и вспомогательные утилиты.
Опционально можно установить шлюзы для интеграции со SCADA-системами и сторонний софт. Полный список смотрите в Таблице поддерживаемых устройств, протоколов и программ.
Разработка своих решений
Вы можете разрабатывать своё ПО для контроллеров Wiren Board или собрать собственный образ прошивки с нужными вам настройками, лицензиями и пакетами. Свой образ прошивки можно установить в контроллеры самостоятельно штатными средствами, или мы можем делать это сразу на производстве при заказе отдельной партии.
Исходный код программного обеспечения контроллера доступен на GitHub. Там можно почерпнуть примеры для разработки собственного ПО.
Статьи:
- Обновление прошивки, информация для разработчиков — про структуру разделов и сборку собственного fit-файла.
- Как разрабатывать ПО для Wiren Board — статья для программистов.
- Использование встроенного крипточипа ATECCx08 и статья по теме на Хабре
- Описание протокола MQTT-RPC
Обновление прошивки и релизный цикл
Кратко о релизах
Программное обеспечение контроллеров Wiren Board состоит из множества пакетов, которые мы объединяем в релизы:
- Stable — стабильный релиз: обновление пакетов раз в три месяца и исправления критических ошибок. Рекомендуем для инсталляций, которые делает интегратор и которые работают сейчас.
- Testing — тестовый релиз: свежие версии пакетов с новыми функциями и исправлениями, но возможно и с новыми ошибками. Рекомендуем для активных пользователей (DIY), для инсталляций на стадии стройки и проектирования.
Стабильные релизы имеют номер вида wb-YYMM, где YY — год, а MM — месяц выпуска. Например, wb-2104 — релиз, выпущенный в апреле 2021 года.
Мы будем рады, если вы сможете присоединиться к использованию testing, ведь кроме получения новых фич вы поможете уменьшить количество ошибок в stable.
Ветка | Имя |
---|---|
stable | wb-2407 • wb-2404 • wb-2401 • wb-2310 • wb-2307 • wb-2304 • wb-2207 • wb-2204 • wb-2201 • wb-2110 • wb-2108 • wb-2104 |
testing | скользящий релиз, изменения |
Какой релиз на вашем контроллере
С завода на контроллерах Wiren Board установлен актуальный на момент производства стабильный релиз.
Узнать версию релиза можно в веб-интерфейсе контроллера в разделе Устройства в карточке устройства System или в консоли командой wb-release
.
Переключение между релизами
Между релизами можно переключаться вручную. Сделайте резервную копию настроек, подключитесь к контроллеру через SSH и выполните одну из команд:
- Переход со стабильного на тестовый:
wb-release -t testing
- Переход с тестового на стабильный:
wb-release -t stable
После смены релиза рекомендуем перезагрузить контроллер на случай, если обновилось ядро, а также обновить страницу веб-интерфейса в браузере со сбросом кэша (Ctrl+F5 для Chrome), чтобы загрузилась обновленная версия.
Кроме этого, сменить релиз можно с помощью прошивки контроллера fit-файлом, способы и ограничения смотрите в инструкции по обновлению ПО для вашего контроллера.
Обновление прошивки контроллера и откат к заводским настройкам
Прошивку контроллера можно обновить или вернуть его к заводскому состоянию с удалением всех данных.
Все ревизии контроллера можно обновить через менеджер пакетов apt или веб-интерфейс, а в относительно свежих добавилась возможность обновления с флеш-накопителя и через Debug Network.
Инструкции:
Ревизия контроллера в консоли, при подключении по SSH. Сразу под баннером, зелёными цифрами 6.7.2
Список сервисов и их назначение
Список сервисов, запущенных на контроллере, их статус и описание можно получить командой:
systemctl list-units --type=service
Про управление сервисами читайте в статье Диагностика ошибок в работе контроллера.
Имя сервиса | Описание |
avahi-daemon.service | Avahi mDNS/DNS-SD Stack |
bluetooth.service | Bluetooth service |
cgmanager.service | Cgroup management daemon |
cron.service | Regular background program processing daemon |
dbus.service | D-Bus System Message Bus |
dnsmasq.service | dnsmasq - A lightweight DHCP and caching DNS server |
getty@tty1.service | Getty on tty1 |
hostapd.service | LSB: Advanced IEEE 802.11 management daemon |
kmod-static-nodes.service | Create list of required static device nodes for the current kernel |
knxd.service | KNX Daemon |
mosquitto.service | Mosquitto MQTT v3.1/v3.1.1 Broker |
netplug.service | LSB: Brings up/down network automatically |
networking.service | Raise network interfaces |
nginx.service | A high performance web server and a reverse proxy server |
ntp.service | LSB: Start NTP daemon |
rsyslog.service | System Logging Service |
serial-getty@ttymxc0.service | Serial Getty on ttymxc0 |
ssh.service | OpenBSD Secure Shell server |
systemd-fsck-root.service | File System Check on Root Device |
systemd-fsck@dev-mmcblk0p6.service | File System Check on /dev/mmcblk0p6 |
systemd-journal-flush.service | Flush Journal to Persistent Storage |
systemd-journald.service | Journal Service |
systemd-logind.service | Login Service |
systemd-modules-load.service | Load Kernel Modules |
systemd-random-seed.service | Load/Save Random Seed |
systemd-modules-load.service | Load Kernel Modules |
systemd-random-seed.service | Load/Save Random Seed |
systemd-remount-fs.service | Remount Root and Kernel File Systems |
systemd-sysctl.service | Apply Kernel Variables |
systemd-tmpfiles-setup-dev.service | Create Static Device Nodes in /dev |
systemd-tmpfiles-setup.service | Create Volatile Files and Directories |
systemd-udev-trigger.service | udev Coldplug all Devices |
systemd-udevd.service | udev Kernel Device Manager |
systemd-update-utmp.service | Update UTMP about System Boot/Shutdown |
systemd-user-sessions.service | Permit User Sessions |
user@0.service | User Manager for UID 0 |
watchdog.service | watchdog daemon |
wb-configs-early.service | prepare mounts and symlinks to config files |
wb-configs.service | watch config files |
wb-gsm-rtc.service | LSB: initscript to use GSM modem integrated RTC |
wb-homa-ism-radio.service | LSB: MQTT driver for WB HomA for RFM69 ISM radio |
wb-hwconf-manager.service | LSB: Hardware configuration with Device Tree overlays |
wb-init.service | LSB: board-specific initscript |
wb-mqtt-adc.service | MQTT Driver for ADC |
wb-mqtt-confed.service | LSB: Configuration Editor Backend |
wb-mqtt-db.service | Wiren Board database logger |
wb-mqtt-gpio.service | MQTT Driver for GPIO-controlled switches |
wb-mqtt-knx.service | LSB: : Wiren Board MQTT KNX bridge |
wb-mqtt-logs.service | Wiren Board journald to MQTT gateway |
wb-mqtt-mbgate.service | Wiren Board MQTT to Modbus TCP gateway |
wb-mqtt-opcua.service | Wiren Board MQTT to OPC UA gateway |
wb-mqtt-serial.service | MQTT Driver for serial devices |
wb-mqtt-w1.service | Kernel 1-Wire MQTT driver for WB-HomA |
wb-prepare.service | initialize filesystems at first boot |
wb-repart.service | prepare partitions at first boot |
wb-rules.service | MQTT Rule engine for Wiren Board |
wb-systime-adjust.service | Compensation of systime in PPM from value, stored in device-tree (with opposite sign) |
wb-watch-update.service | LSB: Firmware update monitor |