Bagaimana cara mengirim perintah AT ke modem di Linux?


13

Di Linux (Ubuntu) saya mencoba mengirim perintah AT ke modem di /dev/ttyACM0. Saya mencoba melakukannya sebagai:

sudo socat - /dev/ttyACM0

tetapi ketika mengetik apa pun saya hanya mendapatkan baris mengulangi perintah ini (saya mengharapkan sebuah OK).

Kapan saya melakukannya

sudo minicom modem1

sepertinya berhasil. Saya mengetik ATdan mendapatkan OK. Saya mengetik beberapa omong kosong, saya mendapat ERROR.

Tampaknya modem1untuk minicom entah bagaimana dikonfigurasi untuk menggunakan modem di /dev/ttyACM0.

Bagaimana saya bisa menggunakan socat untuk mengirim perintah AT? Apakah saya perlu mengkonfigurasi sesuatu? Mungkin saya bisa menggunakan konfigurasi untuk modem1minicom (saya tidak tahu bagaimana menemukan / melihat konfigurasi ini)?

Informasi tambahan

Apakah socatperintah yang diberikan benar? Haruskah saya bermain dengan beberapa opsi? Dengan -vopsi ini saya melihat yang berikut:

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 

Perangkat itu sendiri ditemukan dengan output dmesg berikut:

[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

Dan tty dikonfigurasi sebagai berikut:

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

mungkin Anda bisa membuatnya bekerja bermain dengan opsi - opsi TERMIOS ini tapi saya tidak pernah memeriksa.
Alex

Cari melalui situs web ini untuk mencari "modem socat" ada 5 hits, lihat apakah ada yang membantu. Saya tidak memiliki pengaturan untuk mencoba ini jadi saya tidak bisa membantu lebih dari itu. ( unix.stackexchange.com/search?q=socat+modem )
slm

Petunjuk tidak berguna. Saya tampaknya memiliki masalah mendasar yang nyata, karena socat harus bekerja. Itu berhasil sebelumnya. Tapi saya tidak tahu apa masalahnya. Apakah perintah di atas benar adalah pertanyaan pertama saya.
Alex

Jawaban:


9

Mencoba socat - /dev/ttyUSB2,crnl

Ini memberitahu socat untuk mengirim carriage return serta feed line.

Klarifikasi - ini kembali ke hari-hari gelap mesin tik listrik, di mana Anda harus mengatakannya untuk menggulung carriage kembali ke posisi 0 pada halaman - ergo, carriage return - serta menyuruhnya untuk memindahkan kertas ke atas satu baris .


5

Cara terbaik untuk mengirim perintah AT ke modem di Linux adalah dengan menggunakan program atinout yang ditulis dengan tujuan mengirim perintah AT ke modem dari baris perintah.

Anda dapat menggunakannya untuk menguji apakah modem aktif dan berjalan , buat cadangan buku telepon:

$ 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
$

atau hal lain yang Anda gunakan untuk perintah AT.


4

Saya menemukan posting proyek Chromium ini yang menunjukkan apa yang Anda inginkan. Judulnya: Men-debug modem seluler .

kutipan dari halaman itu

Berkomunikasi langsung dengan modem dengan set perintah AT

Sebagian besar modem mendukung perintah AT yang mengontrol modem dan menanyakan informasi. Pada perangkat OS Chromium dengan mode pengembang yang diaktifkan, Anda dapat menggunakan perintah socat untuk berkomunikasi dengan modem. Anda memerlukan perangkat Chromium OS dengan gambar uji terinstal (atau Anda dapat menggunakan gmerge socat jika Anda terbiasa dengan server dev). Sebagai contoh:

  • Ketik CTRL + ALT + T untuk memasukkan cangkang silang.
  • Ketik shell untuk masuk ke bash shell.
  • Gambar Anda yang menggunakan perangkat USB dengan: ls / dev / ttyACM * / dev / ttyUSB *
  • Hentikan manajer modem jika sedang berjalan: sudo stop modemmanager
  • Ketik sudo socat - / dev / ttyACM1, crnl atau sudo socat - / dev / ttyUSB0 untuk berkomunikasi dengan modem.
  • Pastikan modem diaktifkan dengan perintah: "AT + CFUN = 1"

Sebagai contoh:

    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 ~ $ 

Bergantung pada modem, Anda dapat mencoba berbagai perintah AT, mis. "AT + CGMI", "AT + CGSN", dll.


1
Tidak ada perintah AT sama sekali bekerja! Ini masalahku! Apakah saya perlu mengkonfigurasi sesuatu? Apakah garis perintah oke? Apakah saya melakukan kesalahan besar?
Alex

@ Alex - seperti yang saya katakan saya tidak memiliki perangkat keras ini sehingga sulit untuk membantu Anda selain memberikan informasi seperti ini. Anda harus men-debug-nya. Saya akan mencoba menghidupkan perangkat yang dimaksud dan melihat apakah perangkatnya dalam keadaan hang, lihat di dmesglog untuk informasi. Maaf saya tidak bisa membantu Anda lebih dari ini.
slm

1
Tidak bisakah Anda mengulang "AT + DONTREMEMBERZMODEM"> / dev / modemtty?
mikeserv
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.