Похоже проблема проявляется только при обновлении на бут 1.4.0.
Меня пока спасает то, что бут таки взлетает, хоть и на скорости 9600.
Если вызвать wb-mcu-fw-updater update-bl --force -a 18 /dev/ttyRS485-2
, то обновление бута происходит на скорости 115200 и последующая заливка прошивки похоже заливается так же на 115200.
А вот обновление происходит со сбоем:
root@wirenboard:~# wb-mcu-fw-updater update-bl -a 18 /dev/ttyRS485-2
2024-03-06 19:16:58,762 Will find serial port settings for (/dev/ttyRS485-2 : 18; response_timeout: 0.20)...
2024-03-06 19:17:06,002 Has found serial port settings: {'baudrate': 115200, 'parity': 'N', 'stopbits': 2}
2024-03-06 19:17:07,643 bootloader (mr6cpG 18 on /dev/ttyRS485-2):
2024-03-06 19:17:07,646 Update: 1.3.0 -> 1.4.0 (mr6cpG 18 /dev/ttyRS485-2)
2024-03-06 19:17:09,766 Flashing /var/lib/wb-mcu-fw-updater/bootloader/wb-bootloader-updater_mr6cpG__1.4.0_master_c654e11.wbfw
100%|#############################################################################################################################################################################################|36/36
2024-03-06 19:17:14,331 Bootloader was successfully flashed. Will flash released firmware for "mr6cpG"
2024-03-06 19:17:17,953 Flashing /var/lib/wb-mcu-fw-updater/mr6cpG__1.21.1_master_ebe20ba.wbfw
2024-03-06 19:17:48,108 Flashing bootloader to (/dev/ttyRS485-2 18; response_timeout: 0.20s) has failed!
2024-03-06 19:17:48,109
root@wirenboard:~# wb-mcu-fw-updater update-bl -a 18 /dev/ttyRS485-2
2024-03-06 19:18:18,307 Will find serial port settings for (/dev/ttyRS485-2 : 18; response_timeout: 0.20)...
2024-03-06 19:19:07,143 Will find bootloader port settings for (/dev/ttyRS485-2 : 18; response_timeout: 0.20)...
2024-03-06 19:19:14,707 Has found bootloader port settings: {'baudrate': 9600, 'parity': 'N', 'stopbits': 2}
2024-03-06 19:19:14,709 Device (/dev/ttyRS485-2 18; response_timeout: 0.20s) supposed to be alive, but found in bootloader
2024-03-06 19:19:15,222 Will flash bootloader v:latest to bring mr6cpG (/dev/ttyRS485-2 18; response_timeout: 0.20s) alive
2024-03-06 19:19:15,511 Flashing /var/lib/wb-mcu-fw-updater/bootloader/wb-bootloader-updater_mr6cpG__1.4.0_master_c654e11.wbfw
100%|#############################################################################################################################################################################################|36/36
2024-03-06 19:19:27,346 Flashing /var/lib/wb-mcu-fw-updater/mr6cpG__1.21.1_master_ebe20ba.wbfw
100%|###########################################################################################################################################################################################|215/215
root@wirenboard:~# wb-mcu-fw-updater update-bl -a 18 /dev/ttyRS485-2
2024-03-06 19:20:24,760 Will find serial port settings for (/dev/ttyRS485-2 : 18; response_timeout: 0.20)...
2024-03-06 19:20:31,997 Has found serial port settings: {'baudrate': 115200, 'parity': 'N', 'stopbits': 2}
2024-03-06 19:20:33,555 bootloader (mr6cpG 18 on /dev/ttyRS485-2):
2024-03-06 19:20:33,556 Update skipped: 1.4.0 -> 1.4.0 (mr6cpG 18 /dev/ttyRS485-2)
2024-03-06 19:20:33,557 Done
root@wirenboard:~# wb-mcu-fw-updater update-bl --force -a 18 /dev/ttyRS485-2
2024-03-06 19:20:43,836 Will find serial port settings for (/dev/ttyRS485-2 : 18; response_timeout: 0.20)...
2024-03-06 19:20:51,072 Has found serial port settings: {'baudrate': 115200, 'parity': 'N', 'stopbits': 2}
2024-03-06 19:20:52,592 bootloader (mr6cpG 18 on /dev/ttyRS485-2):
2024-03-06 19:20:52,594 Force update: 1.4.0 -> 1.4.0 (mr6cpG 18 /dev/ttyRS485-2)
2024-03-06 19:20:54,719 Flashing /var/lib/wb-mcu-fw-updater/bootloader/wb-bootloader-updater_mr6cpG__1.4.0_master_c654e11.wbfw
100%|#############################################################################################################################################################################################|36/36
2024-03-06 19:20:59,324 Bootloader was successfully flashed. Will flash released firmware for "mr6cpG"
2024-03-06 19:21:02,726 Flashing /var/lib/wb-mcu-fw-updater/mr6cpG__1.21.1_master_ebe20ba.wbfw
100%|###########################################################################################################################################################################################|215/215
2024-03-06 19:21:28,984 Done
Ну и в журнале событий имеем ошибку после первой попытки выполнить обновление бута:
06-03-2024 19:17:48.122 [session-c14.scope]
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/wb_mcu_fw_updater/fw_flasher.py", line 102, in _send_info
self.instrument.write_u16_regs(self.INFO_BLOCK_START, regs_row)
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 285, 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 90, in _update_alive_device
update_monitor.flash_alive_device(modbus_connection, mode, branch, version, force, erase_settings)
File "/usr/lib/python3/dist-packages/wb_mcu_fw_updater/update_monitor.py", line 578, in flash_alive_device
_do_flash(modbus_connection, downloaded_fw, mode, erase_settings, force=force)
File "/usr/lib/python3/dist-packages/wb_mcu_fw_updater/update_monitor.py", line 522, in _do_flash
direct_flash(downloaded_fw, modbus_connection, erase_settings, force=force)
File "/usr/lib/python3/dist-packages/wb_mcu_fw_updater/update_monitor.py", line 385, in direct_flash
flasher.flash_in_bl(fw_fpath)
File "/usr/lib/python3/dist-packages/wb_mcu_fw_updater/fw_flasher.py", line 160, in flash_in_bl
self._send_info(info_block)
File "/usr/lib/python3/dist-packages/wb_mcu_fw_updater/fw_flasher.py", line 106, in _send_info
six.raise_from(FlashingError, e)
File "<string>", line 3, in raise_from
wb_mcu_fw_updater.fw_flasher.FlashingError
06-03-2024 19:17:48.109 [session-c14.scope] Flashing bootloader to (/dev/ttyRS485-2 18; response_timeout: 0.20s) has failed!