장치(장치 파일 /dev/ttyACM0
)로 감지되는 USB 모뎀이 있습니다. 모뎀이 응답할 때 AT 명령을 장치 파일로 리디렉션하는 것이 작동하는 것 같습니다.
상단 부분이 제어 채널을 나타낸다는 가정을 따릅니다. 이를 사용하면 전화 접속, 모뎀 설정, 연결 취소 등을 할 수 있습니다. 일반적으로 실제로 모뎀을 처리하지 않고 모뎀 제어와 관련된 작업을 수행할 수 있습니다 data
. 이는 data
제어되지 않는 모든 작업(예: HTTP 패킷)을 의미합니다.
데이터 흐름은 어디에서 발생합니까? 동일한 파일을 통해 전송되는 경우 어떻게 다중화됩니까?
또한 이상적으로는 모뎀이 IP가 있는 네트워크 인터페이스를 제공하는 낮은 수준의 "서비스"가 되어 모뎀을 추상화하고 TCP/IP 소켓을 사용할 수 있기를 바랍니다. 소켓은 커널에서 구현됩니다.
/dev/ttyACM0
모뎀이 사용자 공간에 노출되면 이것이 그림에 어떻게 들어맞습니까??
답변1
AT 유형 모뎀 "인터페이스"를 사용하는 장치는 다양한 상태에서 작동할 수 있습니다.
- 명령 모드
- 다이얼 모드
- 악수 모드
- 데이터 스키마
모뎀은 명령 모드에서 시작하고 AT
접두사가 -인 명령에 응답합니다. 연결이 설정되면( ATD
예: 전화 접속 및 핸드셰이크 모드를 거친 후) 데이터 모드로 전환되고 전송된 모든 데이터는 연결된 장치로 전송됩니다. 명령 모드로 다시 전환하려면 발신자는 일정 시간 동안 데이터 흐름을 일시 중지하고 send를 +++
다시 일시 중지해야 합니다. 모뎀은 다시 명령 모드로 전환하고 AT
명령에 다시 응답하기 시작합니다(데이터 흐름이 중단됨). .
일부 모뎀은 일시 중지가 필요하지 않습니다. 즉, 데이터에 명령 시퀀스가 포함되어 있으면 명령 시퀀스로 해석됩니다 +++
(따라서 +++ATH0
IRC의 농담).
모뎀 데이터 연결 외에 다른 프로토콜을 제공하려면 다른 도구를 사용해야 합니다. 사용할 도구는 상대방에서 예상되는 프로토콜(SLIP, PPP, PPPoE...)에 따라 다릅니다.ppp
PPP의 경우(배포판에 통합하는 것이 바람직하므로 설정이 대부분 투명해집니다). 이는 일종의 IP 캡슐화를 제공하며 IP를 정상적으로 사용할 수 있습니다. 문제의 도구는 모뎀과 통신하는 데 필요한 모든 것을 사용하고( /dev/ttyACM0
귀하의 경우) 시스템의 나머지 부분이 네트워킹 목적으로 사용할 수 있는 다른 인터페이스(일반적으로 네트워크 인터페이스,예를 들어 ppp0
).