Ошибка обновления устройств WB-MRPS6/S

39 модуль (тот, что в статусе “ошибка”, но релюхами щелкал) - подключил к WB7 на стабильном релизе. Смог поправить ему скорость на 9600 и прошить файлом прошивки версии 1.20.2 - модуль после этого “ожил”, при сканировании уже адекватно показывает название модуля и его номер прошивки. Вернул его в основную систему - он заработал нормально.

А вот устройства с адресами 83 и 87 так оживить не удалось. Скорость обмена поменять на 9600 удается (видно в результатах сканирования), но вот прошивку залить не удается.

root@wirenboard-A3PMMDG4:/tmp# wb-mcu-fw-flasher -j -d /dev/ttyRS485-1 -a 87 -f ./mrps6G__1.20.2_master_83b2af3.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, check status led
./mrps6G__1.20.2_master_83b2af3.wbfw opened successfully, size 21248 bytes

Sending info block...
Error while sending info block: Illegal data address
Not in bootloader mode? Try repeating with -j
root@wirenboard-A3PMMDG4:

Двум модулям откатил версию прошивки на 1.20.2

Картина вот такая:

Эти модули уже правильно отображают свое название и версию прошивки. Два других - в странном коматозе. Вроде как есть (сканируются же), но не управляются (реле не щелкают), криво выводятся в результатах сканирования и не прошиваются.

Используете flasher не останавливая wb-mqtt-serial?

Останавливаю, конечно

Сделал попытку прошить бутлоадер - тоже безрезультатно:

root@wirenboard-A3PMMDG4:/tmp# wb-mcu-fw-updater update-bl -a 87 /dev/ttyRS485-1
2024-03-06 12:57:04,610 Will find serial port settings for (/dev/ttyRS485-1 : 87; response_timeout: 0.20)...
2024-03-06 12:57:53,344 Will find bootloader port settings for (/dev/ttyRS485-1 : 87; response_timeout: 0.20)...
2024-03-06 12:58:00,900 Has found bootloader port settings: {'baudrate': 9600, 'parity': 'N', 'stopbits': 2}
2024-03-06 12:58:00,904 Device (/dev/ttyRS485-1 87; response_timeout: 0.20s) supposed to be alive, but found in bootloader
2024-03-06 12:58:01,442 Will flash bootloader v:latest to bring mrps6G (/dev/ttyRS485-1 87; response_timeout: 0.20s) alive
2024-03-06 12:58:01,763 Flashing /var/lib/wb-mcu-fw-updater/bootloader/wb-bootloader-updater_mrps6G__1.4.0_master_c654e11.wbfw
2024-03-06 12:58:32,348 Flashing bootloader to (/dev/ttyRS485-1 87; response_timeout: 0.20s) has failed!
2024-03-06 12:58:32,349 
root@wirenboard-A3PMMDG4:

А при использовании именно wb-mcu-flasher, вот так: Сервисная утилита wb-mcu-fw-flasher — Wiren Board
какой результат? Пробую:

systemctl stop wb-mqtt-serial
root@wirenboard-AWWCDXFH:~# wget https://fw-releases.wirenboard.com/fw/by-signature/mr6cpG/main/1.21.1.wbfw
--2024-03-06 14:38:55--  https://fw-releases.wirenboard.com/fw/by-signature/mr6cpG/main/1.21.1.wbfw
Resolving fw-releases.wirenboard.com (fw-releases.wirenboard.com)... 108.157.229.17, 108.157.229.69, 108.157.229.55, ...
Connecting to fw-releases.wirenboard.com (fw-releases.wirenboard.com)|108.157.229.17|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 29272 (29K) [application/octet-stream]
Saving to: ‘1.21.1.wbfw’

1.21.1.wbfw                                                                           100%[=======================================================================================================================================================================================================================>]  28.59K  --.-KB/s    in 0.05s   

2024-03-06 14:38:56 (618 KB/s) - ‘1.21.1.wbfw’ saved [29272/29272]

wget https://fw-releases.wirenboard.com/bootloader/by-signature/mr6cpG/main/1.4.0.wbfw
--2024-03-06 14:50:24--  https://fw-releases.wirenboard.com/bootloader/by-signature/mr6cpG/main/1.4.0.wbfw
Resolving fw-releases.wirenboard.com (fw-releases.wirenboard.com)... 108.157.229.27, 108.157.229.55, 108.157.229.17, ...
Connecting to fw-releases.wirenboard.com (fw-releases.wirenboard.com)|108.157.229.27|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 4928 (4.8K) [application/octet-stream]
Saving to: ‘1.4.0.wbfw’

1.4.0.wbfw                                                                            100%[=======================================================================================================================================================================================================================>]   4.81K  --.-KB/s    in 0s      

