среда, 2 июля 2014 г.

Wvdial, Megafon modem и все-все-все

Если в Дебиане мой старенький Мегафон-модем еще как-то худо-бедно работал с помощью своей собственной программы, то в Арче программа модем тупо не видит - какая-то ошибка драйвера. А ковыряться лень.

К счастью есть старый добрый wvdial, который ест все модемы, какие только есть :)

Wvdial.conf у меня такой:

[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Modem Type = Analog Modem
ISDN = 0
Modem = /dev/ttyUSB0
Phone = *99#
Username = gdata
Password = gdata
Baud = 460800
Init3 = AT+CGDCONT=1,"IP","internet"
Модем создает аж три устройства /dev/ttyUSB[0-2], с /dev/ttyUSB0 всё прекрасно работает.

Но инициализируется он не сразу.
Сначала нужно запустить /usr/local/Mobile_Partner/driver/HWActivator
Можно переключить модем в режим модема и без него, в интернете есть инструкции, но раз уж у меня драйвер установлен, почему бы им и не воспользоваться.

В итоге нужно:
1. Воткнуть свисток
2. Запустить HWActivator
3. Подождать, пока модем переключится в режим модема
4. Запустить wvdial

wvdial с этим модемом почему-то делает паузу на 30 секунд перед подключением, что с этим делать - не понятно.

Тем не менее, тут явно напрашивается скрипт, верно? :)
Ну так вот, наконец, сегодня я его и сделал. Добавлены всякие проверки и прочее.

#!/bin/bash

if [ $(pgrep wvdial)>'0' ]
then
  echo "Wvdial is already running. Exit."
  exit 1
fi

# Make sure only root can run our script
if [[ $EUID -ne 0 ]]; then
    echo "This script must be run as root"
    exit 1
fi

# Check that HWActivator is running
if [ $(pgrep HWActivator)>'0' ]
then
  echo "HWActivator is running. Ok."
else
  echo "HWActivator is not running. Starting..."
  /usr/local/Mobile_Partner/driver/HWActivator
fi

# Wvdial section
echo "Waiting for Megafon modem..."

until [ -e /dev/ttyUSB0 ]
do sleep 3s;
done

echo Modem activated. Starting wvdial...
wvdial
exit 0;

Таймаут меньше трех секунд не срабатывает - устройство в /dev уже есть, но модем при подключении выдает ошибку.

Как-то так.

(Почему Network Manager не видит этого модема (в дебиане видел и опознавал как мобильник, подключался нормально) - тоже не очень понятно)