Отказ WBIO-DI-DR16 на WB7

Добрый день!
Столкнулись с неприятной ситуацией.
Контроллер WB7 управляет тепловым пунктом на критически важном объекте.
Внезапно в 5 утра присоединенный модуль WBIO-DI-DR16 (по счету второй в линейке из семи) перестал показывать реальные статусы сухих контактов. Часть входов должны быть замкнуты, но все входа отображаются как false.
Сам контроллер не перезагружался, видим uptime 6d.
После принудительной перезагрузки контроллера из вэб-интерфейса ситуация с отображением наладилась.
Такое происходит второй раз за неделю.
Помогите разобраться, в чем причина такого поведения модуля/контроллера.
Логи для диагностики прилагаю.



diag_output_AJNXWCAN_2023-12-22-07.22.24.zip (329,8 КБ)

Добрый день.
Модуль, как я понимаю - 16-канальный модуль дискретных входов для сигналов "сухой контакт" (WBIO-DI-DR-16) — Wiren Board
Что видно из лога:

Dec 22 06:25:51 wirenboard-AJNXWCAN kernel: i2c i2c-1: mv64xxx: I2C bus locked, block: 1, time_left: 0
Dec 22 06:25:53 wirenboard-AJNXWCAN kernel: i2c i2c-1: mv64xxx: I2C bus locked, block: 1, time_left: 0
Dec 22 06:25:55 wirenboard-AJNXWCAN kernel: i2c i2c-1: mv64xxx: I2C bus locked, block: 1, time_left: 0
Dec 22 06:25:57 wirenboard-AJNXWCAN kernel: i2c i2c-1: mv64xxx: I2C bus locked, block: 1, time_left: 0
Dec 22 06:25:59 wirenboard-AJNXWCAN kernel: i2c i2c-1: mv64xxx: I2C bus locked, block: 1, time_left: 0
Dec 22 06:26:01 wirenboard-AJNXWCAN kernel: i2c i2c-1: mv64xxx: I2C bus locked, block: 1, time_left: 0
Dec 22 06:26:04 wirenboard-AJNXWCAN kernel: i2c i2c-1: mv64xxx: I2C bus locked, block: 1, time_left: 0

Сейчас посовещаюсь с коллегами. Модули, как я понимаю - плотно воткнуты и точно всеми контактами?

Приветствую!
Меня сильно смущает ругательство “mv64xxx” в логах; поэтому:

  1. Нет ли каких-либо сторонних устройств на шине боковых модулей?
  2. Хочется результат dtc -I fs /proc/device-tree > dts.txt
  3. И lsmod > lsmod.txt
  4. Какой релиз на контроллере? (wb-release)
  5. Работают ли модули, идущие после неработающего?
  6. Бывало ли такое раньше, или началось недавно?

Предварительно подозреваю какие-то аппаратные проблемы, поэтому хочется получить от Вас описание инсталляции (а в идеале бы - с фото, если есть возможность).

Предполагаемый костыльный способ лечения (кроме перезагрузки) - это systemctl stop wb-mqtt-gpio; modprobe -r pinctrl_mcp23s08_i2c; modprobe pinctrl_mcp23s08_i2c; systemctl restart wb-mqtt-gpio

P.S. прямо сейчас у нас в работе - детектирование отваливающихся WBIO-модулей (будут гореть красным в webui) => было бы здорово попробовать, работает ли в Вашем случае (устанавливать, начиная с wb-2310): тык

  1. положить обе deb-ки на контроллер
  2. apt install ./*.deb --reinstall
  3. reboot

Всё на вид плотно сидит (да и было бы странно, если бы при плохом контакте помогала перезагрузка).
Сторонних устройств нет на шине. Отдельно сидят 2 MAI-6 на RS485.
dtc -I fs /proc/device-tree > dts.txt -вывод прилагаю
lsmod > lsmod.txt -ничего не происходит
Wirenboard release wb-2304 (as stable), target wb7/bullseye

Модули после неработающего - вроде работали, по крайней мере показывали что-то похожее на правду. Но есть подозрение, что вместе со вторым не работали до ребута еще 1 и 3, на скриншотах в первом посте видно, что там тоже появились true, которых не было.
Шина:
1=WBIO-DI-DR8
2=WBIO-DI-DR16
3=WBIO-DI-WD14
4=WBIO-DO-R1G-16
5=WBIO-DO-R10A-8
6=WBIO-DO-R10A-8
7=WBIO-DO-R10A-8

Была похожая ситуация 1 раз неделю назад, но персонал по месту сразу перезагрузил не вникая. Контроллер в работе более полугода на объекте.

Свежего фото нет, прилагаю что, что осталось с наладки.


dtc -I f.txt (28,8 КБ)

Добрый день!
Проблема повторяется.
Первые три модуля на шине - в вэбе все статусы бледные - неактивные. Фактическое состояние входов не отображают.
1=WBIO-DI-DR8
2=WBIO-DI-DR16
3=WBIO-DI-WD14

Последующие модули - вроде норм.
Если ребутнём, скорей всего связь восстановится.
Помогите решить проблему.
Можем дать удал.доступ.
Логи для диагностики прилагаю.


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

Добрый день.
Вижу в dmesg характерное:

Feb 13 02:55:34 wirenboard-AJNXWCAN kernel: i2c i2c-1: mv64xxx: I2C bus locked, block: 1, time_left: 0
Feb 13 02:55:36 wirenboard-AJNXWCAN kernel: i2c i2c-1: mv64xxx: I2C bus locked, block: 1, time_left: 0
Feb 13 02:55:38 wirenboard-AJNXWCAN kernel: i2c i2c-1: mv64xxx: I2C bus locked, block: 1, time_left: 0
Feb 13 02:55:40 wirenboard-AJNXWCAN kernel: i2c i2c-1: mv64xxx: I2C bus locked, block: 1, time_left: 0

Предполагаю что один из модулей (сам чип!) подвис, притянув шину к земле.
Воспроизвожу.
Обновите пожалуйста ПО на контроллере, в новых релизах есть анализ доступности WBIO модулей.

Хорошо, запланируем обновление. А как решить проблему с чипом? И как определить проблемный модуль? Менять все три?

Модулей шесть. Действенный способ диагностики - отключать (отодвигать) по одному. Как только будет отключен зависший (предположительно) - оставшиеся заработают. Ну и в dmesg перестанет вываливаться ошибки блокировки шины.

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

А релейные модули - продолжают управляться? То есть если переключить их - они фактически переключаются?

Питание в процессе перезагрузки снимается.

По месту выявить зависший модуль не удалось, к сожалению.
Ввиду важности объекта принято решение заменить всю линейку модулей на аналоги WB, но по RS485, а эксперименты с этими модулями проводить уже отдельно.

Жаль…
У меня получилось воспроизвести похожее поведение, посмотрим, есть ли возможность программно победить.

5 сообщений было перенесено в новую тему: Отваливаются модули I2C