3G, EDGE,GPRS Обо всем в кратце

Материал из Wiki.UnixForum.org

Перейти к: навигация, поиск

[править] 3G,EDGE,GPRS модемы

Обсуждение данной темы ведется на форуме http://unixforum.org/index.php?s=45df2ac088e0774605d6f529fa6120ba&showtopic=72408&st=120


Сейчас очень большое распространение получили USB-GPRS модемы. Мне попадались в руки следующие модели: Beeline: MF626.

МТС:Huawei E169G,Huawei E1550

Модем от Билайна можно разлочить, с помощью прошивки. Модемы Huawei разблокируются с помощью специального NCK кода, который вычисляется на основе IMEI. В интернете есть сайты на которых разблокировку модемов делают бесплатно..

Необходимые программы: kppp, minicom, perl.

Небольшой FAQ:

1)В:Как определить на какой порт подключился модем?

О: После того как воткнули модем в usb порт запустите консоль , перейдите в режим root и посмотрите файл

Файл: /var/log/message

Dec 2 14:45:57 xxx klogd: option1 ttyUSB0: GSM modem (1-port) converter now disconnected from ttyUSB0

Dec 2 14:45:57 xxx klogd: option 2-1:1.0: device disconnected

Dec 2 14:45:57 xxx klogd: option1 ttyUSB1: GSM modem (1-port) converter now disconnected from ttyUSB1

Dec 2 14:45:57 xxx klogd: option 2-1:1.1: device disconnected

Dec 2 14:45:57 xxx klogd: option1 ttyUSB2: GSM modem (1-port) converter now disconnected from ttyUSB2

Dec 2 14:45:57 xxx klogd: option 2-1:1.2: device disconnected

2)В: Как в модем послать команду AT ?

О: Есть несколько способов

   1) Напрямую из консоли:
         # echo -en "AT^U2DIAG=0" >/dev/ttyUSB0  
        echo "AT^U2DIAG=0" > /dev/ttyUSB0
   2) Через Kppp.  Запускаете kppp ->настройка -> модемы -> Выбираете свой модем или создаете новый -> переходим на закладку "модем"  ->  Терминал.
   3) с помощью программы minicom. Подробности здесь http://rus-linux.net/nlib.php?name=/MyLDP/internet/modem-ru.html

Команда чтобы разблокировать модем. AT^CARDLOCK="<Ваш NCK код>"

3)В: Как сделать чтобы модем работал в режиме только модем?

О: Для модемов Huawei надо послать команду:

Консоль: Команды АТ

AT^U2DIAG=0 (девайс в режиме только модем)

AT^U2DIAG=1 (девайс в режиме модем + CD-ROM)

AT^U2DIAG=255 (девайс в режиме модем + CD-ROM + Card Reader)

AT^U2DIAG=256 (девайс в режиме модем + Card Reader, можно использывать как обычную флешку, отказавшись от установки драйверов модема)

Для модемов ZTE  надо через программу qpst-2.7b215.zip   удалить файл CD_STARTUP_FLAG
для модема ZTE MF100
1. Скачиваем http://www.x-drivers.com/catalog/flash/mobile_phones/companies/qualcomm/models/qpst/12051.html
2. Устанавливаем (в винде), открываем qpstconfiguration.
3. обнаруживаем свой "телефон" (модем), из меню start clients открыть efs explorer.
4. В корневом каталоге прошивки находим два файла: autorun.flg и nodownload.flg, удаляем (я их просто перенёс в другое место).

4)В: Как проверить баланс

О: С помощью команды at+cusd=1,*111# . Но не всегда эта команда проходит (предположительно для ZTE модемов подходит, для Huawei нет). Для того чтобы вычислить правильную строку надо выполнить команду:


perl -e '@a=split(//,unpack("b*", "*100#")); for ($i=7; $i < $#a; $i+=8) { $a[$i]="" } print uc(unpack("H*", pack("b*", join("", @a))))."\n"'


  • 100# AA180C3602
  • 102#
  • 105#

Команду выполняем at+cusd=1,AA180C3602,15 через minicom -w. Пускать обязательно с этим ключем, иначе окно minocom обрывает последовательность символов без переноса строки - он это не умеет. Обязательно на /dev/ttyUSB0! Выхлоп имеет вид "D6F01C0D1287D961F75C07D287CF61F6C99D4F8340B11BEB3603ED40F0F0BA4C77E7D320180 B0643CBDD2E16481B66E7E7E83CFB3DD7D1663219CE055B8A417650BBAC4787D12078785DA6D75D" одной строкой.

Теперь это надо раскодировать.


perl -e '@a=split(//,unpack("b*", pack("H*","D6F01C0D1287D961F75C07D287CF61F6C99D4F8340B11BEB3603ED40F0F0BA4C77E7D320180B 0643CBDD2E16481B66E7E7E83CFB3DD7D1663219CE055B8A417650BBAC4787D12078785DA6D75D"))); for ($i=6; $i < $#a; $i+=7) {$a[$i].="0" } print pack("b*", join("", @a))." Выхлоп имеет вид: Vash balans: zagal'nyi 17,73 ; paketnyi 0,00hrn., Zalyshylos:43228.0Kb v mezhah paketu.


Консоль: Скрипт для оператор Utel

#!/bin/sh SCR=/tmp/ussdscp OST=/tmp/lastcheck ( echo 'send "ATZ"'>$SCR echo 'send ""' >>$SCR echo 'send "AT+CUSD=1,AA180C3602,15"'>>$SCR echo 'expect {'>>$SCR echo '"\"," ! killall -9 minicom'>>/$SCR echo ' }'>>$SCR echo '! killall -9 minicom'>>$SCR minicom -w -S $SCR -C $OST >/dev/null 2>&1 ) >/dev/null 2>&1 reset grep '".*"' $OST | sed -e "s/\(.*\"\)\(.*\)\(\".*\)/\\2/" > $SCR perl -e '@a=split(//,unpack("b*", pack("H*",`cat /tmp/ussdscp`))); for ($i=6; $i < $#a; $i+=7) {$a[$i].="0" } print pack("b*", join("", @a))." "' echo "" unlink $OST unlink $SCR


Обсуждение работы и улучшение этого скрипта ведется на форуме http://forum.puppyrus.org/index.php?topic=3935.0

У кого есть скрипт для других оператор сообщите черех ПМ (DjSpike) на форуме .


Еще один скрипт для проверки баланса (используется python) http://unixforum.org/index.php?showtopic=116611&view=findpost&p=1102969

5) В: Как проверить уровень сигнала?

О: Команда AT+CSQ. Ответ состоит из двух цфир: +CSQ: 15,99. С помощью первой определяем уровень сигнала в дБ по форумуле: [-113 + Х * 2]. Второе число - кол-во ошибок в процентах:

  0 - меньше чем 0.2%
  1 - 0.2% to 0.4%
  2 - 0.4% to 0.8%
  3 - 0.8% to 1.6%
  4 - 1.6% to 3.2%
  5 - 3.2% to 6.4%
  6 - 6.4% to 12.8%
  7 - больше чем 12.8%
 99 - не определено

6) В: Как отправить смс?

О: http://unixforum.org/index.php?showtopic=105037

7) В: Почему слово "вкратце" в заглавии написано с ошибкой?

O: tba

see also