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
