저는 3G 모뎀(Cinterion PH8-P)과 PPP를 사용하여 인터넷에 연결하는 Buildroot 기반 임베디드 시스템을 가지고 있습니다. 3G 모뎀은 4개의 ttyUSB 포트를 제공하는 USB 장치입니다. 그 중 하나는 PPP용이고 다른 하나는 GPS용입니다.
3G 모뎀이 작동을 멈추고 다시 시작해야 하는 경우가 있습니다. 이를 위해 먼저 PPP 및 GPSd 데몬을 중지한 다음 모뎀을 다시 시작한 다음 데몬을 다시 시작했습니다. 안타깝게도 미리 PPP를 실행하면 직렬 포트에 어떤 식으로든 영향을 주어 다른 프로그램에서 더 이상 사용할 수 없게 되는 것 같습니다.
예를 들어, 아직 PPP를 실행하지 않고 새로 부팅한 시스템에서 다음 명령을 실행한다면:
cat /dev/ttyUSB3&
echo "AT" > /dev/ttyUSB3
예상되는 AT 응답을 받았습니다 OK
. 그런 다음 잠시 동안 PPP를 실행하고(pon을 호출하여) PPP를 중지하고(poff를 호출하여) 모뎀을 다시 시작한 다음 동일한 AT 명령을 다시 보내려고 하면 터미널은 내가 모뎀에 보낸 내용을 에코하는 것처럼 보입니다. 응답이 없습니다 OK
. 결과적으로 GPS tty 포트에서 NMEA 메시지 수신이 중단되므로 GPS가 작동하지 않습니다. PPP가 모든 직렬 포트를 구성하여 출력을 다른 곳으로 리디렉션하는 것과 거의 같습니다. 그래도 모뎀이 다시 시작된 후 PPP는 완벽하게 작동했습니다. 로그에 따르면 채팅 스크립트는 AT 명령을 행복하게 보내고 예상한 응답을 받았습니다.
이 문제의 원인은 무엇입니까?
답변1
PPP인 것으로 밝혀졌습니다.예자체 직렬 포트에 영향을 미치며, 이것이 GPS를 구성하는 데 사용되는 직렬 포트이기 때문에 이것이 문제의 원인입니다.
stty -F /dev/ttyUSB3
PPP 실행 전과 후의 결과를 비교해 보면 PPP가 직렬 포트를 원시 모드로 구성한다는 것이 분명합니다. 즉, PPP를 사용하여 GPS 포트를 구성할 수 없다는 의미입니다. 흥미롭게도 이러한 설정은 모뎀 재설정으로 인해 ttyUSBx 장치 노드가 삭제되고 다시 생성되는 경우에도 지속됩니다.
간단히 기본 설정으로 복원을 실행하여 stty sane -F /dev/ttyUSB3
아무런 문제 없이 GPS 포트를 구성할 수 있었습니다 .