Обновление bootloader окирпичило MAI

Добрый день!

Решил на всех модулях обновить бутлоадер на 1.3.0. 20+ модулей прошло нормально, но MAI6 не смог.

root@wirenboard:~# wb-mcu-fw-updater update-bl /dev/ttyMOD2 -a 63
2023-11-12 22:55:22,907 Will find serial port settings for (/dev/ttyMOD2 : 63; response_timeout: 0.20)...
2023-11-12 22:55:56,158 Has found serial port settings: {'baudrate': 19200, 'parity': 'O', 'stopbits': 2}
2023-11-12 22:55:57,758 bootloader (wb-mai6 63 on /dev/ttyMOD2):
2023-11-12 22:55:57,759 Update: 1.2.2 -> 1.3.0 (wb-mai6 63 /dev/ttyMOD2)
2023-11-12 22:56:00,290 Flashing /var/lib/wb-mcu-fw-updater/bootloader/wb-bootloader-updater_wb-mai6__1.3.0_master_c13691c.wbfw
100%|###########################################################################################################################################|64/64
2023-11-12 22:56:16,138 Bootloader was successfully flashed. Will flash released firmware for "wb-mai6"
2023-11-12 22:56:19,633 Flashing /var/lib/wb-mcu-fw-updater/wb-mai6__2.0.5_main_0a57066.wbfw
 24%|#################################2                                                                                                        |60/249
2023-11-12 22:57:26,454 Flashing bootloader to (/dev/ttyMOD2 63; response_timeout: 0.20s) has failed!
2023-11-12 22:57:26,455 
root@wirenboard:~# wb-mcu-fw-updater update-bl /dev/ttyMOD2 -a 63
2023-11-12 22:58:13,481 Device (/dev/ttyMOD2 63; response_timeout: 0.20s) supposed to be alive, but found in bootloader
2023-11-12 22:58:13,961 Will flash bootloader v:latest to bring wb-mai6 (/dev/ttyMOD2 63; response_timeout: 0.20s) alive
2023-11-12 22:58:14,452 Flashing /var/lib/wb-mcu-fw-updater/bootloader/wb-bootloader-updater_wb-mai6__1.3.0_master_c13691c.wbfw
100%|###########################################################################################################################################|64/64
2023-11-12 22:58:33,710 Flashing /var/lib/wb-mcu-fw-updater/wb-mai6__2.0.5_main_0a57066.wbfw
 24%|#################################2                                                                                                        |60/249
2023-11-12 22:59:40,556 Flashing bootloader to (/dev/ttyMOD2 63; response_timeout: 0.20s) has failed!
2023-11-12 22:59:40,557 

Recover:

wb-mcu-fw-updater recover /dev/ttyMOD2 -a 63
2023-11-12 23:12:24,274 Flashing /var/lib/wb-mcu-fw-updater/wb-mai6__2.0.5_main_0a57066.wbfw
 24%|#################################2                                                                                                        |60/249
2023-11-12 23:13:31,119 Recovering (63 /dev/ttyMOD2) was not successful
2023-11-12 23:13:31,120 

Логи рековера:

