WB Modbus Devices Firmware Update: различия между версиями

Материал из Wiren Board
м
м (Переписал, теперь нужно часть текста вынести во включения и дополнить.)
Строка 2: Строка 2:
{{DISPLAYTITLE:Обновление прошивок на устройствах Wiren Board}}
{{DISPLAYTITLE:Обновление прошивок на устройствах Wiren Board}}


== Автоматическое обновление прошивки с контроллера Wiren Board ==
== Автоматическое обновление ==
Прошивку устройств, подключенных к контроллеру Wiren Board рекомендуем обновлять с помощью утилиты [[wb-mcu-fw-updater]]. Утилита проверяет наличие новой версии прошивки для всех подключенных устройств и, при необходимости, обновляет их.  
[[Image: Wb-fw-mcu-updater example 1.png |300px|thumb|right| Пример работы wb-fw-mcu-updater ]]
Автоматическое обновление выполняется с помощью предустановленной на контроллеры Wiren Board утилиты [[Wb-mcu-fw-updater | wb-mcu-fw-updater]] и позволяет установить свежую версию ПО сразу на все подключенные устройства или отдельно на каждое. Определение сигнатуры (модели) устройства, новой прошивки произойдет автоматически.


Для установки выполните в консоли:
Для использования утилиты нужен доступ в интернет, если это не так — смотрите раздел про ручное обновление.
<syntaxhighlight lang="bash">
dpkg -s wb-mcu-fw-updater || (apt update && apt install wb-mcu-fw-updater)
</syntaxhighlight>


Утилита автоматически останавливает сервис <code>wb-mqtt-serial</code> перед началом работы и запускает заново после. Если вместо <code>wb-mqtt-serial</code> используется стороннее ПО, опрашивающее устройства по последовательному порту — остановите это ПО.
Вы можете использовать утилиту и без нашего контроллера, для этого вам понадобится Debian-подобная ОС Linux. Читайте инструкцию по установке в [[Wb-mcu-fw-updater | описании утилиты]].


Для обновления прошивки всех устройств, описанных в разделе Serial Devices Configuration (файл <code>/etc/wb-mqtt-serial.conf</code>), выполните:
Для обновления прошивки всех устройств, описанных в разделе Serial Devices Configuration (файл /etc/wb-mqtt-serial.conf), выполните:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
wb-mcu-fw-updater update-all
wb-mcu-fw-updater update-all
Строка 22: Строка 20:
</syntaxhighlight>
</syntaxhighlight>


Подробную информацию смотрите в выводе
Полный список параметров и примеры работы смотрите на [[Wb-mcu-fw-updater | странице утилиты]].
 
== Ручное обновление ==
Мы не рекомендуем этот способ, но если на объекте нет доступа в интернет — это единственный вариант.
 
Ручное обновление можно сделать утилитой [[Wb-mcu-fw-flasher | wb-mcu-fw-flasher]], которую нужно предварительно установить. Способ установки отличается и зависит от используемой операционной системы.
 
=== Установка утилиты ===
==== Контроллер Wiren Board ====
Утилита есть в репозитории контроллера, поэтому обновите список пакетов и установите ее:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
wb-mcu-fw-updater --help
apt update
apt install wb-mcu-fw-flasher
</syntaxhighlight>
</syntaxhighlight>


