Обновление прошивки MSW до 4.31.10 - часть отпала после

Ранее прошивка на устройствах была 4.31.9, после обновления до 4.31.10 часть датчиков MSW отпала.
Индикация на датчиках - постоянное моргание 1-2 раза в секунду

Пробовал делать recover не помогает

root@wirenboard-A45ADSRN:~# wb-mcu-fw-updater recover -a50 /dev/ttyRS485-2 --debug
2024-10-16 11:59:08,491 Will run: fuser /dev/ttyRS485-2
2024-10-16 11:59:08,640 Clients of /dev/ttyRS485-2: 1808
2024-10-16 11:59:08,642 Will run: ps -o cmd= 1808
2024-10-16 11:59:08,720 Will run: fuser -k -STOP /dev/ttyRS485-2
2024-10-16 11:59:08,899 Reading /usr/lib/wb-release for releases info
2024-10-16 11:59:08,901 Got releases info:
2024-10-16 11:59:08,902         defaultdict(<function parse_releases.<locals>.<lambda> at 0xb6064610>, {'RELEASE_NAME': 'wb-2407', 'SUITE': 'stable', 'TARGET': 'wb7/bullseye', 'REP                 O_PREFIX': ''})
2024-10-16 11:59:08,903 GET: http://fw-releases.wirenboard.com/
2024-10-16 11:59:09,897 Set SerialSettings(baudrate=9600, parity='N', stopbits=2) to /dev/ttyRS485-2
2024-10-16 11:59:09,897 /dev/ttyRS485-2 response_timeout -> 0.20
2024-10-16 11:59:09,899 Set SerialSettings(baudrate=9600, parity='N', stopbits=2) to /dev/ttyRS485-2
2024-10-16 11:59:09,899 /dev/ttyRS485-2 response_timeout -> 0.20
2024-10-16 11:59:09,900 Will find bootloader port settings for (/dev/ttyRS485-2 : 50; response_timeout: 0.20)...
Will find bootloader port settings for (/dev/ttyRS485-2 : 50; response_timeout: 0.20)... (elapsed: 00:00)2024-10-16 11:59:09,939 /dev/ttyRS485-2 response_timeout -> 1.20
Will find bootloader port settings for (/dev/ttyRS485-2 : 50; response_timeout: 0.20)... (elapsed: 00:01)2024-10-16 11:59:11,252 f = write_u16_regs(<wb_modbus.bindings.WBModbusDevi                 ceBase object at 0xb6062718>, 4096, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) not succeed (try 1/2): Slave reported device failure
Will find bootloader port settings for (/dev/ttyRS485-2 : 50; response_timeout: 0.20)... (elapsed: 00:02)2024-10-16 11:59:12,562 f = write_u16_regs(<wb_modbus.bindings.WBModbusDevi                 ceBase object at 0xb6062718>, 4096, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) not succeed (try 2/2): Slave reported device failure
2024-10-16 11:59:12,562 /dev/ttyRS485-2 response_timeout -> 0.20
Will find bootloader port settings for (/dev/ttyRS485-2 : 50; response_timeout: 0.20)... (elapsed: 00:02)
2024-10-16 11:59:12,866 f = read_u16(<wb_modbus.bindings.WBModbusDeviceBase object at 0xb6062718>, 128) not succeed (try 1/2): No communication with the instrument (no answer)
2024-10-16 11:59:13,070 f = read_u16(<wb_modbus.bindings.WBModbusDeviceBase object at 0xb6062718>, 128) not succeed (try 2/2): No communication with the instrument (no answer)
2024-10-16 11:59:13,071 Has found bootloader port settings: SerialSettings(baudrate=9600, parity='N', stopbits=2)
2024-10-16 11:59:13,072 GET: http://fw-releases.wirenboard.com/fw/by-signature/fw_signatures.txt
2024-10-16 11:59:13,898 Will ask a bootloader for fw_signature
2024-10-16 11:59:14,013 FW signature for 50 : /dev/ttyRS485-2 is msw5G
2024-10-16 11:59:14,015 FW releases files: ['http://fw-releases.wirenboard.com/fw/by-signature/release-versions.yaml']
2024-10-16 11:59:14,017 Looking to http://fw-releases.wirenboard.com/fw/by-signature/release-versions.yaml (suite: stable)
2024-10-16 11:59:14,018 GET: http://fw-releases.wirenboard.com/fw/by-signature/release-versions.yaml
2024-10-16 11:59:16,726 FW version for msw5G on release stable: 4.31.10 (endpoint: fw/by-signature/msw5G/main/4.31.10.wbfw)
2024-10-16 11:59:16,728 GET: http://fw-releases.wirenboard.com/fw/by-signature/msw5G/main/4.31.10.wbfw
2024-10-16 11:59:17,797 Trying to get fname from content-disposition
2024-10-16 11:59:17,799 Got fname: msw5G__4.31.10_master_afd91ad.wbfw
2024-10-16 11:59:17,800 http://fw-releases.wirenboard.com/fw/by-signature/msw5G/main/4.31.10.wbfw => /var/lib/wb-mcu-fw-updater/msw5G__4.31.10_master_afd91ad.wbfw
2024-10-16 11:59:17,806 Set SerialSettings(baudrate=9600, parity='N', stopbits=2) to /dev/ttyRS485-2
2024-10-16 11:59:17,807 /dev/ttyRS485-2 response_timeout -> 0.20
2024-10-16 11:59:17,808 /dev/ttyRS485-2 response_timeout -> 0.20
2024-10-16 11:59:20,326 Flashing /var/lib/wb-mcu-fw-updater/msw5G__4.31.10_master_afd91ad.wbfw (311 data chunks)
2024-10-16 11:59:20,327 /dev/ttyRS485-2 response_timeout -> 1.20
2024-10-16 11:59:21,741 f = write_u16_regs(<wb_modbus.bindings.WBModbusDeviceBase object at 0xb6987508>, 4096, [40621, 31891, 4298, 59502, 1467, 28897, 34193, 31942, 29510, 52705, 60408, 33355, 44453, 10696, 18318, 36753]) not succeed (try 1/2): Checksum error in rtu mode: 'ÀÆ' instead of '\x19\r' . The response is: '2\x10\x10\x00\x10ÀÆ' (plain response: '2\x10\x10\x00\x10ÀÆ')
2024-10-16 11:59:23,154 f = write_u16_regs(<wb_modbus.bindings.WBModbusDeviceBase object at 0xb6987508>, 4096, [40621, 31891, 4298, 59502, 1467, 28897, 34193, 31942, 29510, 52705, 60408, 33355, 44453, 10696, 18318, 36753]) not succeed (try 2/2): Checksum error in rtu mode: 'ÀÆ' instead of '\x19\r' . The response is: '2\x10\x10\x00\x10ÀÆ' (plain response: '2\x10\x10\x00\x10ÀÆ')
2024-10-16 11:59:23,155 /dev/ttyRS485-2 response_timeout -> 0.20
2024-10-16 11:59:23,155 Recovering (50 /dev/ttyRS485-2) was not successful
2024-10-16 11:59:23,156
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/wb_mcu_fw_updater/fw_flasher.py", line 127, 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 45, in wrapper
    return f(self, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/wb_modbus/bindings.py", line 72, in wrapper
    raise thrown_exc
  File "/usr/lib/python3/dist-packages/wb_modbus/bindings.py", line 66, in wrapper
    return f(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/wb_modbus/bindings.py", line 291, 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 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 '\x19\r' . The response is: '2\x10\x10\x00\x10ÀÆ' (plain response: '2\x10\x10\x00\x10ÀÆ')

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/bin/wb-mcu-fw-updater", line 170, in recover_fw
    update_monitor.recover_device_iteration(args.known_signature, device)
  File "/usr/lib/python3/dist-packages/wb_mcu_fw_updater/update_monitor.py", line 394, in recover_device_iteration
    direct_flash(downloaded_fw, device, force=force)
  File "/usr/lib/python3/dist-packages/wb_mcu_fw_updater/update_monitor.py", line 449, in direct_flash
    flasher.flash_in_bl(parsed_wbfw)
  File "/usr/lib/python3/dist-packages/wb_mcu_fw_updater/fw_flasher.py", line 193, in flash_in_bl
    self._send_info(parsed_wbfw.info)
  File "/usr/lib/python3/dist-packages/wb_mcu_fw_updater/fw_flasher.py", line 131, in _send_info
    six.raise_from(FlashingError, e)
  File "<string>", line 3, in raise_from
wb_mcu_fw_updater.fw_flasher.FlashingError
2024-10-16 11:59:23,175 Has saved db to /var/lib/wb-mcu-fw-updater/devices.jsondb
2024-10-16 11:59:23,177 Will run: fuser -k -CONT /dev/ttyRS485-2
root@wirenboard-A45ADSRN:~#

Здравствуйте.

Для диагностики проблемы пришлите, пожалуйста, архив с диагностической информацией контроллера. Создание архива описано в документации.

приложен диагностический архив, доступен только сотрудникам поддержки
(442,4 КБ)

прилагаю архив

Благодарю за ожидание.

Не вижу криминала в логах.
Скажите, как именно вы их обновляли?

  1. Подключите один такой датчик на отдельный порт так, чтобы это было единственное устройство на шине. Поведение изменится? если нет, то п.2
  2. В этом положении установите 4.31.10 в ручном режиме. Поведение изменится?

Прошу поделиться результатами.

Обновлял как обычно

wb-mcu-fw-updater update-all

выходило желтое предупреждение/соглашение на обновление загрузчика со старой версии на более новую - нажимал Y. С питанием перебоев не было, с шиной физически никаких манипуляций в момент обновления не производилось.

  1. Подключить один проблематично, т.к. датчики стоят по месту на натяжных потолках. Не хочется лишний раз снимать/ставить. Так скажем это крайнее решение.
  2. Изначально 11 вроде отвалилось, периодически делаю recover постепенно по одному восстанавливаются, еще осталось 7 )))

