Контроллер уходит в циклическую перезагрузку после чистой перепрошивки

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

Проблема такая у меня наблюдается.
Имеется контроллер WB5 ревизия 5 r.6, SN: 680 005 wr

По инструкции этой прошиваю контроллер, прошивка последняя (на данный момент) 202002171701_emmc_wb55.img. Контроллер прошивается удачно, web морда работает. Если же перегрузить контроллер через reboot или же через кнопку питания, то появляется ряд ошибок

mxs_mem_init(): before_init_clock
mxs_mem_init(): after_init_clock
mxs_mem_init(): after_vdda_clock
LLC

U-Boot 2017.03-1.0.2-g6ee0824fba (May 27 2019 - 16:15:26 +0000)

CPU: Freescale i.MX28 rev1.2 at 454 MHz
BOOT: SSP SD/MMC #0, 3V3
DRAM: 128 MiB
MMC: MXS MMC: 0
MMC0: Command 8 timeout (status 0xf0384020)
MMC0: Command 55 timeout (status 0xf0284020)

Mounting /mnt/data…
[ OK ] Listening on Load/Save RF Kill Switch Status /dev/rfkill Watch.
Starting Load/Save RF Kill Switch Status…
[ OK ] Started Load/Save RF Kill Switch Status.
[FAILED] Failed to mount /mnt/data.
See ‘systemctl status mnt-data.mount’ for details.
Starting prepare mounts and symlinks to config files…

[ OK ] Started prepare mounts and symlinks to config files.
Starting Create Volatile Files and Directories…
[FAILED] Failed to start Create Volatile Files and Directories.
See ‘systemctl status systemd-tmpfiles-setup.service’ for details.
Starting Update UTMP about System Boot/Shutdown…
[ OK ] Reached target System Time Synchronized.

[ 27.058086] Bluetooth: BNEP filters: protocol multicast
[FAILED] Failed to start Mosquitto MQTT v3.1/v3.1.1 B[ 27.122476] Bluetooth: BNEP socket layer initialized
roker.
See ‘systemctl status mosquitto.service’ for details.
[ OK ] Started LSB: RaZberry Z-Wave service.

[ OK ] Stopped Mosquitto MQTT v3.1/v3.1.1 Broker.
Starting Mosquitto MQTT v3.1/v3.1.1 Broker…
[ OK ] Started LSB: prepare partitions & rootfs.
[FAILED] Failed to start Mosquitto MQTT v3.1/v3.1.1 Broker.
See ‘systemctl status mosquitto.service’ for details.
[ OK ] Stopped Mosquitto MQTT v3.1/v3.[ 33.746266] random: crng init done
1.1 Broker.
Starting Mosquitto MQTT v3.1/v3.1.1 Broker…
[ OK ] Started Hostname Service.
[FAILED] Failed to start Mosquitto MQTT v3.1/v3.1.1 Broker.
See ‘systemctl status mosquitto.service’ for details.
Starting LSB: : Wiren Board database logger…
Starting LSB: Firmware update monitor…
Starting LSB: Configuration Editor Backend…
Starting LSB: MQTT Driver for ADC…
Starting LSB: : Wiren Board MQTT to Modbus TCP gateway…
Starting LSB: MQTT Rule Engine for Wiren Board…
Starting LSB: MQTT driver for WB HomA for RFM69 ISM radio…
Starting LSB: MQTT Driver for serial devices…
[ OK ] Started LSB: Hardware configuration with Device Tree overlays.
[ OK ] Started LSB: Starts klogd.

[ OK ] Started LSB: MQTT Driver for serial devices.
[ OK ] Stopped Mosquitto MQTT v3.1/v3.1.1 Broker.
Starting Mosquitto MQTT v3.1/v3.1.1 Broker…
Starting LSB: initscript to use GSM modem integrated RTC…
[ OK ] Started LSB: MQTT driver for WB HomA for RFM69 ISM radio.
[FAILED] Failed to start Mosquitto MQTT v3.1/v3.1.1 Broker.
See ‘systemctl status mosquitto.service’ for details.
[ OK ] Stopped Mosquitto MQTT v3.1/v3.1.1 Broker.
Starting Mosquitto MQTT v3.1/v3.1.1 Broker…
[ OK ] Started LSB: initscript to use GSM modem integrated RTC.
Starting Raise network interfaces…
[ OK ] Started Raise network interfaces.
[FAILED] Failed to start Mosquitto MQTT v3.1/v3.1.1 Broker.
See ‘systemctl status mosquitto.service’ for details.
Starting LSB: MQTT Driver for GPIO-controlled switches…
[ OK ] Reached target Network.
Starting A high performance web server and a reverse proxy server…
Starting dnsmasq - A lightweight DHCP and caching DNS server…
Starting Permit User Sessions…
Starting OpenBSD Secure Shell server…
[ OK ] Reached target Network is Online.
Starting LSB: Brings up/down network automatically…
Starting LSB: Advanced IEEE 802.11 management daemon…
Starting LSB: Start NTP daemon…
[ OK ] Started Permit User Sessions.
[ OK ] Started LSB: Advanced IEEE 802.11 management daemon.
[FAILED] Failed to start OpenBSD Secure Shell server.
See ‘systemctl status ssh.service’ for details.
[FAILED] Failed to start A high performance …server and a reverse proxy server.
See ‘systemctl status nginx.service’ for details.
[ OK ] Started LSB: MQTT Driver for GPIO-controlled switches.
[ 51.486370] ip: page allocation failure: order:0, mode:0x2080020(GFP_ATOMIC)

[ OK ] Started Getty on tty1.
[ OK ] Reached target Login Prompts.
[ OK ] Started LSB: Start NTP daemon.
Starting LSB: board-specific initscript…
[FAILED] Failed to start OpenBSD Secure Shell server.
See ‘systemctl status ssh.service’ for details.
[FAILED] Failed to start Mosquitto MQTT v3.1/v3.1.1 Broker.
See ‘systemctl status mosquitto.service’ for details.
[ OK ] Stopped Mosquitto MQTT v3.1/v3.1.1 Broker.
Starting Mosquitto MQTT v3.1/v3.1.1 Broker…
[ OK ] Stopped OpenBSD Secure Shell server.
Starting OpenBSD Secure Shell server…
[FAILED] Failed to start Mosquitto MQTT v3.1/v3.1.1 Broker.
See ‘systemctl status mosquitto.service’ for details.
[FAILED] Failed to start OpenBSD Secure Shell server.
See ‘systemctl status ssh.service’ for details.
[ 58.512899] SMSC LAN8710/LAN8720 800f0000.etherne:00: attached PHY driver [SMSC LAN8710/LAN8720] (mii_bus:phy_addr=800f0000.etherne:00, irq=-1)
[ 58.642265] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready

Debian GNU/Linux 9 wirenboard-AIAMG5BX ttyAMA0

Есть файл /var/log/messages первого после перепрошивки старта, если требуется залью. Тот же файл, но после перезагрузки (когда проблема проявляется) слить не получается т.к. ssh не доступен, но через dbg консоль команды выполнять получается. WebUI тоже не доступен, контроллер через некоторое время перегружается watchdog’ом.

Добрый день.
Предполагаю что остались куски “старой” системы, предлагаю почистить флешку контроллера в процессе прошивки. То есть после того как контроллер определился как USB накопитель - затереть его нулями. Это можно сделать и через Debug (USB) подключение и с компьютера.
Сейчас, приведу пример.

А как могут остаться “куски старой системы” если при перепрошивке полностью формируется образ файловой системы (img файл я так понимаю это файловая система as is) … получается что файловая система ссылается на неразмеченную область? или я не правильно понимаю процесс чистой прошивки?

Процесс прошивки работает так:
Заливается на флешку контроллера образ, попадающий в первый корневой раздел, который при запуске формирует остальные.
поэтому, после выполнения

./Mxsldr.bin wb5_usbfw.sb

Советую выполнить на контроллере через Debug

dd if=/dev/zero of=/dev/mmcblk0 bs=1M

а потом уж заливать прошивку.

Обнуление помогло. Спасибо!

В debug консоли все же при загрузке появляется

[FAILED] Failed to mount /mnt/data.
See 'systemctl status mnt-data.mount' for details.

но вроде всё работает. То что появляется такая ошибка это нормально?

Ненормально. Был такой баг, для 5.8 чинили сборку образа. Дело в том что не создается (не форматируется) /dev/mmcblk…06.
Который как раз и должен монтироваться в /mnt/data/
Для исправления - надо вручную создать раздел, примонтировать его mount -a, потом смонтировать корень дополнительно в /tmp/tmproot/ например и перенести /tmp/tmproot/mnt/data в /mnt/

Для 5.6 я так понимаю не починили или фикс ещё не попал в релизную сборку?

Можете расписать как это сделать по шагам?

Да, не чинили.

По шагам - проверить наличие /dev/mmcblk0p6
Если есть - создать ФС

mkfs -t ext4 /dev/mmcblk0p6

переместить /mnt/data в /opt
Попробовать смонтировать /dev/mmcblk0p6
Если удачно - переместить /opt/data обратно.
Попробовать перезагрузиться.

Есть надежда на починку бага для 5.6? Хотелось бы иметь свежую прошивку которую в любой момент можно накатить и получить чистый работающий девайс.

Проверил что /dev/mmcblk0p6 есть

root@wirenboard-AIAMG5BX:~# fdisk -l | grep mmcblk0p6
/dev/mmcblk0p6      4757504 7733247 2975744  1.4G 83 Linux

Далее

root@wirenboard-AIAMG5BX:~# mkfs -t ext4 /dev/mmcblk0p6
mke2fs 1.43.4 (31-Jan-2017)
Creating filesystem with 371968 4k blocks and 93120 inodes
Filesystem UUID: d7da602a-25a9-4e7d-92bf-e7efbd90a4a6
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912

Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

root@wirenboard-AIAMG5BX:~# cp -r /mnt/data /opt
root@wirenboard-AIAMG5BX:~# mount -a
[ 1890.077492] EXT4-fs (mmcblk0p6): mounted filesystem with ordered data mode. Opts: (null)
root@wirenboard-AIAMG5BX:~# cp -r /opt/data /mnt

Перегружаюь через reboot и получаю

[FAILED] Failed to start Mosquitto MQTT v3.1/v3.1.1 Broker.
See 'systemctl status mosquitto.service' for details.

Пробовал останавливать mqtt сервис перед всеми манипуляциями, результат один и тот же.

Может быть можно поставить какую-то заведомо рабочую прошивку без этого бага, а потом через web накатить последнюю? Подскажите, какая прошивка лишена этого бага?

PS. Если честно, то я неприятно удивлен “качеством” прошивки … одно дело когда проводишь какие-то манипуляции с устройством и оно ломается (в программном смысле), а другое дело приведение в точку ноль без сохранения данных. Тестировалась ли прошивка на wb5.6 или нет? Или может быть проблема в конкретно моём экземпляре? Печально это всё однако.

Попробовал залить прошивку 201701101841_emmc_wb55.img (также с обнулением флехи с dbg консоли) самую раннюю которая у вас в репе присутсвует - опять ошибки и циклическая перезагрузка контроллера :frowning_face: … походу всё таки с контроллером беда.

Не торопитесь, после перезагрузки раздел монтировался? Чтобы контроллер не перезагружался - надо остановить watchdog
Но вообще - да, возможно что флешка уже плоха.
Проверьте:
https://wirenboard.com/wiki/EMMC_flash_storage_wear_level

Скрипт выдает следующее:

~10% wear

раздел монтировался … но что-то меня напрягает эта ошибка

как мне решить проблему? замена флехи?

Скорее - да, замена процессорного модуля, SOC.
Но перед этим все ж дайте доступ, гляну сам.
Процессорный модуль (флешка на нем) - 2000.

Без проблем, только расскажите как это сделать?

Т.е. 2000 это стоимость флехи + замена её или это полностью новый модуль … проясните момент

Либо SSH снаружи открыть либо поставить на компьютер, с которого доступен контроллер anydesk

2000 - цена процессорного модуля, на этом модуле процессор, память, флешка.

Для проброски ssh снаружи у меня нет внешнего сервера, где такие искать хз.
Запустил anydesk, координаты кинул в ЛС

когда планируете посмотреть? не могу вечно держать комп с anydesk включеным