Консоль переполнения ModemManager во встроенном Debian 8

Я разрабатываю систему на основе Debian 8 (Jessie) для встраиваемого решения, используя multiistrap для создания rootfs. Система является автономной, и к ней можно получить доступ через последовательную консоль, предназначенную для отладки, и через SSH.

У меня проблема с ModemManager в этой системе. Он устанавливается без проблем, но как только я его включил и он действительно запустился, он обычно (не всегда, но обычно) начинает заливать консоль отладки. Обычно на выходе получается бессмысленный поток символов, но иногда встречаются и различные AT-команды. Я знаю, что это наводнение вызвано ModemManager, потому что оно может прекратиться после удаления ModemManager.

Я мог бы жить с каким-то случайным лавинным потоком, но проблема в том, что это наводнение почти всегда каким-то образом делает консоль невосприимчивой и таким образом мешает мне войти в систему.Иногда, хотя и очень редко, мне удавалось войти в систему, несмотря на это наводнение, проверить IP-адрес устройства, а затем войти через SSH. Однако обычно этот вариант решения проблемы недоступен, так как я даже не могу узнать IP-адрес, присвоенный устройству DHCP-сервером.

Я обнаружил, что эта проблема связана с тем, что ModemManager сканирует модем в этом последовательном порту. Я также узнал, что есть способ решить проблему с помощью правила udev. Правило, которое должно работать, выглядит следующим образом:

ATTRS{idVendor}=="0ca6" ATTRS{idProduct}=="a050", ENV{ID_MM_DEVICE_IGNORE}="1"

Мой случай немного отличается, потому что последовательный порт является периферийным устройством ЦП, т.е. не является последовательным портом USB, поэтому я изменил правило на эту форму:

KERNEL=="ttyS0", ENV{ID_MM_DEVICE_IGNORE}="1"

udevadm теперь сообщает мне, что линия распознается и этот атрибут (или как он там называется) добавляется к атрибутам устройства.

Однако проблема еще не решена. По какой-то причине ModemManager по-прежнему переполняет консоль и делает невозможным вход в систему.

Удаление ModemManager невозможно, потому что это необходимо моему приложению.

0
12.12.2016, 11:58
2 ответа

Отвечая на свой вопрос ...

Я проверил код ModemManager и обнаружил, что ModemManager просто не проверяет правило udev, когда устройство принадлежит к подсистеме tty. Мне кажется, что единственный способ обойти эту проблему - исправить ModemManager, но это уже другая тема.

0
28.01.2020, 04:49

Если у вас есть файл /lib/udev/rules.d/77-mm-platform-serial-whitelist.rules, удалите его из системы и перезагрузите (или перезагрузите + запустите правила udev ). Это уже исправлено в исходниках ModemManager.

0
28.01.2020, 04:49

Теги

Похожие вопросы