linux і дресирований модем: режим, баланс, вибір мережі

продовжую користуватися 3g-модемом і передплаченим інтернетом від utel/укртелеком на нетбуці з linux — тепер з #!crunchbang. як і раніше, network manager чомусь не хоче працювати з модемом — але wvdial дозволяє підключатися без зайвих проблем (якщо не гидувати набором однієї команди в терміналі).

минулого разу я звітував про те, як можна надсилати модему різні at-команди — цікава вправа, але надто багато мороки з двома терміналами для такої дрібнички. є кращий спосіб — скористатися perl-скриптом, що його написав і виклав у вільний доступ якийсь безіменний герой михайло бурштинський. скрипт «вміє» показувати стан модема (код imei, серійний номер, версія прошивки тощо), керувати режимом роботи (вибір оператора та типу мережі) та посилати ussd-запити (баланс чи поповнення рахунку), звітуючи про результат.

ліричний відступ: ось для таких задач, як на мене, і треба використовувати інтерпретовані мови програмування на кшалт python’а, perl’а, ruby тощо… — разові чи періодичні суто утилитарні функції. ну ще макетування програм на ранньому етапі розробки… для серйозніших проектів — компільовані мови, класичні c/c++. бо ж розвели зоопарк: як не кинешся шукати нормальний jabber-клієнт, torrent-витягувалку чи текстовий редактор — а всюди самі лише python’и.

втім, повернуся до теми. все, що треба — завантажити архів зі скриптом (файл mf100.pl.tar.gz), розархівувати власне скрипт (файл mf100.pl), закинути в теку /usr/bin, прибрати розширення .pl (це опціонально, для простоти) і дати права на виконання. на всяк випадок — відповідні команди:
cd ~
wget -c http://m-blog.pp.ua/files/mf100.pl.tar.gz
gzip -d mf100.pl.tar.gz
tar -xf mf100.pl.tar
sudo mv mf100.pl /usr/bin/mf100
sudo chmod +x /usr/bin/mf100
готово. далі все просто: підключаємо модем zte mf100 (для нього писалося — але ймовірно, що працюватиме з якимись іншими подібними моделями), трішки чекаємо, поки на нім загориться зелений індикатор, і пробуємо в терміналі:
mf100 info
у відповідь скрипт повинен сказати приблизно таке:
Производитель: xxxxx
Модель: xxxxx
Версия ПО: BD_UAKVSP671A1V1.0.0B01
IMEI: xxxxxxxxxxxxxxx
IEMS: xxxxxxxxxxxxxxx
Ваш номер: +38091xxxxxxx
Уровень сигнала сети: 48%
Оператор: Utel "UMTS"
Режим поиска сети: автоматически, только WCDMA
якщо запустити mf100 без параметрів — скрипт розкаже, які команди можна використовувати. приміром, для того, щоб вибрати режим роботи (gprs/edge чи wcdma, ручний вибір чи автоматичний), командуємо:
mf100 search
…і вибрати один із запропонованих варіантів (в моєму випадку 5 — автоматичний вибір лише wcdma-мереж). перевірити баланс можна так:
mf100 *100# (sim-карта utel/укртелеком)
mf100 *111# (sim-карта київстар)
ще одна невеличка підказка. найшвидший, мабуть, спосіб перевірити, чи розпізнався модем у linux’і — «поштрикати» його конфігуратором wvdial:
sudo wvdialconf
увага! ця команда замінить вміст файлу /etc/wvdial.conf на стандартний шаблон з вказанням порта, на якому знайдено модем, і мінімальної протестованої швидкості (як правило 9600) — тому файл обов’язково треба відредагувати, перш ніж пробувати підключатися. ось мій варіант для zte mf100 та utel/укртелеком:
[Dialer Defaults]
Modem = /dev/ttyUSB2
Modem Type = USB Modem
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = AT+CGDCONT=1, "IP", "3g.utel.ua"
Phone = *99#
ISDN = 0
Stupid Mode = 1
Username = ''
Password = ''
Ask Password = 0
Baud = 460800
New PPPD = yes
все, успіхів!