Ubuntu 16/18에서 ttyACM은 연결 시 원치 않는 AT 명령을 보냅니다. 중지하는 방법은 무엇입니까?

Ubuntu 16/18에서 ttyACM은 연결 시 원치 않는 AT 명령을 보냅니다. 중지하는 방법은 무엇입니까?

오래된 개발 보드를 기반으로 하는 임베디드 Linux(상대적으로 오래된 커널 버전)를 실행하는 외부 하드웨어가 있습니다 DaVinci DA850.

가젯의 직렬 연결을 사용하여 USB 포트를 통해 호스트 PC와 통신합니다. 외부 하드웨어에서는 이를 ttyGS0일반적으로 이라고 합니다.

PC 측에서는 Windows 가젯 직렬 드라이버가 제대로 작동합니다. 이것은 Ubuntu 14에서도 테스트되었으며 다시 완벽하게 작동했습니다. Ubuntu 14도 이 포트를 인식한다는 점은 주목할 가치가 있습니다 ttyGS0. 최근 Ubuntu 16 및 Ubuntu 18에서 다시 테스트한 결과 이것이 작동하지 않는 것으로 나타났습니다. 이제 포트를 ttyACM0교체용 으로 인식하는 새로운 USB 시스템이 있습니다 .

이것이 작동하지 않는 이유를 확인하면 외부 하드웨어는 메시지를 올바르게 수신하지만 PC측 애플리케이션은 에서 응답을 받지 못합니다 read(). 평소와 같이 read()표준 모드를 ​​사용하여 select()읽기 시간을 초과했습니다. 아마도 중요한 점은 첫 번째 연결에서 포트가 항상 "AT"를 세 번 보낸다는 것입니다.

이는 가젯 직렬의 새로운 버전이 Hayes 스타일 핸드셰이크를 시도하고 있으므로 외부 하드웨어가 멍청한 포트처럼 작동할 것으로 ttyACM예상하기 때문에 더 이상 진행할 수 없음을 시사합니다 . RS-232다음의 팁을 따르세요.@JdeBP, 나는 달렸다 systemctl status ModemManager.service, 나는 보았다

Jun 02 21:10:58 XUbuntu-18 ModemManager[402]: <warn>  Couldn't create modem for device '/sys/devices/pci0000:00/0000:00:0b.0/usb1/1-1': Failed to find primary AT port
Jun 02 21:52:36 XUbuntu-18 ModemManager[402]: <info>  [device /sys/devices/pci0000:00/0000:00:0b.0/usb1/1-1] creating modem with plugin 'Generic' and '1' ports
Jun 02 21:52:36 XUbuntu-18 ModemManager[402]: <warn>  Could not grab port (tty/ttyACM0): 'Cannot add port 'tty/ttyACM0', unhandled serial type'
Jun 02 21:52:36 XUbuntu-18 ModemManager[402]: <warn>  Couldn't create modem for device '/sys/devices/pci0000:00/0000:00:0b.0/usb1/1-1': Failed to find primary AT port
Jun 02 22:36:50 XUbuntu-18 ModemManager[402]: <info>  [device /sys/devices/pci0000:00/0000:00:0b.0/usb1/1-1] creating modem with plugin 'Generic' and '1' ports
Jun 02 22:36:50 XUbuntu-18 ModemManager[402]: <warn>  Could not grab port (tty/ttyACM0): 'Cannot add port 'tty/ttyACM0', unhandled serial type'
Jun 02 22:36:50 XUbuntu-18 ModemManager[402]: <warn>  Couldn't create modem for device '/sys/devices/pci0000:00/0000:00:0b.0/usb1/1-1': Failed to find primary AT port
Jun 02 22:41:38 XUbuntu-18 ModemManager[402]: <info>  [device /sys/devices/pci0000:00/0000:00:0b.0/usb1/1-1] creating modem with plugin 'Generic' and '1' ports
Jun 02 22:41:38 XUbuntu-18 ModemManager[402]: <warn>  Could not grab port (tty/ttyACM0): 'Cannot add port 'tty/ttyACM0', unhandled serial type'
Jun 02 22:41:38 XUbuntu-18 ModemManager[402]: <warn>  Couldn't create modem for device '/sys/devices/pci0000:00/0000:00:0b.0/usb1/1-1': Failed to find primary AT port

이는 AT상대방에서 본 세 가지 메시지와 일치하는 것 같습니다.

실행 mmcli --list-modems중인데 No modems were found.

ttyGS가젯 라인업에서 새로운 스타일로 이동하면서 이전에 이와 같은 것을 본 사람이 있습니까 ttyACM? 나는 이것을 검색했고, 가젯 직렬화에 대한 모든 문서를 읽고 ACM, AT직렬 연결 명령에 관한 모든 것을 확인했지만 ACM, 이 질문에 답할 것으로 보이는 어떤 것도 찾을 수 없습니다.

또한 설정을 확인해 보았지만 termios(원래 작업 버전에서 변경된 사항 없음), 이상한 점은 없는 것 같습니다.

답변1

ATModemManager가 s의 소스 일 수 있는 포트를 검색하려고 시도하는 것 같습니다 . 이로 인해 상대방의 장치가 혼란스러울 수 있습니다.

ModemManager가 장치를 방해하지 않도록 지시하려면 udev 규칙을 설정해야 할 수도 있습니다. 예를 들어 다음과 같이 넣을 수 있습니다 /etc/udev/rules.d/01-disable-mm-ttyACM.rules.

KERNEL=="ttyACM*", ENV{ID_MM_DEVICE_IGNORE}="1"

새 규칙을 적용하려면 를 실행 sudo udevadm control --reload-rules한 다음 장치 연결을 끊었다가 다시 연결하고 이제 ModemManager가 장치를 무시하는지 확인해야 합니다.

관련 정보