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

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

Linux(Ubuntu)에서는 에 위치한 모뎀에 AT 명령을 보내려고 합니다 /dev/ttyACM0. 나는 이것을 시도한다:

sudo socat - /dev/ttyACM0

하지만 무엇이든 입력할 때 이 명령을 반복하는 줄이 나타납니다(예상했던 명령입니다 OK).

내가 할 때

sudo minicom modem1

작동하는 것 같습니다. 나는 an을 입력 AT하고 를 얻습니다 OK. 나는 약간의 쓰레기를 입력하고 를 얻습니다 ERROR.

modem1미니콤은 어떻게든 모뎀을 사용하도록 구성되어 있는 것 같습니다 /dev/ttyACM0.

socat을 사용하여 AT 명령을 보내는 방법은 무엇입니까? 뭔가를 구성해야 합니까? 어쩌면 minicom의 구성을 사용할 수 있을까요 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

답변1

노력하다socat - /dev/ttyUSB2,crnl

이는 socat에 캐리지 리턴 및 줄 바꿈을 보내도록 지시합니다.

설명 - 이것은 전기 타자기의 암흑기로 거슬러 올라갑니다. 그곳에서는 캐리지를 페이지의 0 위치로 되돌리라고 지시해야 했습니다.입력하다- 그리고 종이를 한 줄 위로 이동하라고 지시합니다.

답변2

Linux에서 모뎀에 AT 명령을 보내는 가장 좋은 방법은 이 프로그램을 사용하는 것입니다.아티누트이는 명령줄에서 모뎀으로 AT 명령을 보내는 목적으로만 작성되었습니다.

당신은 그것을 사용할 수 있습니다모뎀이 작동 중인지 테스트합니다., 백업 전화번호부:

$ 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 명령을 사용하여 수행하는 다른 작업.

답변3

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

이 페이지에서 발췌

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

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

  • Crosh 셸을 시작하려면 CTRL+ALT+T를 입력하세요.
  • bash 쉘에 들어가려면 쉘을 입력하십시오.
  • 사용할 USB 장치 결정: ls /dev/ttyACM* /dev/ttyUSB*
  • 모뎀 관리자가 실행 중이면 중지하십시오. 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 명령을 시도할 수 있습니다.

답변4

#TIL 이 목적으로 사용할 수 있습니다 screen. 노력하다

screen /dev/ttyACM0 57600,cs8,-parenb,-cstopb,-hupcl

~에서https://apple.stackexchange.com/a/318280/84497

관련 정보