[unix] Linux에서 AT 명령을 모뎀에 보내는 방법은 무엇입니까?

Linux (Ubuntu)에서 AT 명령을 모뎀으로 보내려고합니다 /dev/ttyACM0. 나는 그것을 다음과 같이하려고했다.

sudo socat - /dev/ttyACM0

그러나 아무것도 입력 할 때이 명령을 반복하는 줄을 얻습니다 ( OK).

내가 할 때

sudo minicom modem1

작동하는 것 같습니다. 나는를 입력하고을 AT얻는다 OK. 나는 쓰레기를 타이핑한다 ERROR.

modem1minicom의 경우에 모뎀을 사용하도록 구성되어있는 것 같습니다 /dev/ttyACM0.

socat을 사용하여 AT 명령을 보내려면 어떻게해야합니까? 무언가를 구성해야합니까? 아마도 modem1미니 컴 구성을 사용할 수 있습니까 (이 구성을 찾거나 보는 방법을 모르겠습니다)?

추가 정보

주어진 socat명령이 맞습니까? 몇 가지 옵션을 사용해야합니까? -v옵션을 사용하면 다음을 볼 수 있습니다.

AT
> 2013/10/23 17:10:28.917413  length=3 from=0 to=2
AT
< 2013/10/23 17:10:28.921598  length=3 from=0 to=2
AT
AT
ksjdhfjdgfhjkdfh
> 2013/10/23 17:10:30.244923  length=17 from=3 to=19
ksjdhfjdgfhjkdfh
< 2013/10/23 17:10:30.251383  length=29 from=3 to=31
ksjdhfjdgfhjk\b \bd\b \bf\b \bh\b \b
ksjdhfjdgfhj

장치 자체는 다음 dmesg 출력으로 찾을 수 있습니다.

[5983726.808063] usb 2-1: USB disconnect, device number 3
[5983730.800021] usb 2-1: new full-speed USB device number 4 using uhci_hcd
[5983730.920014] usb 2-1: device descriptor read/64, error -71
[5983733.629524] usb 2-1: New USB device found, idVendor=0572, idProduct=1329
[5983733.629533] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[5983733.629539] usb 2-1: Product: USB Modem
[5983733.629544] usb 2-1: Manufacturer: Conexant
[5983733.629549] usb 2-1: SerialNumber: 24680246
[5983733.632673] cdc_acm 2-1:1.0: ttyACM0: USB ACM device

tty는 다음과 같이 구성됩니다.

speed 57600 baud; line = 0;
eof = ^A; min = 1; time = 0;
-brkint -icrnl -imaxbel
-opost -onlcr
-isig -icanon -echo -echoe



답변

시험 socat - /dev/ttyUSB2,crnl

이것은 socat에게 캐리지 리턴과 줄 바꿈을 보내도록 지시합니다.

설명-이것은 전기 타자기의 어두운 시절로 거슬러 올라갑니다. 여기에서 캐리지를 페이지의 0 위치로 돌려 놓아야 한다고 말해야합니다. .


답변

Linux에서 AT 명령을 모뎀으로 보내는 가장 좋은 방법은 AT 명령을 명령 줄에서 모뎀으로 보내기위한 목적으로 작성된 atinout 프로그램을 사용하는 것입니다.

모뎀 을 사용하여 작동하는지 테스트 하고 전화 번호부를 백업 할 수 있습니다 .

$ atinout - /dev/ttyACM0 ten_first_phonebook_entries.txt <<EOF
at+cscs="UTF-8"
at+cpbs="SM"; +cpbr=1,10
at+cpbs="ME"; +cpbr=1,10
EOF
$

또는 AT 명령을 사용하는 다른 것들.


답변

나는 당신이 원하는 것을 보여주는이 Chromium 프로젝트 게시물을 보았습니다. 제목 은 셀룰러 모뎀 디버깅 입니다.

해당 페이지에서 발췌

AT 명령 세트를 사용하여 모뎀과 직접 통신

대부분의 모뎀은 모뎀을 제어하고 정보를 쿼리하는 AT 명령을 지원합니다. 개발자 모드가 활성화 된 Chromium OS 기기에서 socat 명령을 사용하여 모뎀과 통신 할 수 있습니다. 테스트 이미지가 설치된 Chromium OS 기기가 필요합니다 (또는 dev 서버에 익숙한 경우 gmerge socat을 사용할 수 있음). 예를 들면 다음과 같습니다.

  • CTRL + ALT + T를 입력하여 crosh 쉘을 입력하십시오.
  • bash 쉘을 입력하려면 shell을 입력하십시오.
  • ls / dev / ttyACM * / dev / ttyUSB *와 함께 사용할 USB 장치를 파악하십시오.
  • 모뎀 관리자가 실행 중이면 중지하십시오. sudo stop modemmanager
  • 모뎀과 통신하려면 sudo socat-/ dev / ttyACM1, crnl 또는 sudo socat-/ dev / ttyUSB0을 입력하십시오.
  • “AT + CFUN = 1″명령으로 모뎀이 활성화되어 있는지 확인하십시오.

예를 들면 다음과 같습니다.

    crosh> shell
    chronos@localhost ~ $ sudo stop modemmanager
    chronos@localhost ~ $ ls /dev/ttyACM* /dev/ttyUSB*
    /dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2
    chronos@localhost ~ $ socat - /dev/ttyUSB1
    ATZ
    OK
    AT+CFUN=1
    OK
    ATI
    Manufacturer: Qualcomm Incorporated
    Model: ......
    Revision:....
    ESN: 0x80d...
    +GCAP: +CIS707A, ....

    chronos@localhost ~ $

모뎀에 따라 “AT + CGMI”, “AT + CGSN”등과 같은 다른 AT 명령을 시도 할 수 있습니다.


답변