продовжую користуватися 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
все, успіхів!

6 коментар(ів):

jin сказав...

Чому зразу "безіменний", він підписаний, Mikhail Burshtynskiy

tivasyk сказав...

@jin — гхм, а я не завважив цього… хоча шукав ім’я.

majesty сказав...

Мені також позичили такий модем, він норм детектиться нетворк манагером, проте резервний ввдіал трошки інший

[Dialer Defaults]
Modem = /dev/ttyUSB2
ISDN = off
Modem Type = USB Modem
Baud = 460800
Init = ATZ
Init2 = AT+CPIN=1111
Init3 =
Init4 =
Init5 =
Init6 = AT&F &D2 &C1
Init7 = ATS7=60 S30=0 S0=0
Init8 =
Init9 = AT+CGDCONT=1,\"IP\",\"unlim.utel.ua\"
Phone = *99#
Phone1 =
Phone2 =
Phone3 =
Phone4 =
Dial Prefix =
Dial Attempts = 24
Dial Command = ATD
Ask Password = off
Password = IT
Username = IT
Auto Reconnect = on
Abort on Busy = off
Carrier Check = on
Check Def Route = on
Abort on No Dialtone = off
Stupid Mode = on
Idle Seconds = 0
Auto DNS = on

туди ж під час ініціалізації можна повписувати різні службові команди, щоб перед з'єднанням писало, напр, баланс чи оператора.

tivasyk сказав...

@majesty
> резервний ввдіал трошки інший
не такий вже й «інший» — по суті налаштовано реакцію на ймовірні проблеми (останні 8 рідяків), а ще ось це:

> Init6 = AT&F &D2 &C1
> Init7 = ATS7=60 S30=0 S0=0

at&f — відновлення заводських налаштувань. в *резервному* конфігу, можливо, це й можна вставити… і молитися, що такий автоматичний підхід дозволить вирішити ймовірні проблеми… але я би все-таки руцями це робив.

s7=60 — чекати тону 60 секунд (!) для 3g-модемів зайве, потрібно для діалапу.

s30=0 — не відключатися автоматично на «холостому» з’єднанні… і це дефолтне налаштування модема. інше значення потрібно було б для діалапу, в крайньому випадку для gprs/edge — але для 3g з оплатою помегабайтно не є суттєвим узагалі.

s0=0 виключити автовідповідь. дефолтне значення, тож можна опустити… але за традицією всі (і я також, ги) копіюють з тенет в свої wvdial.conf’и =)

&c1 — розпізнавання тону включене (дефолт)

&d2 — реакція на команду dtr-drop («покласти трубку»)… в данному випадку — вдключитися і чекати наступну команду.

детально тут (вікіпедія) і тут (довідник з набору at-команд).

xm2001 сказав...

V riadky "gzip -d mf100.pl.tar.zg" pomylka v rozshyreni. Proshu probachennia za translit.

tivasyk сказав...

@xm2001
дякую, виправляю…

Дописати коментар

увага!
коментарі не модерую, проте спам видаляю нещадно. посилання на інші сайти/блоги за темою допису вітаю.

додаткові можливості розмітки (кутики набрати з клавіатури):
  ‹b›жирний шрифт‹/b›
  ‹i›похилий шрифт‹/i›
  ‹a href="http://tivasyk.info"›посилання‹/a›