- Как «приручить» МТС-модем Huawei E1550
- Способ первый: Доработка модема в среде Windows
- Способ второй: Доработка модема в среде Linux
- Для пользователей RPM дистрибутивов
- Для пользователей Debian-подобных дистрибутивов (Ubuntu и иже с ними)
- Настройка модемного соединения с Интернет
- Wvdial
- KPPP — программа дозвона для рабочего стола KDE
- GNOME PPP — программа дозвона для рабочего стола GNOME
- Выполнение AT/USSD команд к /dev/ttyUSB* модему из консоли Linux
- Теория
- Выполнение AT/USSD команд
- minicom
- ussd.py
- Кодировка GSM 7bit в USSD запросах
- Кодирование в gsm7bit
- Декодирование из gsm7bit
- achmel / huawei-3372-ru.md
Как «приручить» МТС-модем 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
Надеюсь, что вы уже «довели до ума» свой модем и подсоединились к Паутине. Счастливого серфинга!
Источник
Выполнение 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:
Источник
achmel / huawei-3372-ru.md
The Ultimate Guide for Huawei E3372h
Что я сделал, чтобы подружить модем с антенной?
- Взял стоковый модем, запустил виртуалку 2015 года с WindowsXP (песочницу), там уже были дрова Huawei, но в Мобильном ассистенте общаться с модемом не удалось.
- Скачал c 4pda Pupdatewiz и подходящую прошивку.
- Запустил Pupdatewiz — вуаля!
После прошивки стало:
- Выключил винду, на маке использовал mode_switch и переключил модем на вечный debug mode.
- Снова загрузил винду, в ней стал доступен Терминал.exe.
Вот этими командами восстанавливается убитая в ходе прошивки имеюшка. Тут как повезет либо AT^CIMEI , либо AT^NVWREX . Первая команда, как я понял, не всегда доступна, для успешного использования в второй надо предварительно воспользоваться утилитой imei_converter и вместо нулей записать то что надо. Команда AT^INFORBU нужна имхо для применения долгосрочной записи в NVRAM.
Код imei_converter.c приведен ниже:
- На фоне модем плевался мне подобными сообщениями в терминал:
Последнее событие — событие IMSI Attach.
- Самая полезная команда — AT^LOCINFO? , она выдает сразу MCC, MCN, LAC, CID. C этими данными можно сразу смело идти на https://xinit.ru/bs/ и получать данные базовой станции.
- Но под виндой сидеть было грустно. После перепрошивки на маке/линуксе можно сделать telnet 192.168.8.1 и засылать AT-команды в /dev/appvcom1 либо просто слушать cat
Первый способ — если не нужен интерактив
Второй способ — двухсторонний обмен с модемом, он не очень удобен, т.к. обычно происходит много событий.
Наиболее удобная для меня система — слушать события в отдельном терминале, а в другом кидать команды:
RSRP – средний уровень сигнала принимаемого с базовой станции оператора. Измеряется по логарифмической шкале в дБм (dBm) и отображается в виде отрицательных значений. Чем значение ближе к нулю, тем выше уровень принимаемого сигнала. Например, значение сигнала RSRP равное -65 dBm, намного лучше, чем значение -97 dBm.
SINR — отношение уровня полезного сигнала к уровню шума (соотношение сигнал/шум). Измеряется в дБ (dB). Чем выше данное значение, тем лучше качество сигнала. При значениях SINR ниже 0 скорость подключения будет очень низкой, т.к. это означает, что в принимаемом сигнале шума больше, чем полезной части.
Считается, что параметр сигнал\шум (SINR) в ряде случаев может быть важнее, чем уровень сигнала. При SINR в интервале 15-20 (dB) модем выдаст все, на что способна данная БС, даже при посредственном, около -70. -80 dBm, уровне RSRP, если сама БС окажется не перегружена в момент тестирования.
Показатели качества принимаемого сигнала
Значения параметров | RSSI | SINR (Ec/Io) |
---|---|---|
Отличные | -30. -50 dBm | 30 dB и выше |
Хорошие | -50. -70 dBm | от 20 dB до 30 dB |
Удовлетворительные | -70. -85 dBm | от 10 dB до 20 dB |
Плохие | -85. -110 dBm | менее 10 dB |
Основная часть (выборочная копипаста)
1. Предварительная подготовка
Есть две разновидности прошивок: Stick и HiLink . С прошивкой Stick модем будет видеться AT-модемом, для подключения к интернету нужно «дозваниваться». С HiLink-прошивкой модем представляется сетевой картой Ethernet, и не требует настроек в ОС.
По умолчанию, модем находится в режиме HiLink , такой типа роутер, с красивым веб-интерфейсом.
2. Balong Flash / Прошивка под mac, linux, windows
Для прошивки под Linux используется утилита balong_flash.
- https://github.com/forth32/balongflash (Программа для прошивки модемов фирмы Huawei на чипсете Balong v7)
- https://github.com/forth32/balong-fbtools (Утилиты для работы с flash модемов на платформе Balong)
- https://github.com/forth32/balong-usbdload (Утилита для аварийной USB-загрузки модемов на чипсете Balong V7)
- https://github.com/forth32/balong-nvtool (Утилита для обработки образов NVRAM устройств на чипсете Hisilicon Balong)
В отличие от Linux, нa Macintosh адрес, скорее всего, будет не /dev/ttyUSB0 , а /dev/tty.HUAWEIMobile-Diag .
Достоверно узнать адрес устройства можно с помощью команды ls /dev | grep HUA .
3. Pupdatewiz Flash / Прошивка под windows
Распаковать архив, поместить нужную прошивку (.exe или .bin) в папку с командным файлом go.cmd и запустить его.
4. Полезные и интересные АТ-команды и настройка конфигурации модема
В модеме имеется хранилище различной конфигурационной информации — NVRAM. Оно организовано в виде набора записей переменной длины. Каждая запись имеет номер — от 0 до 65535, но не все номера записей физически присутствуют в модеме. Чтобы узнать длину конкретной записи, используется команда:
— номер записи. В ответ модем выдает ее длину:
Посмотреть содержимое конкретной записи можно командой:
— смещение от начала записи до интересующего нас фрагмента (0 — с начала) — длина выводимого фрагмента, должна быть не больше полной длины записи минус смещение.
Поиск базовых станций сотовой связи
Данный модем обладает уникальным свойством — он умеет делать поиск всех окружающих базовых станций (БС). Причем не только БС оператора вставленной в него симкарты, а вообще все БС всех операторов, сигнал от которых достигает антенны модема. Для каждой найденной БС выводится ее CID и уровень принимаемого от нее сигнала. Это позволяет выбрать оператора с наивысшим уровнем сигнала, а также выбрать конкретную БС для наведения на нее внешней антенны. Единственный недостаток данного модема — он умеет искать только БС 2G и 3G. LTE-соты искать он не умееет.
Если в округе имеется сигнал LTE, то следует перевести модем в режим 2G3G командой AT^SYSCFGEX=»0201″,3FFFFFFF,1,2,800C5,, или в настройках веб-интерфейса. Также обратите внимание, что эту команду можно ввдить только через порт управления (PCUI). Если ее ввести через порт, предназначенный для установки РРР-соединения (modem), то команда будет выдавать пустой ответ (просто ОК и все). Формат команды: AT^NETSCAN=num,level,mode num — число находимых БС, от 1 до 20. Если будет найдено больше num БС, то станции с самым слабым сигналом будут исключены из списка level — минимальный уровень сигнала БС, включаемых в список. Задается в дБ, от -110 (самый низкий уровень) до -47 (самый высокий уровень). Станции с уровнем сигнала меньше level в список включаться не будут. mode — тип БС. 0 -поиск 2G-станций, 1 — поиск 3G-станций.
В этом примере заказывается поиск 3G БС с уровнем сигнала не ниже -108 дБ. Результат выдается в виде списка, отсортированного по уровню сигнала. Самая верхняя БС — самая мощная, нижняя — самая слабая. Формат элемента списка:
Источник