Прошивка контроллера из ветки testing, все обновления установлены.
Решил обновить прошивки устройств. Все “сидят” на 2 шине, скорость 115200
Обновление запустил штатно: wb-mcu-fw-updater update-all
В ходе обновления устройства обнаружили новые бутлоадеры и я подтвердил, что их тоже обновлять. В какой-то момент вылетела красная строчка:
Повторный запуск обновления дал еще более устрашающий вывод:
root@wirenboard-ACQNKJVT:~# wb-mcu-fw-updater update-all
2024-03-06 12:21:15,764 Will probe all devices on enabled serial ports of /etc/wb-mqtt-serial.conf:
2024-03-06 12:21:15,780 Probing Unknown (port: /dev/ttyRS485-1, slaveid: 16, uart_params: 9600N1, response_timeout: 0.50)...
2024-03-06 12:21:18,875 Probing Unknown (port: /dev/ttyRS485-1, slaveid: 28, uart_params: 9600N1, response_timeout: 0.50)...
2024-03-06 12:21:19,913 Probing Unknown (port: /dev/ttyRS485-1, slaveid: 3, uart_params: 9600N1, response_timeout: 0.50)...
2024-03-06 12:21:20,746 Probing WB-MWAC (port: /dev/ttyRS485-2, slaveid: 32, uart_params: 115200N2, response_timeout: 0.50)...
2024-03-06 12:21:21,760 Probing WB-MR6CU (port: /dev/ttyRS485-2, slaveid: 87, uart_params: 115200N2, response_timeout: 0.50)...
2024-03-06 12:21:22,595 Probing WB-MR6CU (port: /dev/ttyRS485-2, slaveid: 118, uart_params: 115200N2, response_timeout: 0.50)...
2024-03-06 12:21:23,452 Probing WB-MR6CU (port: /dev/ttyRS485-2, slaveid: 39, uart_params: 115200N2, response_timeout: 0.50)...
2024-03-06 12:21:23,935 Unhandled exception!
Traceback (most recent call last):
File "/usr/bin/wb-mcu-fw-updater", line 525, in <module>
args.func(args)
File "/usr/bin/wb-mcu-fw-updater", line 205, in update_all
update_monitor._update_all(
File "/usr/lib/python3/dist-packages/wb_mcu_fw_updater/update_monitor.py", line 737, in _update_all
probing_result = probe_all_devices(
File "/usr/lib/python3/dist-packages/wb_mcu_fw_updater/update_monitor.py", line 690, in probe_all_devices
modbus_connection=get_correct_modbus_connection(
File "/usr/lib/python3/dist-packages/wb_mcu_fw_updater/update_monitor.py", line 268, in get_correct_modbus_connection
check_device_is_a_wb_one(modbus_connection)
File "/usr/lib/python3/dist-packages/wb_mcu_fw_updater/update_monitor.py", line 220, in check_device_is_a_wb_one
sn = modbus_connection.get_serial_number() # Will raise NoResponseError, if disconnected
File "/usr/lib/python3/dist-packages/wb_modbus/bindings.py", line 623, in get_serial_number
device_signature = str(self.get_device_signature())
File "/usr/lib/python3/dist-packages/wb_modbus/bindings.py", line 716, in get_device_signature
return self.read_string(self.COMMON_REGS_MAP["device_signature"], self.DEVICE_SIGNATURE_LENGTH)
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 497, in read_string
ret = minimalmodbus._hexlify(self.device.read_string(addr, regs_lenght, 3))
File "/usr/lib/python3/dist-packages/wb_modbus/minimalmodbus.py", line 743, in read_string
return 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 1206, in _perform_command
payload_from_slave = _extract_payload(response, self.address, self.mode, functioncode)
File "/usr/lib/python3/dist-packages/wb_modbus/minimalmodbus.py", line 1688, in _extract_payload
raise InvalidResponseError(text)
wb_modbus.minimalmodbus.InvalidResponseError: Checksum error in rtu mode: "%'" instead of '_¯' . The response is: "'\x03\x0cK±\x08\x00\x00\x80\x00\x01\x01\x06\x00\x00%'" (plain response: "'\x03\x0cK±\x08\x00\x00\x80\x00\x01\x01\x06\x00\x00%'")
root@wirenboard-ACQNKJVT:~# wb-mcu-fw-updater recover /dev/ttyRS485-2 -a39
2024-03-06 12:24:11,971 Will find bootloader port settings for (/dev/ttyRS485-2 : 39; response_timeout: 0.20)...
2024-03-06 12:25:01,800 Device (39 /dev/ttyRS485-2) is not in bootloader mode! Check connection or slaveid/port
При сканировании модбас-устройств выводится вот такая картина…
Попытка сделать рекавер прошивки тоже не проходит - ругается, что устройство не в режиме бутлоадера.
Попытка прошить файлом прошивки - тоже безуспешна:
root@wirenboard-ACQNKJVT:/tmp# wb-mcu-fw-flasher -j -d /dev/ttyRS485-2 -a 39 -f ./mrps6G__1.21.1_master_ebe20ba.wbfw
/dev/ttyRS485-2 opened successfully.
Send jump to bootloader command and wait 2 seconds...
Error: Connection timed out.
May be device already in bootloader, check status led
./mrps6G__1.21.1_master_ebe20ba.wbfw opened successfully, size 23288 bytes
Sending info block...
Error while sending info block: Connection timed out
Error while sending info block: Connection timed out
Error while sending info block: Connection timed out
Error while sending info block.
Check connection, jump to bootloader and try again.
root@wirenboard-ACQNKJVT: