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.