Linux'ta bir modeme AT komutları nasıl gönderilir?


14

Linux'ta (Ubuntu) adresindeki bir modeme AT komutları göndermeye çalışıyorum /dev/ttyACM0. Bunu yapmaya çalıştım:

sudo socat - /dev/ttyACM0

ama bir şey yazarken sadece bu komutu tekrarlayan bir satır alıyorum (sanırım OK).

Ben yaparken

sudo minicom modem1

işe yarıyor gibi görünüyor. Ben bir yazıyorum ATve bir OK. Biraz saçmalýyým, anladým ERROR.

modem1Minicom için bir şekilde modemi kullanmak için yapılandırılmış gibi görünüyor /dev/ttyACM0.

AT komutlarını göndermek için socat'ı nasıl kullanabilirim? Bir şey yapılandırmam gerekiyor mu? Belki modem1minicom için konfigürasyonları kullanabilirim (bu konfigürasyonu nasıl bulacağımı / göreceğimi bilmiyorum)?

Ek bilgi

Verilen socatkomut doğru mu? Bazı seçeneklerle oynamalı mıyım? -vSeçeneği ile aşağıdakileri görüyorum:

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 

Cihazın kendisi aşağıdaki dmesg çıkışı ile bulunur:

[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

Ve tty aşağıdaki gibi yapılandırılır:

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

belki bu TERMIOS seçenekleriyle oynamaya çalışabilirsiniz ama hiç kontrol etmedim.
Alex

"Socat modem" arayan bu web sitesinde arama 5 hit vardır, bunlardan herhangi birinin yararlı olup olmadığına bakın. Bunları denemek için bir kurulumum yok, bu yüzden gerçekten bunun ötesine yardım edemiyorum. ( unix.stackexchange.com/search?q=socat+modem )
slm

İpuçları işe yaramaz. Gerçek bir temel sorunum var gibi görünüyor, çünkü socat çalışmalı. Daha önce çalıştı. Ama sorunun ne olduğunu bilmiyorum. Yukarıdaki komut doğru mu benim ilk sorum.
Alex

Yanıtlar:


10

Deneyin socat - /dev/ttyUSB2,crnl

Bu, socat'a satır başı ve satır başı göndermesini söyler.

Açıklama - bu, elektrikli daktiloların karanlık günlerine geri döner, burada taşıyıcıyı sayfadaki 0 ​​konumuna geri döndürmesini söylemeniz gerekir - ergo, bir satır başı - ve kağıdı bir satır yukarı taşımasını söyler .


5

Linux'ta bir modeme AT komutları göndermenin en iyi yolu , yalnızca komut satırından modeme AT komutları göndermek amacıyla yazılan program atinout'unu kullanmaktır .

Bir modemin çalışıp çalışmadığını test etmek için kullanabilirsiniz , telefon rehberinin bir yedeğini alın:

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

veya AT komutlarını kullandığınız diğer şeyler.


4

Ne istediğinizi gösteren bu Chromium proje yayınına rastladım. Başlık: Bir hücresel modemde hata ayıklama .

o sayfadan alıntı

AT komut seti ile modemle doğrudan iletişim kurma

Çoğu modem, modemi ve bilgi sorgusunu denetleyen AT komutlarını destekler. Geliştirici modu etkinleştirilmiş bir Chromium OS cihazında, modemle iletişim kurmak için socat komutunu kullanabilirsiniz. Test görüntüsünün yüklü olduğu bir Chromium OS cihazına ihtiyacınız vardır (veya dev sunucusunu biliyorsanız, gmerge socat kullanabilirsiniz). Örneğin:

  • Çapraz kabuğa girmek için CTRL + ALT + T tuşlarına basın.
  • Bash kabuğuna girmek için shell yazın.
  • Hangi USB cihazının kullanılacağını anlayın: ls / dev / ttyACM * / dev / ttyUSB *
  • Çalışıyorsa modem yöneticisini durdur: sudo stop modemmanager
  • Modemle iletişim kurmak için sudo socat - / dev / ttyACM1, crnl veya sudo socat - / dev / ttyUSB0 yazın.
  • Modemin şu komutla etkinleştirildiğinden emin olun: "AT + CFUN = 1"

Örneğin:

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

Modeme bağlı olarak, farklı AT komutlarını deneyebilirsiniz, örneğin "AT + CGMI", "AT + CGSN", vb.


1
Hiçbir AT komutu çalışmıyor! Bu benim sorunum! Bir şey yapılandırmam gerekiyor mu? Commmand hattı iyi mi? Büyük bir hata mı yaparım?
Alex

@Alex - dediğim gibi bu donanımlardan hiçbirine sahip değilim, bu yüzden böyle bilgiler vermenin ötesinde size yardımcı olmak zor. Hata ayıklamak zorunda kalacaksınız. Söz konusu cihazların gücünü değiştirmeyi dener ve asılı durumda olup olmadıklarını görürüm, dmesgbilgi için günlüğe bakın. Üzgünüm sana bundan daha fazla yardım edemem.
slm

1
"AT + DONTREMEMBERZMODEM"> / dev / modemtty'yi yankılamaz mısınız?
14'te mikeserv
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.