Я получаю сообщение об ошибке при отправке AT-команд с помощью USB-модема в Ubuntu

Я подключил USB-модем и GSM-карту, надеясь связаться с ней. Я установил minicom и atinout и использовал эту команду в minicom:

AT+CUSD=1,"*137#",15 
ERROR

и на том же самом я сделал:

$ atinout - /dev/ttyUSB3 - < <(echo "AT+CUSD=1,\"*137#\",15")
ERROR

заметки:

  • с помощью GUI менеджера модема команды USSD и AT работают хорошо
  • и на atinout он работал несколько дней назад, а затем отказался от работающей аппаратной версии:

    Производитель: TCT Mobile International LimitedModel: HSPA Data CardRevision: IX1B5400XX

1 ответ

Если устройство работает в некоторых эмуляторах терминала, но не в других, то, вероятно, терминал настроен неправильно ("неправильно" означает "отличается от того, как настроено устройство на другой стороне соединения"; правильных или неправильных нет).

Обычно проблема заключается в скорости передачи в бодах, локальном эхо или LF или CRLF. Вы можете настроить, как linux обрабатывает tty-устройство с помощью stty (или же setserial).

Пример:

Здесь я использую atinout поговорить с портом Telit DE910 "AUX" через UART.

$ echo 'AT+CREG?' | atinout - /dev/ttyO1 -
AT+CREG?
+CREG: 1,1

OK

Все идет нормально. Но этот модем поддерживает несколько физических интерфейсов для каждого логического интерфейса, и с моим устройством логический порт "AUX" также доступен через /dev/ttyUSB2, В общем люблю пользоваться /dev/ttyUSBn потому что, по крайней мере, некоторые из смешного числа опций, которые могут быть установлены stty исправлены. Но в этом случае значения по умолчанию не достаточно хороши для atinout даже при том, что мы выдаем ту же команду на тот же логический порт:

$ echo 'AT+CREG?' | atinout - /dev/ttyUSB2 -
AT+CREG?


+CREG: 1,1



OK

AT+CREG


ERROR

^C

В этом случае дополнительные CRLF - это раздача и настройка терминала с stty raw исправляет это. (В моем случае -icrnl была единственной частью raw на самом деле нужно.)

$ stty -F /dev/ttyUSB2 raw
$ echo 'AT+CREG?' | atinout - /dev/ttyUSB2 -
AT+CREG?
+CREG: 1,1

OK

Проблема с использованием stty Вы изменили устройство для всех остальных. Вы можете использовать stty для сохранения начальной конфигурации, чтобы вы могли восстановить ее, когда закончите.

$ OLDSETTINGS=$(stty -g -F /dev/ttyUSB2)
$ stty -F /dev/ttyUSB2 -igncr -icrnl -ixon -ixoff 
$ stty -F /dev/ttyUSB2 "$OLDSETTINGS"

Наконец я рекомендую использовать timeout с atinout чтобы избежать зависания, когда модем не отвечает так atinout ожидает.

$ echo 'AT+CREG?' | timeout -t5 atinout - /dev/ttyUSB2 -
Другие вопросы по тегам