Но причину я понять не могу.

У меня созздается впечатление что на шине слишком много ошибок. Проверьте, опросив какое либо из устройств с помощью modbus_client. Ччитайте 12 holding регистров, с 290 адреса одним запросом. На 9600.
Повторите чтение раз 10. Если будут ошибки при части чтений - то причина неудачной прошивки скорее всего в этом.

выполнил раз 10, вывод аналогичный. При этом а50 не опрашивается и не проходит процедуру восстановления

root@wirenboard-A45ADSRN:~# modbus_client --debug -mrtu /dev/ttyRS485-2 --debug -b9600 -pnone -s2 -a50 -t 0x03 -r 290 -c12
Opening /dev/ttyRS485-2 at 9600 bauds (N, 8, 2)
[32][03][01][22][00][0C][E1][FA]
Waiting for a confirmation...
<32><03><18><00><6D><00><73><00><77><00><35><00><47><00><00><00><00><00><00><00><00><00><00><00><00><00><00><FD><B7>
SUCCESS: read 12 of elements:
        Data: 0x006d 0x0073 0x0077 0x0035 0x0047 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000

Попробуйте пожалуйста прошить с помощью Сервисная утилита wb-mcu-fw-flasher — Wiren Board
используя файл http://fw-releases.wirenboard.com/fw/by-signature/msw5G/main/4.31.10.wbfw
Меня смущает то, что в процессе пошивки выдаются ошибки crc:

