- Выполнение AT/USSD команд к /dev/ttyUSB* модему из консоли Linux
- Теория
- Выполнение AT/USSD команд
- minicom
- ussd.py
- Кодировка GSM 7bit в USSD запросах
- Кодирование в gsm7bit
- Декодирование из gsm7bit
- Использование USB-3G-модемов
- Содержание
- Общий алгоритм настройки подключения к 3G-сети
- Инструкция в картинках (Ubuntu 10.10)
- Возможные проблемы и решения
- Модели модемов, AT-команды и заметки
- Huawei E1550
- Как «приручить» МТС-модем Huawei E1550
- Способ первый: Доработка модема в среде Windows
- Способ второй: Доработка модема в среде Linux
- Для пользователей RPM дистрибутивов
- Для пользователей Debian-подобных дистрибутивов (Ubuntu и иже с ними)
- Настройка модемного соединения с Интернет
- Wvdial
- KPPP — программа дозвона для рабочего стола KDE
- GNOME PPP — программа дозвона для рабочего стола GNOME
Выполнение AT/USSD команд к /dev/ttyUSB* модему из консоли Linux
Утилиты и скрипты для коммуникации с /dev/ttyUSB* устройством из shell консоли (bash скриптов).
Теория
Отправить в /dev/ttyUSB* терминал AT команду не составляет проблем. Но результат вывода мы не увидим!
Мы можем читать поток stdout c /dev/ttyUSB2 (результат выполнения команд):
- Нужно получить только результат выполнения конкретной AT команды, а не весь поток вывода.
- Нужно использовать gsm7bit кодировку для кодирования параметров и получения ответа при выполнении USSD запросов:
- Ну и хочется простоты в работе)
Выполнение AT/USSD команд
Скрипт at.sh для отправки AT команды и получения ответа в переменную:
Но вы получите ответ вида:
minicom
Можно отправить AT команду и перенаправить весь вывод в файл:
После этого нужно закрыть терминал и разобрать/декодировать весь вывод из файла output.txt. Не круто..
ussd.py
В сети нашел python скрипт для отправки USSD запросов (немного поправил):
Кодировка GSM 7bit в USSD запросах
Кодирование в gsm7bit
При отправке USSD запросов нужно кодировать USSD-код в кодировку GSM 7bit (как я понял из-за того, что модем не поддерживает текстовый режим).
Следующие запросы вернут ERROR:
Python функция gsm7bitencode для кодирования utf8 строки в gsm7bit:
Примечание
Смотрите онлайн-сервис для работы с кодировками: http://smstools3.kekekasvi.com/topic.php?id=288
Пример USSD команд в кодировке 7bit gsm проверки баланса:
Кодированные ответы (ответ всегда приходит на устройство /dev/ttyUSB2):
Декодирование из gsm7bit
Python функция gsm7bitdecode для декодирования gsm7bit в utf8:
Источник
Использование USB-3G-модемов
Содержание
Общий алгоритм настройки подключения к 3G-сети
Скриншоты
Начиная с версии Ubuntu 9.10 большинство USB-модемов определяются и работают нормально независимо от оператора сотовой связи.
Перед началом настройки необходимо установить пакеты usb-modeswitch и usb-modeswitch-data , которые позволяют корректно работать с устройствами, совмещающими функции модема, CD-ROMа и картридера (коими являются большинство 3G-USB-модемов).
После этого, при подсоединении USB-модема, стандартный апплет NetworkManager позволит создать «Новое широкополосное соединение», где мастер поможет выбрать регион, оператора и тариф.
Инструкция в картинках (Ubuntu 10.10)
1. Щёлкните правой кнопкой мыши на апплете NetworkManager и откройте «Изменить соединения».
2. Перейдите во вкладку «Мобильные» и добавьте новое соединение.
3. Выберите устройство, для которого вы настраиваете соединение. Можно выбрать «Любое».
4. Выберите страну.
5. Выберите оператора. Если нужного нет или полно фантазии, можно самому написать название.
6. Выберите или напишите точку доступа (APN). Список для некоторых операторов представлен ниже в этой статье.
7. Почти всё. Нажмите «Применить».
8. Появится окно, в котором можно написать имя пользователя и пароль, изменить точку доступа и т. д.
9. На другой вкладке можно включить или отключить шифрование и сжатие. После настроек нажмите «Применить».
10. Щёлкнув по значку апплета и выбрав созданное подключение, вы сможете подключиться.
11. Изменение готового соединения аналогично, только вместо «Добавить» на шаге 2 нужно выбрать нужное соединение и нажать «Изменить», тем самым вы перейдёте к шагу 8.
Возможные проблемы и решения
Для надёжной работы также рекомендуется перевести устройство в режим «только модем». Это можно сделать с использованием терминальной программы cutecom , соединившись на порт /dev/ttyUSB0 и послав соответствующую конкретной модели устройства команду.
В случае проблем с установлением связи попробуйте в PPP параметрах подключения отключить компрессию Deflate, BSD или обе сразу.
Не забудьте проверять ваш баланс. При недостатке средств соединение может устанавливаться, но доступа к сетевым ресурсам не будет!
Модели модемов, AT-команды и заметки
Huawei E1550
AT-команды для переключения режима работы устройства:
Источник
Как «приручить» МТС-модем Huawei E1550
Человек, купивший набор МТС Коннект, или аналогичный от других мобильных операторов, сталкивается с невозможностью использовать его под Linux. Прекрасно работающий под Windows прибор, под Linux определяется не как модем, а как CD-ROM, выдавая соответствующий значок и уведомление.
Это не удивительно, ведь модем рассчитан на работу в среде Windows, где он автоматически устанавливает программное обеспечение необходимое для его работы. Именно благодаря эмуляции CD-ROM’а и возможна автоматическая установка. Модем виден в папке Windows «Мой компьютер» как CD-ROM и как флешка (съемный диск). Действительно, эта модель позволяет устанавливать микро-флешку MicroSD объемом до 4 Гб (больше нельзя). Сам же модем виден только системе, которая благодаря установленной программе «МТС Коннект» без труда находит его.
При подключении модема к Linux системе, происходит определение прибора как CD-ROM и дальнейшее определение не идет. Виртуальный CD, содержащий Windows программы, абсолютно бесполезен под Linux и мешает определиться модему, поэтому его необходимо каким-то образом отключить.
Мы рассмотрим несколько вариантов отключения эмуляции CD-ROM’а. Суть такой доработки одинакова для всех вариантов, а вот механизм различается в зависимости от платформы.
Способ первый: Доработка модема в среде Windows
Как уже говорилось выше, модем прекрасно виден в Windows системе, поэтому не приходится применять никаких хитростей. Просто втыкаем модем в USB разъем и устанавливаем согласно инструкции. Проще говоря, он сам себя устанавливает, вам нужно только соглашаться со всем, что появляется на экране. По окончании установки вы получаете программу «МТС Коннект» при помощи которой и подключаетесь к Интернету.
На всякий случай сохраняем содержимое виртуального CD в каком-нибудь укромном месте.
Затем следует отключиться от Интернета и запустить программу Hyper Terminal. Никогда не слышали о такой? Я тоже раньше не слышал. Однако такая программа есть. В Windows2000 и WindowsXP она находится в разделе Пуск —> Программы —> Стандартные —> Связь —> Hyper Terminal. А для Vist’ы и Windows7 ее придется скачать. Это можно сделать во множестве мест, например здесь . При этом нет никакой необходимости покупать ее, вполне достаточно пробной (trial) версии — вам она понадобится на один раз.
Вот как выглядит окно этой программы при запуске:
В окошке «Описание подключения» вводим любое слово, например «модем», и жмем ENTER.
Появляется другое окошко — «Подключение». В его последней графе «Подключаться через:» нужно выбрать «HUAWEI Mobile Connect — 3G Modem» и нажать ОК.
Появившееся после этого окошко (снова «Подключение») с номерами телефона и прочим нужно просто закрыть, нажав кнопку «Отмена».
Теперь на панели программы следует нажать последнюю кнопку «Свойства»:
И в открывшемся окне «Свойства: модем» перейти на вкладку «Параметры:
Нажать кнопку «Параметры ASCII»:
Поставить галочку во второй сверху графе «Отображать вводимые символы на экране». Нажать ОК. Верхнее окошко закроется. Нажать ОК. Последнее окошко закроется, и в главном окне программы замигает курсор. Включаем CAPS LOCK и печатаем команду АТ. Жмем ENTER. Появляется ответ: ОК. Значит связь с модемом установлена. Вводим одну из следующих команд:
Я советую воспользоваться командой AT^U2DIAG=0 и в дальнейшем отказаться от возможности использовать устройство как флешку. Это облегчит вам жизнь при настройке модемного соединения под Линукс.
Введя команду, смело жмем ENTER, и в ответ видим ОК. Модем доработан. Закрываем окно Hyper Terminal, ответив «ДА» на предложение прервать сеанс связи и отказавшись от сохранения подключения.
Теперь осталось убедиться, что эмуляция CD-ROM’а отключена. Для этого отсоединяем модем от USB порта и снова подсоединяем в тот же порт. В папке «Мой компьютер» не должно появиться «лишнего» CD-ROM — только столько, сколько есть физических приводов оптических дисков.
Задача решена. Можно переходить к настройке модемного соединения на Linux системе. Кстати и под Windows после этой процедуры модем станет работать стабильнее и быстрее. А если возникнет необходимость вернуть прибор в первобытное состояние, то никто не запрещает повторить всю процедуру, но уже с командой AT^U2DIAG=255 (устройство в режиме модем + CD-ROM + Card Reader).
Способ второй: Доработка модема в среде Linux
Суть его все та же: передать на модем команду AT^U2DIAG=0, отключив все устройства, кроме модема. Для этого мы воспользуемся программой minicom. Это программа весьма древняя и имеется в репозиториях почти любого дистрибутива. Так что устанавливайте ее скорей, в любом случае без нее не обойтись.
Но для того, чтобы передать на модем какую-либо команду, нужно как минимум увидеть модем в своей системе. Для этого в вашем ядре должна быть включена поддержка эмуляции последовательных портов (usbserial или usb-serial). Это можно проверить командой:
Обратите внимание на последнюю строку вывода. У меня модуль usbserial подключен. Если у вас не так, то нужно его подключить. Как это сделать, зависит от вашего дистрибутива. Данная статья не может вместить инструкций по этому вопросу. Вы же хотели повозиться с любимой системой?
Дальнейшие действия зависят от вида вашего дистрибутива.
Для пользователей RPM дистрибутивов
После инсталляции программы в вашей системе, вам потребуется создать текстовой файл /etc/usb-modeswitch.conf. (Будьте внимательны с черточкой в имени файла и программы: программа называется usb_modeswitch, а файл usb-modeswitch.conf).
В этом файле нужно прописать следующее (лучше скопировать и вставить):
После этого следует подключить модем к USB порту, дождаться пока он будет определен системой как CD-ROM, а затем запустить команду (как root):
Немедленно после этого значок CD-ROM пропадает на некоторое время, а через 20-30 секунд снова появляется. Команда отключила эмуляцию CD-ROM, udev и hal тут же распознали собственно модем, а затем снова произошла эмуляция CD-ROM.
Но нам этих секунд достаточно чтобы в директории /dev появились три новых устройства: ttyUSB0-ttyUSB2. В этом нужно убедиться:
Все идет по плану. Теперь нельзя вынимать модем из USB порта, иначе придется повторять все сначала.
Не пытайтесь сейчас наладить дозвон — это бесполезно. Нужно сначала отключить эмуляцию CD-ROM навсегда.
Запускаем в root консоли команду minicom -s:
Выбираем строку «Настройка последовательного порта» и жмем ENTER.
В строке: «Какую настройку изменить?» печатаем А. Курсор перейдет в верхнюю строку «А — Последовательный порт: /dev/modem». Вместо /dev/modem пишем /dev/ttyUSB0. Потом нажимаем ENTER, верхнее окно пропадает, и нажимаем ESC чтобы выйти из режима конфигурации.
Немедленно появится окошко «Инициализируется модем», затем оно сменится следующей информацией:
Введите команду AT и нажмите ENTER. Появится ответ — OK.
Осталось ввести (лучше всего скопировать) команду AT^U2DIAG=0 и нажать ENTER. Снова появится ответ — OK.
Теперь нажимаем CTRL+A и внизу окна миникома появится красная панель. Нажав Z можно просмотреть список команд. Нам нужна «Выход без сброса»- Q. Нажимаем Q и покидаем программу миником. Модем доработан.
Чтобы убедиться в этом, вытащим его из гнезда USB, а затем снова включим (лучше в другое гнездо). Если никакого CD-ROM’а не появляется, повторим команду:
Что и требовалось. Можно налаживать дозвон.
Примечание: Теоретически возможно, что модем окажется не устройством ttyUSB0. Тогда нужно повторить все операции с миникомом для устройств ttyUSB1 и ttyUSB2.
Для пользователей Debian-подобных дистрибутивов (Ubuntu и иже с ними)
После того как вы инсталлируете эту программу, нужно в консоли с правами root, либо при помощи sudo, запустить следующую команду:
# /lib/udev/modem-modeswitch —vendor 0x12d1 —product 0x1446 —type option-zerocd
После этого в директории /dev должны появиться три устройства: ttyUSB0-ttyUSB2. это можно проверить при помощи команды:
Теперь запускайте minicom как рассказано в предыдущем разделе. Все дальнейшие действия для всех дистрибутивов одинаковы.
Настройка модемного соединения с Интернет
Среди программ дозвона выделяется wvdial — старая и добрая «звонилка» подходящая для всех дистрибутивов. Для рабочего стола KDE предназначены программы КРРР и Chestnut Dialer; для GNOME — программа Gnome-ppp. Разберем основные программы дозвона.
Wvdial
Заодно проверьте, есть ли в директории /etc файл /etc/resolv.conf. Если нет, то создайте пустой текстовый файл с этим именем.
Все. Под root’ом набираем команду wvdial и соединение будет установлено. Когда в выводе команды появятся URL’ы (в виде цифр) значит коннект есть. Открывайте браузер и проверяйте.
Чтобы прервать соединение, нужно обязательно нажать комбинацию клавиш CTRL+C. Если просто закрыть окно терминала, то соединение будет продолжать работать, и чтобы его разорвать придется убивать процесс командой kill.
Единственный недостаток программы wvdial — невозможность следить за скоростью и объемом трафика. Но для этого существуют другие программы, описывать которые здесь не будем.
KPPP — программа дозвона для рабочего стола KDE
В Интернете множество руководств по ее применению, поэтому я не стану особенно распространяться. Скажу лишь, что упорство обязательно приведет к успеху. Нужно разбираться, почему программа не работает, проверять права доступа всех сопутствующих файлов и успех обязательно придет. Все настройки такие же, как я привел в файле wvdialconf. Иногда на настройку кррр уходит несколько дней. Но чаще, к счастью, она начинает работать за 10 минут.
GNOME PPP — программа дозвона для рабочего стола GNOME
Надеюсь, что вы уже «довели до ума» свой модем и подсоединились к Паутине. Счастливого серфинга!
Источник