Зависает контроллер

Добрый день!

Перестал нормально работать контроллер Wiren Board 7.4.3 (s/n AE63EOBY), release wb-2602 (as stable). Настроена автоматическая перезагрузка в 12 ночи, после которой он уже второй раз не может загрузиться. Вчера перезагрузил по питанию после зависания(nginx выдал код 500, по ssh не мог подключится), всё заработало как надо, обновил пакеты через apt, но сегодня ситуация повторилась. Снова удалённо не могу его перезапустить:

root@wirenboard-A4LEEFES:~# ssh ``root@172.28.32.131`` “reboot”
root@172.28.32.131``’s password:
bash: /etc/bash.bashrc: Input/output error
/usr/lib/wb-utils/common.sh: line 67: ./of.sh: Input/output error
/usr/lib/wb-utils/ensure-env-cache.sh: line 34: of_has_prop: command not found
/usr/lib/wb-utils/ensure-env-cache.sh: line 44: 18143 Segmentation fault rm “$WB_ENV_CACHE” -f
/usr/lib/wb-utils/ensure-env-cache.sh: line 1: 18158 Segmentation fault [[ ! -e “$WB_ENV_CACHE” || ! -e “$WB_ENV _HASH” ]]
Failed to open initctl fifo: No such device or address
Failed to talk to init daemon.

Что может исправить проблему? Как не допустить повторного возникновения?

Добрый день.

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

Удалось удалённо перезагрузить контроллер командой

ssh root@wirenboard-AE63EOBY “echo u > /proc/sysrq-trigger && echo s > /proc/sysrq-trigger && sleep 10; echo b > /proc/sysrq-trigger”

Вывод диагностики прилагаю.

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

Судя по

 -6 113bcdf27eb94b8684dabc8f7c19f9e0 Sun 2026-03-01 21:00:28 UTC—Sun 2026-03-08 21:00:06 UTC
 -5 609d46b8efa54c86af2be2b50a32bebd Sun 2026-03-08 21:00:26 UTC—Sun 2026-03-15 21:00:06 UTC
 -4 35679de9323c474d99211a48f314191b Sun 2026-03-15 21:00:27 UTC—Sun 2026-03-22 21:00:07 UTC
 -3 fd270b63551e49e88eb0b2a8a5bab7f0 Sun 2026-03-22 21:00:27 UTC—Sun 2026-03-29 21:00:07 UTC
 -2 08ec00c2b4d843a8807243697a64ccc0 Sun 2026-03-29 21:00:27 UTC—Wed 2026-04-01 20:13:55 UTC

Перезагрузка раз в неделю?

Ну, что интересно - то что логов после 23:20 просто нет.

может указывать на недоступность как раз emmc. То есть - невозможность, в том числе, и записать лог.
dmesg не запускали до перезагрузки?
Для точной диагностики неплохо вставить в контроллер SD, если записывать логи на нее - то вероятно можно точно понять. Но и если контроллер доступен по ssh то в логе ядра будет про недоступность разделов.

Да, раз в неделю, в cron задание (0 0 * * 0 /sbin/shutdown -r now). При этом до перезапуска по питанию задание не выполнилось, пришлось ехать и перезапускать руками, SSH не работал вовсе.

dmesg не запускали до перезагрузки?

Не запускал так как не было доступа. По SSH интерактивная оболочка запускалась через раз и сразу обрывалась, получилось только отправить команду перезапуска.

Как можно настроить копирование логов на флешку?

На контроллере работает journald, по умолчанию логи хранит в /var/log/journal
Основной конфиг, соответственно /etc/systemd/journald.conf.wb
Сейчас проверю метод ну и выложу годные команды/изменения.

Я воткнул в контроллер SD карточку:

[74972.885804] mmc1: new high speed SDHC card at address 40cb
[74972.892969] mmcblk1: mmc1:40cb LYXSD 14.8 GiB
[74972.900680]  mmcblk1: p1

Удаляю раздел, создаю ии форматирую:

umount /mnt/sdcard
(echo "d"; echo "n"; echo "p"; echo "1"; echo ""; echo ""; echo "w") | fdisk /dev/mmcblk1 && mkfs.ext3 /dev/mmcblk1p1

“y” подтверждения забыл, ввожу вручную


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

mount |grep sdc
/dev/mmcblk1p1 on /mnt/sdcard type ext3 (rw,relatime,x-systemd.automount)

так как journald не имеет способа явно указать произвольный путь - то делаем симлинком.
Останавливаем сервис(ы) и перестаскиваем каталог