2024-03-06 14:50:24 (21.1 MB/s) - ‘1.4.0.wbfw’ saved [4928/4928]


Важно! Перезапускаю модуль в режим обновления прошивки на скорости 9600, так как bootloader старый ну и прошиваю новый:

modbus_client --debug -mrtu -pnone -s2 -b115200 /dev/ttyRS485-1 -a93 -t0x6 -r129 1
Data to write: 0x1
Opening /dev/ttyRS485-1 at 115200 bauds (N, 8, 2)
[5D][06][00][81][00][01][14][BE]
Waiting for a confirmation...
<5D><06><00><81><00><01><14><BE>
SUCCESS: written 1 elements!

 wb-mcu-fw-flasher -j -d /dev/ttyRS485-1 -a 93 -f ./1.4.0.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, check status led
./1.4.0.wbfw opened successfully, size 4928 bytes

Sending info block... OK

Sending data block 36 of 36... OK.

All done!

Загружаю прошивку:

wb-mcu-fw-flasher -d /dev/ttyRS485-1 -a 93 -f ./1.21.1.wbfw
/dev/ttyRS485-1 opened successfully.
./1.21.1.wbfw opened successfully, size 29272 bytes

Sending info block... OK

Sending data block 215 of 215... OK.

All done!

Готово. Вот тут описано: Обновление прошивки Modbus-устройств Wiren Board — Wiren Board

Круто. Но:

root@wirenboard-A3PMMDG4:~# modbus_client --debug -mrtu -pnone -s2 -b115200 /dev/ttyRS485-1 -a87 -t0x6 -r129 1
Data to write: 0x1
Opening /dev/ttyRS485-1 at 115200 bauds (N, 8, 2)
[57][06][00][81][00][01][14][14]
Waiting for a confirmation...
ERROR Connection timed out: select
ERROR occured!
root@wirenboard-A3PMMDG4:~# modbus_client --debug -mrtu -pnone -s2 -b9600 /dev/ttyRS485-1 -a87 -t0x6 -r129 1
Data to write: 0x1
Opening /dev/ttyRS485-1 at 9600 bauds (N, 8, 2)
[57][06][00][81][00][01][14][14]
Waiting for a confirmation...
ERROR Connection timed out: select
ERROR occured!
root@wirenboard-A3PMMDG4:~# wb-mcu-fw-flasher -j -d /dev/ttyRS485-1 -a 87 -f ./1.4.0.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, check status led
./1.4.0.wbfw opened successfully, size 4928 bytes

Sending info block...
Error while sending info block: Illegal data address
Not in bootloader mode? Try repeating with -j
root@wirenboard-A3PMMDG4:~# 

При этом модуль я перевел предварительно на 9600, что видно при сканировании:

Но что-то при обновлении у него основательно поломалось.

Прочитайте из устройства сигнатуру. Если читается на 9600 - оно уже в bootloader и переводить не надо.

root@wirenboard-A3PMMDG4:~# systemctl stop wb-mqtt-serial
root@wirenboard-A3PMMDG4:~# echo -e $(modbus_client -mrtu -pnone -s2 -b9600 /dev/ttyRS485-1 -a 87 -t3 -r 290 -c 12 | grep Data | sed -e 's/.*Data://' -e 's/ 0x00/\\x/g')
mrps6G
root@wirenboard-A3PMMDG4:~# 

Сигнатура прочиталась.

Но прошивка не идет:

root@wirenboard-A3PMMDG4:~# wb-mcu-fw-flasher -d /dev/ttyRS485-1 -a 87 -f ./1.21.1.wbfw
/dev/ttyRS485-1 opened successfully.
./1.21.1.wbfw opened successfully, size 29272 bytes

Sending info block...
Error while sending info block: Illegal data address
Not in bootloader mode? Try repeating with -j
root@wirenboard-A3PMMDG4:~# 

Попробовал вот так:

root@wirenboard-A3PMMDG4:~# wb-mcu-fw-updater update-bl --force -a 87 /dev/ttyRS485-1
2024-03-07 06:42:33,602 Will find serial port settings for (/dev/ttyRS485-1 : 87; response_timeout: 0.20)...
2024-03-07 06:43:22,361 Will find bootloader port settings for (/dev/ttyRS485-1 : 87; response_timeout: 0.20)...
2024-03-07 06:43:29,922 Has found bootloader port settings: {'baudrate': 9600, 'parity': 'N', 'stopbits': 2}
2024-03-07 06:43:29,923 Device (/dev/ttyRS485-1 87; response_timeout: 0.20s) supposed to be alive, but found in bootloader
2024-03-07 06:43:30,467 Will flash bootloader v:latest to bring mrps6G (/dev/ttyRS485-1 87; response_timeout: 0.20s) alive
2024-03-07 06:43:30,758 Flashing /var/lib/wb-mcu-fw-updater/bootloader/wb-bootloader-updater_mrps6G__1.4.0_master_c654e11.wbfw
2024-03-07 06:44:01,341 Flashing bootloader to (/dev/ttyRS485-1 87; response_timeout: 0.20s) has failed!
2024-03-07 06:44:01,342 
root@wirenboard-A3PMMDG4:~# 