Здравствуйте.

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

Пожалуйста, ожидайте дальнейшей информации.

Апдейт:
Временным решением является установки прошивки в ручном режиме.

Буду продолжать держать в курсе.

1 лайк

Добрый день.

Подскажите, помогла ли установка прошивки через flasher?

Добрый день, не ранее чем через 10 дней вернемся на данный объект. Прошивку руками не пробовали

Добрый день!
У меня была точно такая же проблема, решилось обновлением прошивки в ручном режиме через wb-mcu-fw-flasher
wb-mcu-fw-flasher -d /dev/ttyRS485-2 -a 124 -f /var/lib/wb-mcu-fw-updater/msw5G__4.31.10_master_afd91ad.wbfw
До этого из 9 MSW v4 отвалились 2, один из них удалось вернуть к жизни через Updater, второй (новый) отказывался

root@wirenboard-AXGLIYEI:~# wb-mcu-fw-updater recover --fw-sig msw5G -a 124 /dev/ttyRS485-2 --debug
2024-10-27 18:31:24,041 Will run: fuser /dev/ttyRS485-2
2024-10-27 18:31:24,179 Clients of /dev/ttyRS485-2: 13210
2024-10-27 18:31:24,180 Will run: ps -o cmd= 13210
2024-10-27 18:31:24,254 Will run: fuser -k -STOP /dev/ttyRS485-2
2024-10-27 18:31:24,410 Reading /usr/lib/wb-release for releases info
2024-10-27 18:31:24,412 Got releases info:
2024-10-27 18:31:24,413         defaultdict(<function parse_releases.<locals>.<lambda> at 0xb60f3610>, {'RELEASE_NAME': 'wb-2407', 'SUITE': 'stable', 'TARGET': 'wb7/bullseye', 'REPO_PREFIX': ''})
2024-10-27 18:31:24,414 GET: http://fw-releases.wirenboard.com/
2024-10-27 18:31:24,818 Set SerialSettings(baudrate=9600, parity='N', stopbits=2) to /dev/ttyRS485-2
2024-10-27 18:31:24,819 /dev/ttyRS485-2 response_timeout -> 0.20
2024-10-27 18:31:24,821 Set SerialSettings(baudrate=9600, parity='N', stopbits=2) to /dev/ttyRS485-2
2024-10-27 18:31:24,821 /dev/ttyRS485-2 response_timeout -> 0.20
2024-10-27 18:31:24,822 Will find bootloader port settings for (/dev/ttyRS485-2 : 124; response_timeout: 0.20)...
Will find bootloader port settings for (/dev/ttyRS485-2 : 124; response_timeout: 0.20)... (elapsed: 00:00)2024-10-27 18:31:24,855 /dev/ttyRS485-2 response_timeout -> 1.20
Will find bootloader port settings for (/dev/ttyRS485-2 : 124; response_timeout: 0.20)... (elapsed: 00:01)2024-10-27 18:31:26,164 f = write_u16_regs(<wb_modbus.bindings.WBModbusDeviceBase object at 0xb60f7778>, 4096, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) not succeed (try 1/2): Slave reported device failure
Will find bootloader port settings for (/dev/ttyRS485-2 : 124; response_timeout: 0.20)... (elapsed: 00:02)2024-10-27 18:31:27,474 f = write_u16_regs(<wb_modbus.bindings.WBModbusDeviceBase object at 0xb60f7778>, 4096, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) not succeed (try 2/2): Slave reported device failure
2024-10-27 18:31:27,475 /dev/ttyRS485-2 response_timeout -> 0.20
Will find bootloader port settings for (/dev/ttyRS485-2 : 124; response_timeout: 0.20)... (elapsed: 00:02)
2024-10-27 18:31:27,692 f = read_u16(<wb_modbus.bindings.WBModbusDeviceBase object at 0xb60f7778>, 128) not succeed (try 1/2): No communication with the instrument (no answer)
2024-10-27 18:31:27,898 f = read_u16(<wb_modbus.bindings.WBModbusDeviceBase object at 0xb60f7778>, 128) not succeed (try 2/2): No communication with the instrument (no answer)
2024-10-27 18:31:27,898 Has found bootloader port settings: SerialSettings(baudrate=9600, parity='N', stopbits=2)
2024-10-27 18:31:27,900 GET: http://fw-releases.wirenboard.com/fw/by-signature/fw_signatures.txt
2024-10-27 18:31:28,284 FW releases files: ['http://fw-releases.wirenboard.com/fw/by-signature/release-versions.yaml']
2024-10-27 18:31:28,285 Looking to http://fw-releases.wirenboard.com/fw/by-signature/release-versions.yaml (suite: stable)
2024-10-27 18:31:28,286 GET: http://fw-releases.wirenboard.com/fw/by-signature/release-versions.yaml
2024-10-27 18:31:29,535 FW version for msw5G on release stable: 4.31.10 (endpoint: fw/by-signature/msw5G/main/4.31.10.wbfw)
2024-10-27 18:31:29,537 GET: http://fw-releases.wirenboard.com/fw/by-signature/msw5G/main/4.31.10.wbfw
2024-10-27 18:31:29,936 Trying to get fname from content-disposition
2024-10-27 18:31:29,937 Got fname: msw5G__4.31.10_master_afd91ad.wbfw
2024-10-27 18:31:29,938 http://fw-releases.wirenboard.com/fw/by-signature/msw5G/main/4.31.10.wbfw => /var/lib/wb-mcu-fw-updater/msw5G__4.31.10_master_afd91ad.wbfw
2024-10-27 18:31:29,942 Set SerialSettings(baudrate=9600, parity='N', stopbits=2) to /dev/ttyRS485-2
2024-10-27 18:31:29,942 /dev/ttyRS485-2 response_timeout -> 0.20
2024-10-27 18:31:29,943 /dev/ttyRS485-2 response_timeout -> 0.20
2024-10-27 18:31:32,343 Flashing /var/lib/wb-mcu-fw-updater/msw5G__4.31.10_master_afd91ad.wbfw (311 data chunks)
2024-10-27 18:31:32,347 /dev/ttyRS485-2 response_timeout -> 1.20
2024-10-27 18:31:33,761 f = write_u16_regs(<wb_modbus.bindings.WBModbusDeviceBase object at 0xb6048c88>, 4096, [40621, 31891, 4298, 59502, 1467, 28897, 34193, 31942, 29510, 52705, 60408, 33355, 44453, 10696, 18318, 36753]) not succeed (try 1/2): Checksum error in rtu mode: 'Ï(' instead of 'pÏ' . The response is: '|\x10\x10\x00\x00Ï(' (plain response: '|\x10\x10\x00\x00Ï(')
2024-10-27 18:31:35,177 f = write_u16_regs(<wb_modbus.bindings.WBModbusDeviceBase object at 0xb6048c88>, 4096, [40621, 31891, 4298, 59502, 1467, 28897, 34193, 31942, 29510, 52705, 60408, 33355, 44453, 10696, 18318, 36753]) not succeed (try 2/2): Checksum error in rtu mode: 'Ï(' instead of 'pÏ' . The response is: '|\x10\x10\x00\x00Ï(' (plain response: '|\x10\x10\x00\x00Ï(')
2024-10-27 18:31:35,178 /dev/ttyRS485-2 response_timeout -> 0.20
2024-10-27 18:31:35,178 Recovering (124 /dev/ttyRS485-2) was not successful
2024-10-27 18:31:35,179
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/wb_mcu_fw_updater/fw_flasher.py", line 127, 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 45, in wrapper
    return f(self, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/wb_modbus/bindings.py", line 72, in wrapper
    raise thrown_exc
  File "/usr/lib/python3/dist-packages/wb_modbus/bindings.py", line 66, in wrapper
    return f(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/wb_modbus/bindings.py", line 291, 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 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 'pÏ' . The response is: '|\x10\x10\x00\x00Ï(' (plain response: '|\x10\x10\x00\x00Ï(')

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/bin/wb-mcu-fw-updater", line 170, in recover_fw
    update_monitor.recover_device_iteration(args.known_signature, device)
  File "/usr/lib/python3/dist-packages/wb_mcu_fw_updater/update_monitor.py", line 394, in recover_device_iteration
    direct_flash(downloaded_fw, device, force=force)
  File "/usr/lib/python3/dist-packages/wb_mcu_fw_updater/update_monitor.py", line 449, in direct_flash
    flasher.flash_in_bl(parsed_wbfw)
  File "/usr/lib/python3/dist-packages/wb_mcu_fw_updater/fw_flasher.py", line 193, in flash_in_bl
    self._send_info(parsed_wbfw.info)
  File "/usr/lib/python3/dist-packages/wb_mcu_fw_updater/fw_flasher.py", line 131, in _send_info
    six.raise_from(FlashingError, e)
  File "<string>", line 3, in raise_from
wb_mcu_fw_updater.fw_flasher.FlashingError
2024-10-27 18:31:35,199 Has saved db to /var/lib/wb-mcu-fw-updater/devices.jsondb
2024-10-27 18:31:35,200 Will run: fuser -k -CONT /dev/ttyRS485-2

Но прошивка через Flasher помогла. Спасибо!

Приветствую!
В testing выкатилась новая версия wb-mcu-fw-updater с предполагаемым исправлением.
Если удастся попробовать и отписаться о результатах - было бы здорово!

Временно убрали версию прошивки 4.31.10 из публичного поля: как-то с ней не всё гладко

Ну ради статистики у меня 6 датчиков штатно обновились без проишествий. Среди них и 3-шки и 4-ки

Добрый день!

Временно убрали версию прошивки 4.31.10 из публичного поля: как-то с ней не всё гладко

Завтра буду на проблемном объекте где отвалились датчики. Какие рекомендации дадите для восстановления датчиков?

Вообщем как и коллега выше выполнил

wb-mcu-fw-flasher -d /dev/ttyRS485-2 -a66 -f /var/lib/wb-mcu-fw-updater/msw5G__4.31.10_master_afd91ad.wbfw

Датчики вышли на связь

Здравствуйте.
В данный момент актуальная прошивка 4.31.11. Рекомендую установить ее.