Як надсилати команди AT до модему в Linux?


14

У Linux (Ubuntu) я намагаюся надсилати команди AT на модем /dev/ttyACM0. Я намагався зробити це так:

sudo socat - /dev/ttyACM0

але коли я щось набираю, я просто отримую рядок, що повторює цю команду (я очікую OK).

Коли я це роблю

sudo minicom modem1

здається, працює. Я набираю ATта отримую OK. Я набираю лайно, я отримую ERROR.

Здається, що modem1для minicom якось налаштовано використовувати модем at /dev/ttyACM0.

Як я можу використовувати socat для надсилання команд AT? Чи потрібно щось налаштувати? Можливо, я можу використовувати конфігурації для modem1minicom (я не знаю, як знайти / переглянути цю конфігурацію)?

Додаткова інформація

Чи 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 , але я ніколи не перевіряв.
Олексій

Шукайте на цьому веб-сайті, шукаючи "модем socat", є 5 звернень, дізнайтеся, чи корисний який-небудь з них. У мене немає налаштування, щоб спробувати це, щоб я не міг реально допомогти. ( unix.stackexchange.com/search?q=socat+modem )
slm

Підказки не корисні. У мене, здається, є справжня основна проблема, адже сокат повинен працювати. Це працювало і раніше. Але я не знаю, в чому проблема. Чи правильно вказана вище команда - це моє перше запитання.
Алекс

Відповіді:


10

Спробуйте socat - /dev/ttyUSB2,crnl

Це повідомляє socat надсилати повернення вагона, а також канал лінії.

Уточнення - це повертається до темних часів електричних машинок, де вам доведеться сказати, щоб повернути вагон назад до позиції 0 на сторінці - ерго, повернення вагона - а також сказати йому перемістити папір на один рядок .


5

Найкращий спосіб відправки AT-команд модему в Linux - це використання програми atinout, яка написана з єдиною метою надсилання 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.


4

Я натрапив на цей проект проекту Chromium, який показує, чого ви хочете. Це під назвою: Налагодження стільникового модему .

уривок із цієї сторінки

Спілкування безпосередньо з модемом із набором команд AT

Більшість модемів підтримують команди AT, які керують модемом та запитують інформацію. На пристрої Chromium OS з увімкненим режимом розробника ви можете використовувати команду socat для зв'язку з модемом. Вам потрібен пристрій Chromium OS із встановленим тестовим зображенням (або ви можете використовувати gmerge socat, якщо ви знайомі з сервером розробників). Наприклад:

  • Введіть 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, наприклад, "AT + CGMI", "AT + CGSN" тощо.


1
Жодна команда AT взагалі не працює! Це моя проблема! Чи потрібно щось налаштувати? Чи нормальна командна лінія? Чи роблю я якусь велику помилку?
Олексій

@ Алекс - як я вже сказав, я не маю жодного з цього обладнання, тому важко допомогти вам, крім надання такої інформації. Вам доведеться налагодити це. Я б спробував живити на велосипеді відповідні пристрої і побачити, чи вони перебувають у завислому стані, загляньте в dmesgжурнал для отримання інформації. Вибачте, я не можу допомогти вам більше ніж це.
slm

1
Ви не можете просто відповісти "AT + DONTREMEMBERZMODEM"> / dev / modemtty?
mikeserv
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.