USB-модемы
Материал из База знаний проекта Russian Fedora
USB-3G/EDGE/GPRS модемы различных операторов связи, в простонаречии USB-модемы.
Содержание |
Подготовка
sudo yum update # необходимо обновиться, чтобы список поддерживаемых устройств был актуальным sudo yum install wammu # будет полезна чтобы читать SMS sudo yum install usb_modeswitch # для поддержки USB-модемов Huawei, T-Mobile, Vodafone, Option, ZTE, Novatel sudo yum install minicom # для терминального подключения к модему по /dev/ttyUSB* usermod -a -G dialout <user> # необходима для доступа к /dev/ttyUSB*
Естественно, если эти программы [wammu, usb_modeswitch, minicom] в системе уже установлены, то ставить их снова не надо, но обновить систему - обязательно.
Скрипт для отправки USSD-запросов
#!/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
Билайн
ZTE MF626
Есть два вида этих модемов:
- держатель SIM карты полностью выступает из модема;
- держатель SIM карты частично выступает из модема.
Я буду описывать второй тип, поскольку его можно прошить и использовать в Linux. Первый тип модема невозможно перешить (или я не знаю как).
Для начала ответим на вопрос: Зачем его прошивать?
Дело в том, что операторы связи специально заблокировали модемы таким образом, чтобы не было никакой возможности использовать в этих модемах SIM карты других операторов связи. Для этого, они изменили внутреннюю микропрограмму таким образом, что если не сделать определенных действий, то модем теряет связь.
Однако, пользователи интернета заметили, что если обновить прошивку с официального сайта ZTE, то модем может работать с любыми SIM-картами.
Прошивка ищется на просторах интернета, называется MF626UpdateTool_GLOBE_PHV1.2.exe. Также, этот процесс очень хорошо расписан [1]. Не важно что там описан процесс для ZTE MF627, поскольку эти модемы практически идентичны.
Мы остановимся на установке данного модема в Fedora 14. Для более поздних версий системы могут быть отличия, но обычно - не принципиальные.
Вставляем модем в USB порт. Часто это делают через удлинитель. Если используется удлинитель поставляемый в комплекте, то проблем не должно возникнуть, иначе возможны проблемы с определением устройства, нестабильной работы. Поэтому в случае неустойчивой работы модема или иных проблем, стоит обратить внимание на качество USB-удлиннителя.
Простой способ проверить поставилось ли устройство, это посмотреть его есть ли файл устройства в /dev
$ ls -l /dev/ttyUSB* crw-rw---- 1 root dialout 188, 0 Фев 1 21:20 /dev/ttyUSB0 crw-rw---- 1 root dialout 188, 1 Фев 1 21:20 /dev/ttyUSB1 crw-rw---- 1 root dialout 188, 2 Фев 1 21:20 /dev/ttyUSB2
Как видно из листинга, устройство определилось.
Так же для просмотра подключенных USB-устройств можно воспользоваться специализированной командой:
$ lsusb
Теперь вы можете настроить соединение в NetworkManager-е.
Мегафон
Huawei E352
Данная модель достаточно новая (на начало 2012 года), поэтому в Fedora 14 поддержка отсуствует (с чем пришлось столкнуться при подключении). На Fedora 16 модем заработал без проблем, но с одной особенностью при настройке соединения, о чём - ниже.
После определения системой подключенного устройства в меню (по правой клавише "мыши") появляется пункт "Новое подключение к мобильной сети GSM...". Выбираем его, в появившемся окне указываем страну и оператора ("Российская Федерация" и "Megafon"), а вот на странице с выбором тарифного плана стоит остановиться особо: в некоторых регионах выбор тарифного плана не имеет значения, а где-то - имеет. В моём случае заработало подключение только при тарифном плане "UGSM". Т.е. необходим некоторый эксперимент при подключении. Так же необходимо установить в свойствах подключения "Тип" подключения "3G (UMTS/HSPA)" вместо "Предпочитать 3G (UMTS/HSPA)".
Собственно в случае E352 всё. Осталось только поднять созданное соединение (а после создания оно активируется сразу автоматически).
P.S. В процессе эксплуатации модема выяснилось, что с Fedora 16 модем работает не очень хорошо. Проявяется это срывами соединения (если после установки соединения на иконке соединения в трее пишется не "H" - соединение быстро сорвётся (с "H" всё отлично работает) и невозможностью установки соединения после обрыва до "вынуть/вставить" модем или полной перезагрузки системы.
Продолжение следует...