systemctl stop systemd-journald*

Чо-то SD у меня бракованая, похоже. Поищу другую

[  633.450831] I/O error, dev mmcblk1, sector 12963864 op 0x1:(WRITE) flags 0x4800 phys_seg 256 prio class 0[  633.461258] sunxi-mmc 4020000.mmc: data error, sending stop command[  633.468368] sunxi-mmc 4020000.mmc: send stop command failed[  633.483927] mmcblk1: recovery failed![  633.487730] I/O error, dev mmcblk1, sector 12965912 op 0x1:(WRITE) flags 0x4800 phys_seg 256 prio class 0[  633.498132] sunxi-mmc 4020000.mmc: data error, sending stop command[  633.505228] sunxi-mmc 4020000.mmc: send stop command failed[  633.520810] mmcblk1: recovery failed!

В общем поменял SD.
В /mnt/sdcard создаю каталог log и переношу в него /var/log/journal/

И делаю симлинк:

ln -s /mnt/sdcard/log/journal /var/log/
ls -l /var/log |grep journal
lrwxrwxrwx 1 root      root           23 Apr 15 12:54 journal -> /mnt/sdcard/log/journal

Запускаю systemd-journald, проверяю что пишется.

Понял, спасибо!

Постараюсь в ближайшее время добраться до контроллера и вставить в него флешку.

Заменил контроллер на другой из запаса, с этим буду разбираться на столе. Обновил прошивку со сбросом настроек к заводским и через сутки контроллер опят наглухо завис. В консоли отладки по usb сыпались без остановки сообщения что filesystem is red only, даже залогиниться не смог.

Вот эти бы сообщения сохранить - да выложить.
Особенно сначала.

Поймал зависание снова, в консоли отладки:

Спойлер

▒▒▒[29172.967852] sunxi-mmc 1c11000.mmc: Card stuck in wrong state! card_busy_de tect status: 0xe00
[29172.976308] mmcblk0: recovery failed!
[29172.980037] blk_update_request: I/O error, dev mmcblk0, sector 312312 op 0x0: (READ) flags 0x0 phys_seg 1 prio class 0
[29172.983269] sunxi-mmc 1c11000.mmc: data error, sending stop command
[29172.997259] sunxi-mmc 1c11000.mmc: send stop command failed
[29174.458285] sunxi-mmc 1c11000.mmc: Card stuck in wrong state! card_busy_detec t status: 0xe00
[29174.466741] mmcblk0: recovery failed!
[29174.470522] blk_update_request: I/O error, dev mmcblk0, sector 5539848 op 0x0 :(READ) flags 0x0 phys_seg 1 prio class 0
[29174.473723] sunxi-mmc 1c11000.mmc: data error, sending stop command
[29174.487832] sunxi-mmc 1c11000.mmc: send stop command failed
[29175.948287] sunxi-mmc 1c11000.mmc: Card stuck in wrong state! card_busy_detect status: 0xe00
[29175.956759] mmcblk0: recovery failed!
[29175.960566] blk_update_request: I/O error, dev mmcblk0, sector 1997056 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[29175.963762] sunxi-mmc 1c11000.mmc: data error, sending stop command
[29175.977904] sunxi-mmc 1c11000.mmc: send stop command failed
[29177.438313] sunxi-mmc 1c11000.mmc: Card stuck in wrong state! card_busy_detect status: 0xe00
[29177.446772] mmcblk0: recovery failed!
[29177.450519] blk_update_request: I/O error, dev mmcblk0, sector 515408 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[29177.453762] sunxi-mmc 1c11000.mmc: data error, sending stop command
[29177.467839] sunxi-mmc 1c11000.mmc: send stop command failed
[29178.928224] sunxi-mmc 1c11000.mmc: Card stuck in wrong state! card_busy_detect status: 0xe00
[29178.936681] mmcblk0: recovery failed!
[29178.940430] blk_update_request: I/O error, dev mmcblk0, sector 361264 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[29178.943680] sunxi-mmc 1c11000.mmc: data error, sending stop command
[29178.957701] sunxi-mmc 1c11000.mmc: send stop command failed
[29180.417955] sunxi-mmc 1c11000.mmc: Card stuck in wrong state! card_busy_detect status: 0xe00
[29180.426426] mmcblk0: recovery failed!
[29180.430206] blk_update_request: I/O error, dev mmcblk0, sector 312312 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[29180.442492] sunxi-mmc 1c11000.mmc: data error, sending stop command
[29180.449099] sunxi-mmc 1c11000.mmc: send stop command failed
[29181.907828] sunxi-mmc 1c11000.mmc: Card stuck in wrong state! card_busy_detect status: 0xe00
[29181.916286] mmcblk0: recovery failed!
[29181.920101] blk_update_request: I/O error, dev mmcblk0, sector 5539848 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[29181.923286] sunxi-mmc 1c11000.mmc: data error, sending stop command
[29181.937415] sunxi-mmc 1c11000.mmc: send stop command failed
[29183.398319] sunxi-mmc 1c11000.mmc: Card stuck in wrong state! card_busy_detect status: 0xe00
[29183.406776] mmcblk0: recovery failed!
[29183.410523] blk_update_request: I/O error, dev mmcblk0, sector 361264 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[29183.413748] sunxi-mmc 1c11000.mmc: data error, sending stop command
[29183.427795] sunxi-mmc 1c11000.mmc: send stop command failed
[29184.887811] sunxi-mmc 1c11000.mmc: Card stuck in wrong state! card_busy_detect status: 0xe00
[29184.896282] mmcblk0: recovery failed!
[29184.900049] blk_update_request: I/O error, dev mmcblk0, sector 312312 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[29184.912343] sunxi-mmc 1c11000.mmc: data error, sending stop command
[29184.919120] sunxi-mmc 1c11000.mmc: send stop command failed
[29186.378047] sunxi-mmc 1c11000.mmc: Card stuck in wrong state! card_busy_detect status: 0xe00
[29186.386503] mmcblk0: recovery failed!
[29186.390238] blk_update_request: I/O error, dev mmcblk0, sector 336384 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[29186.402519] sunxi-mmc 1c11000.mmc: data error, sending stop command
[29186.409152] sunxi-mmc 1c11000.mmc: send stop command failed
[29187.868262] sunxi-mmc 1c11000.mmc: Card stuck in wrong state! card_busy_detect status: 0xe00
[29187.876732] mmcblk0: recovery failed!
[29187.880523] blk_update_request: I/O error, dev mmcblk0, sector 5539848 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[29187.883729] sunxi-mmc 1c11000.mmc: data error, sending stop command
[29187.897848] sunxi-mmc 1c11000.mmc: send stop command failed
[29189.357734] sunxi-mmc 1c11000.mmc: Card stuck in wrong state! card_busy_detect status: 0xe00
[29189.366212] mmcblk0: recovery failed!
[29189.369954] blk_update_request: I/O error, dev mmcblk0, sector 1997056 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[29189.382367] sunxi-mmc 1c11000.mmc: data error, sending stop command
[29189.389000] sunxi-mmc 1c11000.mmc: send stop command failed
[29190.848101] sunxi-mmc 1c11000.mmc: Card stuck in wrong state! card_busy_detect status: 0xe00
[29190.856574] mmcblk0: recovery failed!
[29190.860356] blk_update_request: I/O error, dev mmcblk0, sector 424112 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[29190.872652] sunxi-mmc 1c11000.mmc: data error, sending stop command
[29190.879274] sunxi-mmc 1c11000.mmc: send stop command failed
[29192.337767] sunxi-mmc 1c11000.mmc: Card stuck in wrong state! card_busy_detect status: 0xe00
[29192.346241] mmcblk0: recovery failed!
[29192.350000] blk_update_request: I/O error, dev mmcblk0, sector 515408 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[29192.353234] sunxi-mmc 1c11000.mmc: data error, sending stop command
[29192.367220] sunxi-mmc 1c11000.mmc: send stop command failed
[29193.827730] sunxi-mmc 1c11000.mmc: Card stuck in wrong state! card_busy_detect status: 0xe00
[29193.836186] mmcblk0: recovery failed!
[29193.839925] blk_update_request: I/O error, dev mmcblk0, sector 361264 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[29193.843168] sunxi-mmc 1c11000.mmc: data error, sending stop command
[29193.857198] sunxi-mmc 1c11000.mmc: send stop command failed
[29195.317796] sunxi-mmc 1c11000.mmc: Card stuck in wrong state! card_busy_detect status: 0xe00
[29195.326252] mmcblk0: recovery failed!
[29195.329991] blk_update_request: I/O error, dev mmcblk0, sector 312312 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[29195.342273] sunxi-mmc 1c11000.mmc: data error, sending stop command
[29195.348892] sunxi-mmc 1c11000.mmc: send stop command failed
[29196.807953] sunxi-mmc 1c11000.mmc: Card stuck in wrong state! card_busy_detect status: 0xe00
[29196.816409] mmcblk0: recovery failed!
[29196.820136] blk_update_request: I/O error, dev mmcblk0, sector 336384 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[29196.823381] sunxi-mmc 1c11000.mmc: data error, sending stop command
[29196.837398] sunxi-mmc 1c11000.mmc: send stop command failed
[29198.297983] sunxi-mmc 1c11000.mmc: Card stuck in wrong state! card_busy_detect status: 0xe00
[29198.306451] mmcblk0: recovery failed!
[29198.310211] blk_update_request: I/O error, dev mmcblk0, sector 5539848 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[29198.313406] sunxi-mmc 1c11000.mmc: data error, sending stop command
[29198.327499] sunxi-mmc 1c11000.mmc: send stop command failed
[29199.788107] sunxi-mmc 1c11000.mmc: Card stuck in wrong state! card_busy_detect status: 0xe00
[29199.796587] mmcblk0: recovery failed!
[29199.800370] blk_update_request: I/O error, dev mmcblk0, sector 361264 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[29199.803601] sunxi-mmc 1c11000.mmc: data error, sending stop command
[29199.817684] sunxi-mmc 1c11000.mmc: send stop command failed
[29201.277913] sunxi-mmc 1c11000.mmc: Card stuck in wrong state! card_busy_detect status: 0xe00
[29201.286372] mmcblk0: recovery failed!
[29201.290128] blk_update_request: I/O error, dev mmcblk0, sector 312312 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[29201.302414] sunxi-mmc 1c11000.mmc: data error, sending stop command
[29201.309064] sunxi-mmc 1c11000.mmc: send stop command failed
[

journal.7z (2,3 МБ) Вот журнал, который был записан на флешку.

Ну, явно выглядит как проблема аппаратная.
То есть ошибки EMMC
Из журнала: DEVICE_LIFE_TIME_EST_TYP_A = 0x0B : ресурс перезаписи (по оценке контроллера) превышен

Для примера, на аналогичном:

  DEVICE_LIFE_TIME_EST_TYP_B[269]:       0x00
  DEVICE_LIFE_TIME_EST_TYP_A[268]:       0x01

Контроллер, к сожалению, уже негарантийный.

Очень жаль, так как этот контроллер пролежал в запасе большую часть времени и был поставлен на замену такому же, с умершей памятью(заводской дефект). Вывод: не покупать оборудование про запас, чтобы гарантия не заканчивалась. Вопрос в том почему мог выработаться ресурс записи меньше чем за год работы? И как следствие: каким образом перевести драйвер wb-mqtt-serial на работу только по стандартному modbus? Настрою опрос датчиков раз в минуту, мне этого в целом хватит. Мне не нужен ещё один контроллер на котором сдохнет память из за постоянной перезаписи.

Ну и последний вопрос: если я перекатаю микросхему памяти как мне потом записать образ на новую флешку?

О, даже так? А как давно поставлен?
Пожалуй, если он работал немного - он может быть интересен для исследования, возможно заменим, если вы согласитесь.

Высоковероятно - количество записей.

Драйвер, вне зависимости от типа обмена с устройствами не пишет ничего на флеш, если, конечно, не включен (не включен) debug.
Да, отключение быстрого возможно путем редактирования шаблонов - но это не влияет никак на работы с файловой системой.

Такого механизма нет, разве что на программаторе; Но не уверен что после подобного будет работать…

О, даже так? А как давно поставлен?
Пожалуй, если он работал немного - он может быть интересен для исследования, возможно заменим, если вы согласитесь.

В июле прошлого года менял (ссылка на предыдущую тему по замене Не загружается Wirenboard 7.4.3 - #6 от пользователя DmitryKur ) на замену согласен, если вам интересно.

Высоковероятно - количество записей.

Не сказал бы что там какая-то сверх нагрузка, к контроллеру подключён один map-3ev, пара mrm2-mini и контроллер высоковольтного стабилизатора, там десяток параметров с медленным опросом.

Дебаг выключен точно.

Я экспериментировал с 6 ревизией (уложил файловую систему попыткой расширить раздел), мне удавалось вывести процессор в режим FEL зажатием кнопки и подключением кабеля от 5-го контроллера (USB A-A), загрузить на него u-boot с минимальным buildroot но дальше поднять скилла не хватило, отправлял вам не перепрошивку. Может быть есть рецепт как собрать uboot сразу с драйверами, чтобы залить образ?

Я бы предварительно сохранил первые 16+МБ с помощью dd и залил на флешку.

Вот тут оно есть.

Точно, теперь же есть sd карточка!