<gallery mode="packed" heights="200px">
==== ОС Linux ====
File:Wb-fw-mcu-updater example 1.png|Пример работы wb-fw-mcu-updater
Если вы используете контроллер на процессоре ARM Cortex, то скачайте и установите deb-пакет из [[http://releases.contactless.ru/?prefix=stable/stretch/pool/main/w/wb-mcu-fw-flasher/ нашего репозитория]].
</gallery>


== Ручная прошивка устройств ==
Для установки на компьютер с ОС Linux скачайте на компьютер пакет [[Wb-mcu-fw-flasher_1.0.3_amd64-all.deb]].
Если у контроллера нет доступа в интернет или у вас не получилось обновить прошивку устройства автоматически, вы можете использовать сервисную утилиту [[Wb-mcu-fw-flasher | wb-mcu-fw-flasher]].
 
Для установки, выполните команды:
<syntaxhighlight lang="bash">
apt update
apt install libmodbus5
apt install ./Wb-mcu-fw-flasher_1.0.3_amd64-all.deb #измените имя пакета, если необходимо
</syntaxhighlight>
 
==== ОС Windows ====
Для Windows мы подготовили windows-версию утилиты, которая не требует установки. Скачать можно по ссылке [[Wb-mcu-fw-flasher_1.0.3.zip]]
 
=== Выбор прошивки ===
Прошивки публикуются на сайте [http://fw-releases.wirenboard.com/?prefix=fw/ fw-releases.wirenboard.com] в виде файлов с расширением <code>.wbfw</code>.
 
Прошивки сгруппированы по версиям и сигнатурам (типам) устройств.
 
Каждое modbus-устройство Wiren Board имеет сигнатуру — наименование аппаратного типа устройства. Устройство будет прошито только если его сигнатура совпадет с сигнатурой в прошивке.
 
Сигнатура устройства хранится в формате строки из 12 ASCII символов, по одному символу в регистре, и доступна по адресу <code>290</code>.
 
Сигнатуру устройства в ОС Linux и на контроллере можно с помощью утилиты [[Modbus-client |modbus_client]]. Узнаем сигнатуру устройства с '''адресом 10''' и подключенного к порту '''ttyRS485-1'''
<syntaxhighlight lang="bash">
echo -e $(modbus_client -mrtu -pnone -s2 /dev/ttyRS485-1 -a 10 -t3 -r 290 -c 12 | grep Data | sed -e 's/.*Data://' -e 's/ 0x00/\\x/g')
</syntaxhighlight>
 
В результате будет выведена строка с сигнатурой, например '''mr6c'''.
 
О том, как читать регистры из ОС Windows смотрите в статье [[Working with WB devices without a controller | Работа с устройствами Wiren Board без контроллера]]
 
Теперь, имея сигнатуру вы можете скачать прошивку устройства:
# Перейдите на сайт [http://fw-releases.wirenboard.com/?prefix=fw/ fw-releases.wirenboard.com].
# Выберите папку '''by-signature'''.
# Найдите и откройте папку с нужной сигнатурой устройства.
# Выберите одну из веток:
#:*stable — стабильные версии прошивок. Чтобы скачать самую свежую, выберите файл latest.wbfw.
#:*unstable — экспериментальные версии прошивок.
 
=== Подготовка устройства ===
 
Прошивать устройства можно:
* по modbus-адресу устройства.
* по широковещательному адресу — <code>0</code>.
 
Для прошивки нескольких устройств на шине нужно поочереди перевести их в режим загрузчика и прошить.
 
Устройство переходит в режим загрузчика, если:
* на устройстве имеется корректная прошивка, то первые 2 секунды после включения питания устройство работает в режиме загрузчика;
* на устройстве нет корректной прошивки (например, был сбой при обновлении прошивки), то режим загрузчика активен постоянно;
* при работе основной программы записать 1 в holding-регистр 129 (0x81) — в этом случае устройство перезагружается и остается в режиме загрузчика 120 секунд. Это можно сделать, запустив утилиту <code>wb-mcu-fw-flasher</code> с ключем <code>-j</code>.
 
В режиме загрузчика индикатор Status устройства мигает с периодом 1 секунда, а при записи прошивки мигание индикатора учащается.
 
=== Загрузка прошивки в устройство ===
Для загрузки прошивки выполните шаги:
# Переведите устройство в режим загрузчика.
# Если вы прошиваете устройство с контроллера, то остановите драйвер [[wb-mqtt-serial]] или иное ПО, которое опрашивает устройство.
# Загрузите файл прошивки на [[View controller files from your computer | контроллер]] или другое устройство, с на котором установлена утилита прошивки.
# Прошиваете устройство командой:
#:* на контроллере или в ОС Linux:
#:<syntaxhighlight lang="bash">
wb-mcu-fw-flasher -j -d /dev/ttyRS485-1 -a 25 -f mr6c__1.14.1_master_19c9ca5.wbfw
</syntaxhighlight>
#:* в ОС Windows:
#:<syntaxhighlight lang="bash">
#команда для прошивки из Windows
</syntaxhighlight>
 
Успешный процесс прошивки выглядит так:
<syntaxhighlight lang="bash">
wb-mcu-fw-flasher -j -d /dev/ttyRS485-1 -a 1 -f mr6c__1.14.1_master_19c9ca5.wbfw   
  /dev/ttyRS485-1 opened successfully.
  Send jump to bootloader command and wait 2 seconds...
  Error: Connection timed out.
  May be device already in bootloader, try to send firmware...
  mr6c__1.14.1_master_19c9ca5.wbfw opened successfully, size 12136 bytes
  Sending info block... OK
  Sending data block 89 of 89... OK.
  All done!
</syntaxhighlight>
 
Если не сигнатура устройства и файла прошивки не совпали, то вы получите сообщение об ошибке:
<syntaxhighlight lang="bash">
Sending info block...
  Error while sending info block: Slave device or server failure
  Data format is invalid or firmware signature doesn't match the device
</syntaxhighlight>

Версия 17:56, 25 мая 2021

Это черновик страницы. Последняя правка сделана 25.05.2021 пользователем A.Degtyarev.


Автоматическое обновление

Пример работы wb-fw-mcu-updater

Автоматическое обновление выполняется с помощью предустановленной на контроллеры Wiren Board утилиты wb-mcu-fw-updater и позволяет установить свежую версию ПО сразу на все подключенные устройства или отдельно на каждое. Определение сигнатуры (модели) устройства, новой прошивки произойдет автоматически.

Для использования утилиты нужен доступ в интернет, если это не так — смотрите раздел про ручное обновление.

Вы можете использовать утилиту и без нашего контроллера, для этого вам понадобится Debian-подобная ОС Linux. Читайте инструкцию по установке в описании утилиты.

Для обновления прошивки всех устройств, описанных в разделе Serial Devices Configuration (файл /etc/wb-mqtt-serial.conf), выполните:

wb-mcu-fw-updater update-all

Для обновления прошивки конкретного устройства, укажите порт и его адрес Modbus:

wb-mcu-fw-updater update-fw /dev/ttyRS485-2 -a70

Полный список параметров и примеры работы смотрите на странице утилиты.

Ручное обновление

Мы не рекомендуем этот способ, но если на объекте нет доступа в интернет — это единственный вариант.

Ручное обновление можно сделать утилитой wb-mcu-fw-flasher, которую нужно предварительно установить. Способ установки отличается и зависит от используемой операционной системы.

Установка утилиты

Контроллер Wiren Board

Утилита есть в репозитории контроллера, поэтому обновите список пакетов и установите ее:

apt update
apt install wb-mcu-fw-flasher

ОС Linux

Если вы используете контроллер на процессоре ARM Cortex, то скачайте и установите deb-пакет из [нашего репозитория].

Для установки на компьютер с ОС Linux скачайте на компьютер пакет Wb-mcu-fw-flasher_1.0.3_amd64-all.deb.

Для установки, выполните команды:

apt update
apt install libmodbus5
apt install ./Wb-mcu-fw-flasher_1.0.3_amd64-all.deb #измените имя пакета, если необходимо

ОС Windows

Для Windows мы подготовили windows-версию утилиты, которая не требует установки. Скачать можно по ссылке Wb-mcu-fw-flasher_1.0.3.zip

Выбор прошивки

Прошивки публикуются на сайте fw-releases.wirenboard.com в виде файлов с расширением .wbfw.

Прошивки сгруппированы по версиям и сигнатурам (типам) устройств.

Каждое modbus-устройство Wiren Board имеет сигнатуру — наименование аппаратного типа устройства. Устройство будет прошито только если его сигнатура совпадет с сигнатурой в прошивке.

Сигнатура устройства хранится в формате строки из 12 ASCII символов, по одному символу в регистре, и доступна по адресу 290.

Сигнатуру устройства в ОС Linux и на контроллере можно с помощью утилиты modbus_client. Узнаем сигнатуру устройства с адресом 10 и подключенного к порту ttyRS485-1

echo -e $(modbus_client -mrtu -pnone -s2 /dev/ttyRS485-1 -a 10 -t3 -r 290 -c 12 | grep Data | sed -e 's/.*Data://' -e 's/ 0x00/\\x/g')

В результате будет выведена строка с сигнатурой, например mr6c.

О том, как читать регистры из ОС Windows смотрите в статье Работа с устройствами Wiren Board без контроллера

Теперь, имея сигнатуру вы можете скачать прошивку устройства:

  1. Перейдите на сайт fw-releases.wirenboard.com.
  2. Выберите папку by-signature.
  3. Найдите и откройте папку с нужной сигнатурой устройства.
  4. Выберите одну из веток:
    • stable — стабильные версии прошивок. Чтобы скачать самую свежую, выберите файл latest.wbfw.
    • unstable — экспериментальные версии прошивок.

Подготовка устройства

Прошивать устройства можно:

  • по modbus-адресу устройства.
  • по широковещательному адресу — 0.

Для прошивки нескольких устройств на шине нужно поочереди перевести их в режим загрузчика и прошить.

Устройство переходит в режим загрузчика, если:

  • на устройстве имеется корректная прошивка, то первые 2 секунды после включения питания устройство работает в режиме загрузчика;
  • на устройстве нет корректной прошивки (например, был сбой при обновлении прошивки), то режим загрузчика активен постоянно;
  • при работе основной программы записать 1 в holding-регистр 129 (0x81) — в этом случае устройство перезагружается и остается в режиме загрузчика 120 секунд. Это можно сделать, запустив утилиту wb-mcu-fw-flasher с ключем -j.

В режиме загрузчика индикатор Status устройства мигает с периодом 1 секунда, а при записи прошивки мигание индикатора учащается.

Загрузка прошивки в устройство

Для загрузки прошивки выполните шаги:

  1. Переведите устройство в режим загрузчика.
  2. Если вы прошиваете устройство с контроллера, то остановите драйвер wb-mqtt-serial или иное ПО, которое опрашивает устройство.
  3. Загрузите файл прошивки на контроллер или другое устройство, с на котором установлена утилита прошивки.
  4. Прошиваете устройство командой:
    • на контроллере или в ОС Linux:
    wb-mcu-fw-flasher -j -d /dev/ttyRS485-1 -a 25 -f mr6c__1.14.1_master_19c9ca5.wbfw
    
    • в ОС Windows:
    #команда для прошивки из Windows
    

Успешный процесс прошивки выглядит так:

 wb-mcu-fw-flasher -j -d /dev/ttyRS485-1 -a 1 -f mr6c__1.14.1_master_19c9ca5.wbfw    
   /dev/ttyRS485-1 opened successfully.
   Send jump to bootloader command and wait 2 seconds...
   Error: Connection timed out.
   May be device already in bootloader, try to send firmware...
   mr6c__1.14.1_master_19c9ca5.wbfw opened successfully, size 12136 bytes
   Sending info block... OK
   Sending data block 89 of 89... OK.
   All done!

Если не сигнатура устройства и файла прошивки не совпали, то вы получите сообщение об ошибке:

Sending info block...
   Error while sending info block: Slave device or server failure 
   Data format is invalid or firmware signature doesn't match the device