Huawei 173 - 3G от Мегафон
Исходные данные: Ubuntu 10.04.2, Мегафон (Красноярск)
Вообще в самом модеме уже есть софт для работы. Поддерживаются Windows и Linux (вроде бы и MAC OS, но не пробовал). Но после перепрошивки модема новым Firmware в Linux работа приложения Mobile Partner прекратилась. Переустановка не помогла. Понижать версию прошивки модема не хотелось и я стал пробовать оживить устройство через Network Manager.
Сразу скажу - фирменный софт написан на Java и довольно тормозной, поэтому ну его нафиг. Единственный его плюс - можно удобно смотреть и пополнять балансы, отправлять SMS. На этом удобства заканчиваются.
Внимание! Фирменный софт модифицирует sudoers, что небезопасно и вообще ай-ай-ай: http://habrahabr.ru/blogs/linux/131302/
Поэтому я решил избавиться от этой поделки и жить проще и удобнее.
Для начала обязательно удаляем Mobile Partner (если конечно он был установлен):
# ./UninstallMobilePartner
Далее нужно установить пакет usb-modeswitch, иначе NM не увидит наш модем:
# sudo apt-get install usb-modeswitch
Создаем файлик /etc/usb_modeswitch.d/12d1:140c (да, именно такое имя файла - 12d1:140c)
######################################################## # Huawei E173 (HSPA+ modem) DefaultVendor= 0x12d1 DefaultProduct=0x140c TargetVendor= 0x12d1 TargetProduct=0x140c CheckSuccess=20 MessageContent="55534243123456780000000000000011060000000000000000000000000000"
Создаем еще один файлик /etc/udev/rules.d/45-huawei173.rules
SUBSYSTEM=="usb", SYSFS{idProduct}=="140c", SYSFS{idVendor}=="12d1", RUN+="/lib/udev/modem-modeswitch --vendor 0x12d1 --product 0x140c --type option-zerocd"
Далее настраиваем NM:
- Щелкаем правой кнопкой мыши по NM, выбираем «Изменить соединения», открываем закладку «Мобильные», жмем «Добавить»
- В списке должно быть ваше устройство, если нет - значит что-то не так и надо разбираться
- Выбираем страну Russia, оператора Megafon, тарифный план «Другой» и вводим «Internet» (без кавычек, разумеется)
- Прописываем параметры:
- Мобильные
- Номер: *99#
- APN: Internet
- Параметры PPP
- Аутентификация: CHAP
- Сжатие: отключаем все галочки
- Параметры IPv4
- Автоматически (PPP)
Перетыкаем модем, ждем пока определятся всего его запчасти, соединяемся.
Примечание: почему-то мое субъективное мнение таково, что скорость соединения стала выше и само соединение стабильнее.
Еще примечание: первая попытка подключения завершается неудачей, при повторном подключении все ОК. Ощущение что просто не успевает подгрузиться какой-то модуль, но не проверял.
Скрипт для отправки USSD-запросов
Неопробовано в боевых условия, взял отсюда: http://wiki.russianfedora.ru/index.php/USB-модемы
#!/bin/bash
function decodeUCS2 () # декодирует UCS
{
bytes=$(echo -n $1 | sed "s/\(.\{2\}\)/\\\x\1/g")
REPLY=$(printf $bytes | iconv -f UCS-2BE -t UTF-8)
}
function encodePDU () # кодирует в PDU
{
in=$1
let "in_len=${#in}-1"
for chr in $(seq 0 $in_len)
do
let "chr2=$chr+1"
let "t=$chr%8+1"
if [ "$t" -ne 8 ]; then
byte=$(printf "%d" "'${in:$chr:1}")
let "c=$byte>>($chr%8)"
let "c2=(1<<$t)-1"
byte2=$(printf "%d" "'${in:$chr2:1}")
let "b=$byte2 & $c2"
let "c=$b<<(8-$t) | $c"
REPLY=$REPLY$(echo "obase=16; $c" | bc | sed "s/^\(.\{,1\}\)$/0\1/")
fi
done
}
function USSD () # выполняет USSD запрос
{
$(printf "AT+CUSD=1,$1,15\r\n" > /dev/ttyUSB$ttyID)
REPLY=$(grep -m 1 "+CUSD" /dev/ttyUSB$ttyID | sed "s/.*\"\([A-F0-9]*\)\".*/\1/")
decodeUCS2 $REPLY
}
function data_traffic () # преобразователь инфы авторепортов модема
{
i= 0
REPLY=$1
REPLY2=$1
data_text=( "байт" "Кбайт" "Мбайт" "Гбайт" "Тбайт" ) #ИМХО больше никто не скачает
while [ $REPLY2 -gt 1024 ]
do
REPLY=$(echo "scale = 2 ; $REPLY/1024" | bc)
REPLY2=$(echo "$REPLY2/1024" | bc)
let "i=i+1"
done
REPLY="$REPLY ${data_text[$i]}"
}
if ls /dev/ttyUSB* > /dev/null; then
ttyID= Здесь должен быть номер вашего /dev/ttyUSB, например ttyID=2. В подключенном и отключенном режимах он разный.
if [ -z "$*" ]; then
op=$(zenity --list --text="Выберите операцию:" --column="" --column="" --height="280" --width="280" --title="Билайн Интернет Дома" --print-column=1 --hide-column=1 "balance" "Проверить баланс" "start" "Активация стартового баланса" "req" "Выполнить USSD запрос" "at" "Выполнить AT комманду" "info" "Информация о соединении")
elif [ $# -gt 1 ]; then
op=$(echo -n $* |sed "s/\(.*\) .*/\1/")
op2=$(echo -n $* |sed "s/.* \(.*\)/\1/")
else
op=$*
fi
case $op in
balance)
USSD "AA184C3602"
MSG=$(echo -n $REPLY | sed "s/\.Дета.*//")
;;
start)
USSD "AA182CA68AC562B111"
MSG=$REPLY
;;
req)
if [ -z "$op2" ]; then
number=$(zenity --entry --text="Введите номер" --title="Билайн Интернет Дома" --width=270)
else
number=$op2
fi
encodePDU $number
USSD $REPLY
MSG=$REPLY
;;
at)
if [ -z "$op2" ]; then
cmd=$(zenity --entry --text="Введите AT комманду" --title="Билайн Интернет Дома" --width=270)
else
cmd=$op2
fi
cmd=$(echo -n $cmd | tr a-z A-Z)
cmd2=$(echo -n $cmd | sed "s/^AT//; s/\(.[A-Za-z0-9]*\).*/\1/")
$(printf "$cmd\r\n" > /dev/ttyUSB$ttyID)
MSG=$(grep -m 1 "$cmd2" /dev/ttyUSB$ttyID)
;;
info)
DSFLOWRPT=$(grep -m 1 "SFLOWRPT" /dev/ttyUSB$ttyID | sed "s/.*://g")
for i in `seq 1 5`
do
info_[$i]=$(echo -n "$DSFLOWRPT" | cut -f$i -d, | sed "s/./ibase=16; /" | bc)
done
let "time=${info_[1]}/60"
let "speed_trans=${info_[2]}/1024"
let "speed_rec=${info_[3]}/1024"
data_traffic "${info_[4]}" ; trans_data=$REPLY
data_traffic "${info_[5]}" ; rec_data=$REPLY
MSG="Время соединения: $time мин.<br/>Передача данных: $speed_trans Кбит/c<br/>Получение данных: $speed_rec Кбит/с<br/>Передано данных: $trans_data<br/>Получено данных: $rec_data"
;;
*)
MSG="Неверная операция"
esac
else
MSG="Модем не подключен"
fi
if [ -n "$MSG" ]; then
$(notify-send "Билайн Интернет Дома" "$MSG")
fi
Переключение в разные режимы
режим «только модем»
echo -e "AT^U2DIAG=0" > /dev/ttyUSB0
режим «modem + CD-ROM»
echo -e "AT^U2DIAG=1" > /dev/ttyUSB0
режим «modem + CD-ROM + Card Reader»
echo -e "AT^U2DIAG=255" > /dev/ttyUSB0
режим «modem + Card Reader»
echo -e "AT^U2DIAG=256" > /dev/ttyUSB0
режим «edge/gprs»
echo -e "AT+ZSNT=1,0,0\r\n" > /dev/ttyUSB0
режим 3g
echo -e "AT+ZSNT=0,0,2\r\n" > /dev/ttyUSB0
Разлочка модема
Asus WL-500gP + E173 (Мегафон)
Для начала необходимо обновить прошивку модема, взять можно здесь: http://kras.shop.megafon.ru/modems/88430.html#files
Прошивку для Asus WL-500gP берем тут: https://code.google.com/p/wl500g/, аккуратно выбираем среди прощивок именно свою модель! Перешиваем роутер, делаем базовые настройки (SSID, шифрование и т.д.).
Втыкаем модем в роутер, открываем USB Network Devices ⇒ 3G/CDMA Modem, устанавливаем следующие параметры:
- Set as WAN Connection Type by default: Yes
- Zero CD Configuration: Auto
- Modem type: GPRS/EDGE/UMTS/HDSPA
- Username: gdata
- Password: gdata
- APN: internet
- Dial Number (usually *99***1# or *99#): *99#
- Call on Demand: Yes
- Idle time before disconnect (sec): 600
Остальные настройки по желанию
Применяем изменения: Apply ⇒ Finish
После перезагрузки все должно заработать.
