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


13

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

어쩌면 당신은이 TERMIOS 옵션으로 작동하도록 할 수는 있지만 결코 확인하지 않았습니다.
Alex

이 웹 사이트를 통해 "소 카트 모뎀"을 검색하면 5 개의 히트가 있습니다.이 중 유용한 것이 있는지 확인하십시오. 나는 이것들을 시험해 볼 수있는 설정이 없으므로 그 이상으로 정말로 도울 수 없습니다. ( unix.stackexchange.com/search?q=socat+modem )
slm

힌트는 유용하지 않습니다. socat이 작동해야하기 때문에 실제 기본 문제가있는 것 같습니다. 그것은 전에 일했다. 그러나 나는 문제가 무엇인지 모른다. 위의 명령이 내 첫 번째 질문입니까?
Alex

답변:


9

시험 socat - /dev/ttyUSB2,crnl

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

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


5

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 명령을 사용하는 다른 것들.


4

나는 당신이 원하는 것을 보여주는이 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 명령을 시도 할 수 있습니다.


1
AT 명령이 전혀 작동하지 않습니다! 이것은 내 문제입니다! 무언가를 구성해야합니까? 명령 줄은 괜찮습니까? 큰 실수를합니까?
Alex

@Alex-내가 말했듯 이이 하드웨어가 없으므로 이와 같은 정보를 제공하는 것 이상의 도움을 받기가 어렵습니다. 디버깅해야합니다. 문제가있는 장치의 전원을 껐다가 켜고 정지 된 상태인지 확인하려면 dmesg로그에서 정보를 확인하십시오. 이 이상으로 도와 드릴 수 없습니다.
slm

1
"AT + DONTREMEMBERZMODEM"> / dev / modemtty를 에코 할 수 없습니까?
mikeserv
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.