組み込み Debian 8 の ModemManager Flood コンソール

組み込み Debian 8 の ModemManager Flood コンソール

私はマルチストラップを使ってrootfsを構築する組み込みソリューション用のDebian 8(Jessie)ベースのシステムを開発しています。システムはヘッドレスで、デバッグ用にシリアルコンソールとSSHを介してアクセスできます。

このシステムの ModemManager に問題があります。問題なくインストールされますが、一度起動して実際に起動すると、通常は(常にそうではありませんが、通常は)デバッグコンソールが溢れ始めます。出力は通常意味のない文字のストリームですが、時にはさまざまなATコマンドがあります。 ModemManager を削除するとすぐに ModemManager が停止するため、このフラッディングが ModemManager によって発生することがわかります。

私は任意の洪水に遭遇するかもしれませんが、問題は、この洪水のためにほとんどいつでも何らかの方法でコンソールが応答しなくなり、ログインできないことです。まれですが、たまにこのようなフラッディングにもかかわらずログインになり、デバイスのIPを確認した後、SSH経由でログインすることがあります。ただし、通常のように、DHCPサーバーがデバイスに提供したIPでさえ見つからないため、この問題を解決するオプションは利用できません。

モデム管理者がそのシリアルポートからモデムを検索し、問題が発生したことがわかりました。また、udevルールを使用してこの問題を解決する方法があることもわかりました。機能する必要がある規則は次のとおりです。

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

私の状況は少し異なります。シリアルポートはCPUの周辺機器、つまりUSBシリアルポートではないため、ルールを次の形式に変更しました。

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

udevadmは、その行が認識され、その属性(または名前が何であれ)がデバイス属性に追加されたことを知らせます。

しかし、問題はまだ解決されていません。何らかの理由で ModemManager はコンソールをフラッディングし、ログインを中断し続けます。

私のアプリケーションで必要なので、ModemManagerをアンインストールすることはオプションではありません。

答え1

私の質問に答えるには...

ModemManager のコードを確認した結果、デバイスが tty サブシステムに属しているときに ModemManager が udev ルールをまったく確認しないことがわかりました。この問題を解決する唯一の方法は ModemManager をパッチするようですが、これはまったく異なるトピックです。

答え2

存在する場合は、/lib/udev/rules.d/77-mm-platform-serial-whitelist.rulesシステムから削除して再起動します(またはudevルールを再ロードしてトリガーしてください)。これはパッチ済みModemManagerソースから。

関連情報