Как видно, тоже безуспешно :frowning: хотя контроллер считает модуль alive

Прошивка скачивалась из S3 Bucket Listing Generator ?

Первично - вообще не знаю откуда (wb-mcu-fw-updater update-all)

Потом - да, именно оттуда, по полученной сигнатуре.

Интересно… А есть возможность доступ к контроллеру получить?

Да, запросто

Каким образом проще всего организовать? К котроллеру WB7 сейчас подключен только один “проблемный” модуль с адресом 87

Оптимально - ssh. Можно через облако, приглашение отправьте.

Облака нет - тестовая железка на стабилке. SSH “проковырял”, как передать данные для подключения?

В личное сообщение, прямо тут же.

Сделал. Подтвердите, что доступ есть?

Да, зашел.

Судя по выводу

modbus_client -mrtu -pnone -s2 -b9600 /dev/ttyRS485-1 -a 87 -t3 -r 290 -c 12
SUCCESS: read 12 of elements:
	Data: 0x006d 0x0072 0x0070 0x0073 0x0036 0x0047 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 
root@wirenboard-A3PMMDG4:~# echo -e $(modbus_client -mrtu -pnone -s2 /dev/ttyRS485-1 -a87 -t0x03 -r330 -c8 | grep Data | sed -e 's/.*Data://' -e 's/ 0x00/\\x/g')
1.4.0

bootloader уже новый.

В общем:

Делаю:
#Сигнатура
echo -e $(modbus_client -mrtu -pnone -s2 -b9600 /dev/ttyRS485-1 -a 87 -t3 -r 290 -c 12 | grep Data | sed -e 's/.*Data://' -e 's/ 0x00/\\x/g')
mrps6G
#Версия загрузчика:
echo -e $(modbus_client -mrtu -pnone -s2 /dev/ttyRS485-1 -a87 -t0x03 -r330 -c8 | grep Data | sed -e 's/.*Data://' -e 's/ 0x00/\\x/g')
1.4.0

# Прошивка https://fw-releases.wirenboard.com/fw/by-signature/mrps6G/main/1.21.1.wbfw
wb-mcu-fw-flasher -d /dev/ttyRS485-1 -D -j -B 9600 -a 87 -f ./1.21.1.wbfw 
/dev/ttyRS485-1 opened successfully.
Send jump to bootloader command and wait 2 seconds...
[57][06][00][81][00][01][14][14]
Waiting for a confirmation...
ERROR Connection timed out: select
Error: Connection timed out.
May be device already in bootloader, check status led
./1.21.1.wbfw opened successfully, size 23288 bytes

Sending info block...[57][10][10][00][00][10][20][84][0F][A0][6D][05][B6][92][5C][90][FF][41][E2][75][4C][BB][F7][65][E5][D2][A3][9D][2C][89][F5][C5][55][3F][02][C1][C2][3E][94][45][85]
Waiting for a confirmation...
<57><90><02><2D><D1>
ERROR Illegal data address

Error while sending info block: Illegal data address

Пытаюсь перешить на старый bootloader:
wb-mcu-fw-flasher -d /dev/ttyRS485-1 -D -j -B 9600 -a 87 -f ./1.3.0.wbfw 
/dev/ttyRS485-1 opened successfully.
Send jump to bootloader command and wait 2 seconds...
[57][06][00][81][00][01][14][14]
Waiting for a confirmation...
ERROR Connection timed out: select
Error: Connection timed out.
May be device already in bootloader, check status led
./1.3.0.wbfw opened successfully, size 8736 bytes

Sending info block...[57][10][10][00][00][10][20][C1][FE][BC][41][44][76][EA][E3][DF][50][46][98][4C][50][8E][8F][51][95][77][AC][FE][A7][1A][B2][34][F3][6B][96][43][EE][2C][CF][22][72]
Waiting for a confirmation...
ERROR Connection timed out: select

Error while sending info block: Connection timed out
[57][10][10][00][00][10][20][C1][FE][BC][41][44][76][EA][E3][DF][50][46][98][4C][50][8E][8F][51][95][77][AC][FE][A7][1A][B2][34][F3][6B][96][43][EE][2C][CF][22][72]
Waiting for a confirmation...

несколько неожиданно, проконсультируюсь, возможно поменяем модуль.