LINUX.ORG.RU

Определение каналов передачи AT команд


0

1

Всем привет.

Возникла задача передачи 3G модему AT команд в то время, когда он передает данные (через него установленно интернет подключение).

В /dev модемы создают от трех до четырех ttyUSB* устройств. Вероятно udev создает симлинк /dev/gsmmodem на один из ttyUSB*.

Вычитал, что обычно одно из устройств ttyUSB* служит для передачи данных и два других для передачи AT команд. Опытным путем выяснено, что передавать AT команды можно в устройство gsmmodem, но только если модем в это время не передает данные (не зупщен ppp). Еще выяснено, что можно передавать AT команды на одно из свободных ttyUSB даже если модем передает данные.

Вопрос состоит в том, как идентифицировать устройство для передачи AT команд.

Заодно возможно кто-то подскажет - для чего нужно третье устройство, и каким образом udev определяет, на какое устройство создавать симлинк gsmmodem?

еще одно устройство может оказаться, внезапно, звуком.
сделай lsusb увидишь разные идентификаторы устройств. по идентификаторам гугли.

aol ★★★★★
()
Ответ на: комментарий от aol

Я могу точно идентифицировать ttyUSB устройства, пригадлежащие модему. Это не проблема. Проблема в том - как разобрать для чего служит каждое из ttyUSB принадлежащих модему.

И lsusb тут не помогает.

first-leon
() автор топика
Ответ на: комментарий от first-leon

Только из документации к модему, если она существует.
Huawei, например, никакой документации свободно не выкладывает, определить, что у него для чего, можно только наблюдением за их ПО, причём назначение разных ttyUSB у них совершенно другое, чем, например, у ZTE.

ABW ★★★★★
()

я насколько знаю, AT команды передаются в то же устройство, через которое идет коннект. Если PPP соединение уже установлено, посылается какая-то escape-последовательность, которая переводит модем в режим приема команд

Harald ★★★★★
()
Ответ на: комментарий от Harald

Опытным путем проверил, что обязательно есть еще одно устройство для работы с АТ командами. К тому же такие вещи как проверка уровня сигнала производятся без разрыва соединения.

first-leon
() автор топика
Ответ на: комментарий от first-leon

По правилам, прописанным у udev для пар производитель/устройство, т.е. по той паре, например, 12d1:1001, которую видно в lsusb.
Т. е. это не оперативное определение, а кто-то уже позаботился прописать в базу.

ABW ★★★★★
()
Ответ на: комментарий от ABW

Это плохо. Судя по всему в том числе и этим занимается usb_modeswitch. Но в базе его не смог найти по каким параметрам он определяет что есть что.

first-leon
() автор топика
Ответ на: комментарий от first-leon

исторически устройство модема было одно, данные и AT-команды в него и посылались, соединение при этом не разрывается

Harald ★★★★★
()
Ответ на: комментарий от Harald

Не подскажите как это сделать? Сайчас нужную информацию выуживаю командой gammu -s 1 identify.

В принципе AT команду найду, которая выдает тоже самое.

Но вот как сделать запрос и вычитать данные ответа...

first-leon
() автор топика
Ответ на: комментарий от first-leon

в документации надо смотреть, какая escape-последовательность переключает в командный режим.

ЕМНИП, +++, три плюса подряд

Harald ★★★★★
()
Ответ на: комментарий от XVilka

Нашел адекватное решение тут https://wiki.archlinux.org/index.php/Huawei_E1550_3G_modem

На примере этого модема, в udev нужно вписать правила:

SUBSYSTEMS==«usb», ATTRS{modalias}==«usb:v12D1p1001*», KERNEL==«ttyUSB*», ATTRS{bInterfaceNumber}==«00», ATTRS{bInterfaceProtocol}==«ff», NAME=«ttyUSB_utps_modem»
 SUBSYSTEMS==«usb», ATTRS{modalias}==«usb:v12D1p1001*», KERNEL==«ttyUSB*», ATTRS{bInterfaceNumber}==«01», ATTRS{bInterfaceProtocol}==«ff», NAME=«ttyUSB_utps_diag»
 SUBSYSTEMS==«usb», ATTRS{modalias}==«usb:v12D1p1001*», KERNEL==«ttyUSB*», ATTRS{bInterfaceNumber}==«02», ATTRS{bInterfaceProtocol}==«ff», NAME=«ttyUSB_utps_pcui»
first-leon
() автор топика

третий tty - он для URC и посылки команд. Применительно к HUAWEI свисткам - туда валится статистика о работе модуля.

Dark_SavanT ★★★★★
()
Ответ на: комментарий от Harald

не просто три плюса, а <пауза>+++<пауза>. длина паузы, как правило, настраивается. (эхх, фидошная молодость...)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.