Console de inundação do ModemManager no Debian 8

0

Estou desenvolvendo um sistema baseado no Debian 8 (Jessie) para uma solução embarcada, usando o multistrap para construir um rootfs. O sistema é sem cabeça e pode ser acessado através de um console serial para depuração e via SSH.

Estou tendo um problema com o ModemManager neste sistema. Ele instala sem problemas, mas uma vez que eu tenha habilitado e ele realmente inicia, normalmente (nem sempre, mas geralmente) começa a inundar o console de depuração. A saída é geralmente apenas um fluxo sem sentido de caracteres, mas às vezes existem vários comandos AT também. Eu sei que essa inundação é causada pelo ModemManager porque ele pode cessar assim que eu remover o ModemManager.

Eu poderia viver com alguma inundação aleatória, mas o problema é que essa inundação quase sempre faz com que o console não responda e me impede de fazer o login. Às vezes, embora muito raramente, eu consegui logar apesar de desta inundação, verifique o IP do dispositivo e faça o login via SSH. Normalmente, porém, essa opção para contornar o problema não está disponível, pois não consigo nem descobrir o IP fornecido ao dispositivo por um servidor DHCP.

Descobri que esse problema é causado pelo ModemManager procurando por modem naquela porta serial. Eu também descobri que existe uma maneira de corrigir o problema usando uma regra do udev. A regra que deveria funcionar é assim:

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

Meu caso é um pouco diferente porque a porta serial é um periférico da CPU, ou seja, não é uma porta serial USB, então modifiquei a regra para este formato:

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

O udevadm agora me diz que a linha está sendo reconhecida e que o atributo (ou o que quer que seja chamado) é adicionado aos atributos do dispositivo.

O problema ainda não está resolvido. Por algum motivo, o ModemManager ainda continua inundando o console e impossibilitando o login.

A remoção do ModemManager não é uma opção porque meu aplicativo precisa disso.

    
por TheAG 09.12.2016 / 09:43

2 respostas

0

Respondendo a minha própria pergunta ...

Eu verifiquei o código do ModemManager e descobri que o ModemManager simplesmente não verifica a regra do udev quando o dispositivo pertence ao subsistema tty. Parece-me que a única maneira de contornar este problema é remendar o ModemManager, mas isso é outro tópico.

    
por 27.12.2016 / 10:37
0

Eu tenho um arquivo /lib/udev/rules.d/77-mm-platform-serial-whitelist.rules , remova-o do seu sistema e reinicie (ou recarregue + acione as regras do udev). Isso já foi corrigido nas fontes do ModemManager.

    
por 10.08.2017 / 18:00