Nov 12 23:23:31 wirenboard wb-mcu-fw-updater:update_monitor._get_clients[10213]: Will run: fuser /dev/ttyMOD2
Nov 12 23:23:31 wirenboard wb-mcu-fw-updater:update_monitor._get_clients[10213]: Clients of /dev/ttyMOD2: 1775
Nov 12 23:23:31 wirenboard wb-mcu-fw-updater:update_monitor._get_clients[10213]: Will run: ps -o cmd= 1775
Nov 12 23:23:32 wirenboard wb-mcu-fw-updater:update_monitor._send_signal[10213]: Will run: fuser -k -STOP /dev/ttyMOD2
Nov 12 23:23:32 wirenboard wb-mcu-fw-updater:releases.parse_releases[10213]: Reading /usr/lib/wb-release for releases info
Nov 12 23:23:32 wirenboard wb-mcu-fw-updater:releases.parse_releases[10213]: Got releases info:
Nov 12 23:23:32 wirenboard wb-mcu-fw-updater:releases.parse_releases[10213]:         defaultdict(<function parse_releases.<locals>.<lambda> at 0xb5e10a00>, {'RELEASE_NAME': 'unstable.latest', 'SUITE': 'testing', 'TARGET': 'wb7/bullseye', 'REPO_PREFIX': ''})
Nov 12 23:23:32 wirenboard wb-mcu-fw-updater:fw_downloader.get_request[10213]: GET: http://fw-releases.wirenboard.com/
Nov 12 23:25:18 wirenboard wb-mcu-fw-updater:fw_downloader.get_request[10213]: GET: http://fw-releases.wirenboard.com/fw/by-signature/fw_signatures.txt
Nov 12 23:25:18 wirenboard wb-mcu-fw-updater:update_monitor._restore_fw_signature[10213]: Will ask a bootloader for fw_signature
Nov 12 23:25:18 wirenboard wb-mcu-fw-updater:update_monitor._restore_fw_signature[10213]: FW signature for 63 : /dev/ttyMOD2 is wb-mai6
Nov 12 23:25:18 wirenboard wb-mcu-fw-updater:releases.get_release_file_urls[10213]: FW releases files: ['http://fw-releases.wirenboard.com/fw/by-signature/release-versions.yaml']
Nov 12 23:25:18 wirenboard wb-mcu-fw-updater:update_monitor.get_released_fw[10213]: Looking to http://fw-releases.wirenboard.com/fw/by-signature/release-versions.yaml (suite: testing)
Nov 12 23:25:18 wirenboard wb-mcu-fw-updater:fw_downloader.get_request[10213]: GET: http://fw-releases.wirenboard.com/fw/by-signature/release-versions.yaml
Nov 12 23:25:19 wirenboard wb-mcu-fw-updater:update_monitor.get_released_fw[10213]: FW version for wb-mai6 on release testing: 2.0.5 (endpoint: fw/by-signature/wb-mai6/main/2.0.5.wbfw)
Nov 12 23:25:19 wirenboard wb-mcu-fw-updater:fw_downloader.get_request[10213]: GET: http://fw-releases.wirenboard.com/fw/by-signature/wb-mai6/main/2.0.5.wbfw
Nov 12 23:25:20 wirenboard wb-mcu-fw-updater:fw_downloader.download_remote_file[10213]: Trying to get fname from content-disposition
Nov 12 23:25:20 wirenboard wb-mcu-fw-updater:fw_downloader.download_remote_file[10213]: Got fname: wb-mai6__2.0.5_main_0a57066.wbfw
Nov 12 23:25:20 wirenboard wb-mcu-fw-updater:fw_downloader.download_remote_file[10213]: http://fw-releases.wirenboard.com/fw/by-signature/wb-mai6/main/2.0.5.wbfw => /var/lib/wb-mcu-fw-updater/wb-mai6__2.0.5_main_0a57066.wbfw
Nov 12 23:25:22 wirenboard wb-mcu-fw-updater:fw_flasher.flash_in_bl[10213]: Flashing /var/lib/wb-mcu-fw-updater/wb-mai6__2.0.5_main_0a57066.wbfw
Nov 12 23:27:18 wirenboard wb-mcu-fw-updater:wb-mcu-fw-updater.recover_fw[10213]: Recovering (63 /dev/ttyMOD2) was not successful
Nov 12 23:27:18 wirenboard wb-mcu-fw-updater:__init__.die[10213]: 
                                                                  Traceback (most recent call last):
                                                                    File "/usr/lib/python3/dist-packages/wb_mcu_fw_updater/fw_flasher.py", line 120, in _send_data
                                                                      self.instrument.write_u16_regs(
                                                                    File "/usr/lib/python3/dist-packages/wb_modbus/bindings.py", line 42, in wrapper
                                                                      return f(self, *args, **kwargs)
                                                                    File "/usr/lib/python3/dist-packages/wb_modbus/bindings.py", line 69, in wrapper
                                                                      raise thrown_exc
                                                                    File "/usr/lib/python3/dist-packages/wb_modbus/bindings.py", line 63, in wrapper
                                                                      return f(*args, **kwargs)
                                                                    File "/usr/lib/python3/dist-packages/wb_modbus/bindings.py", line 274, in write_u16_regs
                                                                      self.device.write_registers(beginning, values)
                                                                    File "/usr/lib/python3/dist-packages/wb_modbus/minimalmodbus.py", line 885, in write_registers
                                                                      self._generic_command(
                                                                    File "/usr/lib/python3/dist-packages/wb_modbus/minimalmodbus.py", line 1139, in _generic_command
                                                                      payload_from_slave = self._perform_command(functioncode, payload_to_slave)
                                                                    File "/usr/lib/python3/dist-packages/wb_modbus/minimalmodbus.py", line 1203, in _perform_command
                                                                      response = self._communicate(request, number_of_bytes_to_read)
                                                                    File "/usr/lib/python3/dist-packages/wb_modbus/instruments.py", line 161, in _communicate
                                                                      self._write_to_bus(request)
                                                                    File "/usr/lib/python3/dist-packages/wb_modbus/instruments.py", line 251, in _write_to_bus
                                                                      raise minimalmodbus.NoResponseError("No communication with the instrument (no answer)")
                                                                  wb_modbus.minimalmodbus.NoResponseError: No communication with the instrument (no answer)
                                                                  
                                                                  The above exception was the direct cause of the following exception:
                                                                  
                                                                  Traceback (most recent call last):
                                                                    File "/usr/bin/wb-mcu-fw-updater", line 160, in recover_fw
                                                                      update_monitor.recover_device_iteration(
                                                                    File "/usr/lib/python3/dist-packages/wb_mcu_fw_updater/update_monitor.py", line 319, in recover_device_iteration
                                                                      direct_flash(
                                                                    File "/usr/lib/python3/dist-packages/wb_mcu_fw_updater/update_monitor.py", line 364, in direct_flash
                                                                      flasher.flash_in_bl(fw_fpath)
                                                                    File "/usr/lib/python3/dist-packages/wb_mcu_fw_updater/fw_flasher.py", line 161, in flash_in_bl
                                                                      self._send_data(data_block)
                                                                    File "/usr/lib/python3/dist-packages/wb_mcu_fw_updater/fw_flasher.py", line 126, in _send_data
                                                                      six.raise_from(FlashingError, e)
                                                                    File "<string>", line 3, in raise_from
                                                                  wb_mcu_fw_updater.fw_flasher.FlashingError
Nov 12 23:27:18 wirenboard wb-mcu-fw-updater:jsondb.dump[10213]: Has saved db to /var/lib/wb-mcu-fw-updater/devices.jsondb
Nov 12 23:27:18 wirenboard wb-mcu-fw-updater:update_monitor._send_signal[10213]: Will run: fuser -k -CONT /dev/ttyMOD2

Посоветуйте, что делать?

Добрый день.
Пришлите диагностический архив. Ревизию контроллера, версию ПО контроллера. Серийный номер WB-MAI6. В каком состоянии сейчас модуль? Какова индикация светодиода? Находится ли сканированием шины? Опишите, как запитан модуль. Какое напряжение питания.

Контроллер 7.4.2A2IND 1D/E-2GI
DTS Version 742
HW Revision 7.4.2
Short SN A6BT5JOG
Release name unstable.latest
Release suite testing

MAI6: HW v.1.4A, FW 2.0.5, SN 138293
Состояние модуля с виду нормальное, индикация нахождения в бутлоадере - ритмично мигает светодиод, сканированием не находится. Модуль запитан от стабилизированного зарезервированного источника 24В, напряжение на входе 23,9В

Рядом с ним бок-о-бок стоит модуль MR6, адрес 22, который на той же шине, с тем же питанием с точностью до 5-и см. И с ним всё нормально, прошивку успешно прошел.

Даже не знаю, что еще рассказать. Работал-работал, но прошивку бутлоадера не пережил :frowning:

diag_output_A6BT5JOG_2023-11-13-19.37.41.zip (212,0 КБ)

По присланному логу видно, что сам загрузчик обновился, но прерывалось у вас обновление самой прошивки. И причем в одном и том же месте.
Покажите вывод команды:

modbus_client --debug -mrtu -b19200 -podd -s2 /dev/ttyMOD2 -a63 -t0x03 -r290 -c12

Попробуйте обновиться командой:

wb-mcu-fw-updater update-fw /dev/ttyMOD2 -a63

Покажите результаты команд.

Прерывается на том же месте:

root@wirenboard:~# service wb-mqtt-serial stop
root@wirenboard:~# modbus_client --debug -mrtu -b19200 -podd -s2 /dev/ttyMOD2 -a63 -t0x03 -r290 -c12
Opening /dev/ttyMOD2 at 19200 bauds (O, 8, 2)
[3F][03][01][22][00][0C][E0][E7]
Waiting for a confirmation...
ERROR Connection timed out: select
ERROR occured!
root@wirenboard:~# wb-mcu-fw-updater update-fw /dev/ttyMOD2 -a63
2023-11-14 09:39:04,735 Device (/dev/ttyMOD2 63; response_timeout: 0.20s) supposed to be alive, but found in bootloader
2023-11-14 09:39:06,460 Will flash fw v:2.0.5 to bring wb-mai6 (/dev/ttyMOD2 63; response_timeout: 0.20s) alive
2023-11-14 09:39:08,318 Flashing /var/lib/wb-mcu-fw-updater/wb-mai6__2.0.5_main_0a57066.wbfw
 24%|#################################2                                                                                                        |60/249
2023-11-14 09:40:14,921 Flashing fw to (/dev/ttyMOD2 63; response_timeout: 0.20s) has failed!
2023-11-14 09:40:14,925 

Попробуйте обновить прошивку модуля вручную с помощью wb-mcu-fw-flasher с флагом -D. И пришлите лог обновления прошивки.

Лог обновления во вложении
log.txt (43,5 КБ)

Давайте мы бесплатно поменяем вам оборудование. Курьер привезёт новое оборудование и заберёт старое:

  • WB-MAI6 - 1 шт.

Для возврата напишите, пожалуйста, письмо на info@wirenboard.com.

В письме укажите:

  1. ссылку на эту тему,
  2. серийный номер устройства, если есть,
  3. ваш действующий телефон, адрес доставки, ФИО получателя.

Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.