Pull to refresh

3G модем Novacom и Linux

Reading time 3 min
Views 7.8K

Статья о подключении модема Novacom GNS-3.5G в Linux. Появилась необходимость использовать 3G интернет на ноутбуке с Slackware Linux. В наличии был модем Novacom, и Windows XP на другом компьютере. Модем идет с драйверами под Windows и Mac OS, поддерживает стандарты HSDPA / UMTS и EDGE/GPRS. Поддержки Linux не заявлено. На некоторых форумах предлагали использовать usbmodeswitch, но полностью проблему это не решало – порты появлялись, а модем работать отказывался. В статье постараюсь показать не только решение этой конкретной проблемы, но и метод, который позволяет решать проблемы использования AT команд (отправка/получение SMS, USSD и т.п.)

Вступление

Модем Novacom GNS-3.5G при подключении создает блочное устройство, на котором находятся драйвера, т.е. при первом включении распознается как флэшка. В системе он появился как /dev/sg1. Для переключения в режим модема можно пользоваться либо eject, либо usbmodeswitch. Я выбрал eject

eject /dev/sg1

В результате появляется три порта ttyUSB0, ttyUSB1, ttyUSB2. На этом подсказки в интернете закачиваются фразой: «Ну а теперь можно пользоваться любым диалером для дозвона и соединения». Вот именно с этого места и начинается самое интересное. Т.е. порты существуют, но любая попытка позвонить вызывает сброс портов — дозвона нет, но порты реагируют на некоторые AT команды. Повторный поиск в интернете ничего не дает. Наиболее вероятной причиной является ситуация, когда драйвер что-то посылает в порты и только потом устройство начинает функционировать как модем. Осталось только узнать что это за команда или набор команд.

Исследование

Для того чтобы понять как драйвер общается с модемом воспользуемся сниффером com-порта. Подойдет практически любой сниффер, который позволяет следить за портом уже занятым другим устройством.
Вставляем модем, запускаем сниффер, запускаем программное обеспечение, которое переключает устройство в режим модема и соединяет с интернетом. В результате получаем листинг общения программного обеспечения и модема. После чего берем команды AT и ищем, что она делает.
Далее я буду приводить фрагменты этого листинга с комментариями. Листинг сокращен, наиболее важные элементы выделены цветом



Из листинга видно, что приложение работает с тремя портами, в каждый из которых подается команда AT+CINQP?. Эта команда возвращает информацию о порту, к которому обращаются. Зеленым выделен ответ каждого из портов. Из листинга видно, что далее идет общение только лишь с четвертым портом. Следующая важная команда, выделенная красным: AT+CFUN?. Данная команда устанавливает режим функционирования. Для разных производителей может принимать разные значения. В нашем случае, сразу после включения модема, до начала работы – значение +CFUN=5.
Подается команды для проверки номера программного обеспечения: AT+CINQSWRV?
После чего подается команда смен значения AT+CFUN=1. Скорее всего, это именно та команда, которая нам нужна.



Листинг подается с сокращениями. Команда AT+COPS=3,2 позволяет выбрать оператора для соединения в сети 3G. После чего программа проверяет, а выбран ли оператор: AT+COPS?
И только после этого идет строка инициализации: AT+CGDCONT=1,'IP','UTEL.3G.UA'
Таким образом, новая последовательность для инициализации, будет выглядеть таким образом:
AT+CFUN=1
AT+COPS=3,2
AT+CGDCONT=1,'IP','UTEL.3G.UA'

И при выключении модема, нужно не забыть отправить команду:AT+CFUN=5, т.е. вернуть его опять в неактивный режим.

Итоги

Для того чтобы Novacom GNS-3.5G заработал в Linux необходимо:

1) Переключить устройство в режим модема. Например, eject /dev/sg1.
2) Добавить строки инициализации(в данном случае оператор UTEL):

AT+CFUN=1
AT+COPS=3,2
AT+CGDCONT=1,'IP','UTEL.3G.UA'
О том, как настроить программы дозвона есть масса материалов в сети, потому выкладываю только лишь свой простенький скрипт.

TIMEOUT 3
ABORT BUSY
ABORT 'NO CARRIER'
ABORT VOICE
ABORT 'NO DIALTONE'
ABORT 'NO DIAL TONE'
ABORT 'NO ANSWER'
ABORT DELAYED
"" ATZ
OK AT+CFUN=1
OK AT+COPS=3,2
OK AT+CGDCONT=1,'IP','UTEL.3G.UA'
OK ATDT*99#
CONNECT ""


Аналогичный подход можно использовать, чтобы посмотреть как ПО модема отправляет и проверяет СМС, USSD команды, получает данные о силе сигнала в сети и т.д.
Tags:
Hubs:
+22
Comments 14
Comments Comments 14

Articles