임베디드 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 소스에서.

관련 정보