ZTE MF180: различия между версиями

Материал из Linux Wiki
Перейти к навигацииПерейти к поиску
(Скрипт -> USSD вида #xxx#; раскодирование UCS-2)
 
(не показаны 2 промежуточные версии 2 участников)
Строка 7: Строка 7:


== Швейцарский нож ==
== Швейцарский нож ==
Далее, необходимо (вернее, можно обойтись и посылкой AT-команд, но мы же слишком ленивы для этого) использовать небольшой, но очень полезный скрипт скрипт
Далее, необходимо (вернее, можно обойтись и посылкой AT-команд, но мы же слишком ленивы для этого) использовать небольшой, но очень полезный скрипт:


{{hider hiding|
|title=Скрипт
|content=
<source lang=perl>
<source lang=perl>
#!/usr/bin/perl -w
#!/usr/bin/perl -w
Строка 16: Строка 19:
#    подробнее параметры коммандной строки:
#    подробнее параметры коммандной строки:
#    mf100.pl help
#    mf100.pl help
#    29-04-2012
#    Отправка USSD-команд вида #102#
#    Раскодирование ответа UCS-2 -> UTF-8
#    Ivan Krylov <aitap@jabber.ru>


#    Copyright (C) 2010  Mikhail Burshtynskiy  (mikhail@m-blog.pp.ua)
#    Copyright (C) 2010  Mikhail Burshtynskiy  (mikhail@m-blog.pp.ua)
 
#    This program is free software: you can redistribute it and/or modify
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, either version 3 of the License, or
#    the Free Software Foundation, either version 3 of the License, or
#    (at your option) any later version.
#    (at your option) any later version.
 
#    This program is distributed in the hope that it will be useful,
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#    GNU General Public License for more details.
 
#    You should have received a copy of the GNU General Public License
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
############################################################################################
############################################################################################
# настройка модема на примере Debian lenny версия ядра: 2.6.30-bpo.2-686; Ubuntu 9.10   
# настройка модема на примере Debian lenny версия ядра: 2.6.30-bpo.2-686; Ubuntu 9.10   
Строка 57: Строка 65:
# вам поможет команда: # rmmod option
# вам поможет команда: # rmmod option
############################################################################################
############################################################################################
 
use strict;
use strict;
use File::Basename;
use File::Basename;
use POSIX qw(O_RDWR O_NOCTTY);
use POSIX qw(O_RDWR O_NOCTTY);
use Encode qw{encode from_to};
use Term::ANSIColor qw(:constants);
use Term::ANSIColor qw(:constants);
$Term::ANSIColor::AUTORESET = 1;
$Term::ANSIColor::AUTORESET = 1;
 
#параметры
#параметры
my $usb_1='/dev/ttyUSB1';
my $usb_1='/dev/ttyUSB1';
Строка 69: Строка 78:
my $timeout=20;# выход по таймауту
my $timeout=20;# выход по таймауту
#######################
#######################
 
my $exit_="Время ожидания истекло, выход.";
my $exit_="Время ожидания истекло, выход.";
my $error="ERROR\n";
my $error="ERROR\n";
Строка 99: Строка 108:
my $par=shift @ARGV;
my $par=shift @ARGV;
if($par){
if($par){
unless ($par=~m/^\*[0-9]{3}[*0-9]*#$|^[0-9]$|^on$|^off$|^sig$|^info$|^cdstop$|^cdrun$|^-*help$|^network$|^search$|^storage$|^modem$|^pin$|^sequrity$/i){
unless ($par=~m/^[*#][0-9]{3}[*0-9]*#$|^[0-9]$|^on$|^off$|^sig$|^info$|^cdstop$|^cdrun$|^-*help$|^network$|^search$|^storage$|^modem$|^pin$|^sequrity$/i){
print BOLD, RED, "\nНЕВЕРНАЯ КОМАНДА!",RESET,"\n\n$help";
print BOLD, RED, "\nНЕВЕРНАЯ КОМАНДА!",RESET,"\n\n$help";
exit;
exit;
Строка 178: Строка 187:
exit if $answer eq "0";
exit if $answer eq "0";
print RED, BOLD, "введено некорректное значение!\n\n", RESET and redo MARK4 unless $answer=~m/^1$/;
print RED, BOLD, "введено некорректное значение!\n\n", RESET and redo MARK4 unless $answer=~m/^1$/;
 
print BOLD, "ВНИМАНИЕ! При вводе PIN кода будте предельно внимательны.\nУ вас 3 или менее попыток.\n", RESET;
print BOLD, "ВНИМАНИЕ! При вводе PIN кода будте предельно внимательны.\nУ вас 3 или менее попыток.\n", RESET;
MARK5:{
MARK5:{
Строка 228: Строка 237:
my $producer=info('CGMI', qr/(^.{3,})/);
my $producer=info('CGMI', qr/(^.{3,})/);
       print BOLD, "Производитель: ", RESET, "$producer\n" if $producer;
       print BOLD, "Производитель: ", RESET, "$producer\n" if $producer;
 
my $model=info('CGMM', qr/(^.{3,})/);
my $model=info('CGMM', qr/(^.{3,})/);
print BOLD, "Модель: ", RESET, "$model\n" if $model;
print BOLD, "Модель: ", RESET, "$model\n" if $model;
 
my $prog=info('CGMR', qr/(^.{5,})/);
my $prog=info('CGMR', qr/(^.{5,})/);
print BOLD, "Версия ПО: ", RESET, "$prog\n" if $prog;
print BOLD, "Версия ПО: ", RESET, "$prog\n" if $prog;
 
my $imei=info('CGSN', qr/(^\d{15,})/);
my $imei=info('CGSN', qr/(^\d{15,})/);
print BOLD, "IMEI: ", RESET, "$imei\n" if $imei;
print BOLD, "IMEI: ", RESET, "$imei\n" if $imei;
 
my $iems=info('CIMI', qr/(^\d{15,})/);
my $iems=info('CIMI', qr/(^\d{15,})/);
print BOLD, "IEMS: ", RESET, "$iems\n" if $iems;
print BOLD, "IEMS: ", RESET, "$iems\n" if $iems;
 
my $number=info('CNUM', qr/\+CNUM:\D+,"(\+?\d{10,})",\d+/);
my $number=info('CNUM', qr/\+CNUM:\D+,"(\+?\d{10,})",\d+/);
if($number){
if($number){
Строка 246: Строка 255:
print BOLD, "Ваш номер: ", RESET, "$number\n";
print BOLD, "Ваш номер: ", RESET, "$number\n";
}
}
 
print BOLD, "Сигнал сети: ", RESET, sig(info('CSQ', qr/\+CSQ: (\d+?),\d{2}/))."\n";#уровень сигнала сети
print BOLD, "Сигнал сети: ", RESET, sig(info('CSQ', qr/\+CSQ: (\d+?),\d{2}/))."\n";#уровень сигнала сети
my $operator=operator();
my $operator=operator();
Строка 310: Строка 319:
Нажмите ENTER для продолжения, при этом при неудачной регистрации
Нажмите ENTER для продолжения, при этом при неудачной регистрации
модем "перескочит" на родную сеть
модем "перескочит" на родную сеть
 
или для подключения в ручном режиме наберите:
или для подключения в ручном режиме наберите:
SAY
SAY
Строка 317: Строка 326:
в дальнейшем при следующем подключении модема необходимо
в дальнейшем при следующем подключении модема необходимо
будет явно выбрать сеть или изменить режим поиска сети.
будет явно выбрать сеть или изменить режим поиска сети.
 
или: 0  для выхода
или: 0  для выхода
   
   
Строка 376: Строка 385:
if($st){
if($st){
if($st=~/^[0-9A-F]+$/i){
if($st=~/^[0-9A-F]+$/i){
return pack("H*", $st);
$st = pack("H*", $st);
}else{
encode("ucs-2",$st);
return $st;
from_to($st,"ucs-2","utf-8");
}
}
return $st;
}elsif($@ =~ /Timeout/){
}elsif($@ =~ /Timeout/){
return $exit_;
return $exit_;
Строка 486: Строка 496:
}
}
}
}
 
sub check_pin{
sub check_pin{
my $pin;
my $pin;
Строка 499: Строка 509:
return $pin;
return $pin;
}
}


</source>
</source>
}}


== Вскрываем ==
== Вскрываем ==
Строка 543: Строка 557:


== Ссылки ==
== Ссылки ==
* [http://m-blog.pp.ua/%D0%B1%D0%B5%D0%B7-%D1%80%D1%83%D0%B1%D1%80%D0%B8%D0%BA%D0%B8/14.html источник вдохновения и скрипта] - там все издевательства производятся над MF100
* [http://m-blog.pp.ua/%D0%B1%D0%B5%D0%B7-%D1%80%D1%83%D0%B1%D1%80%D0%B8%D0%BA%D0%B8/14.html источник вдохновения и скрипта] - там все издевательства производятся над MF100; домен в данный момент на парковке




[[Category:USB-Модемы]]
[[Category:USB-Модемы]]
[[Category:Руководства]]
[[Category:Руководства]]

Текущая версия от 09:12, 29 апреля 2012

Сабж

Билайновский модем, куплен в августе 2010 за 700 с чем-то RUR

Заставляем систему видеть

Для корректной работы проще всего поставить ядро с поддержкой драйвера option (чтобы не мучаться с usbserial и udev).

Швейцарский нож

Далее, необходимо (вернее, можно обойтись и посылкой AT-команд, но мы же слишком ленивы для этого) использовать небольшой, но очень полезный скрипт:

Скрипт

Вскрываем

Изначально модем определяется как CD-ROM, на котором есть драйвера только под Windows (несмотря на заявленную поддержку MacOS X). После извлечения оного модем становится виден как 3 tty устройства, с которыми уже можно попробовать поработать, но разве нам нужны эти пляски?

Потому просто берем и отключаем cdrom командой:

./mf100.pl cdstop

Если скрипт ответил "OK", можно переткнуть модем и удостовериться, что больше нас ничто не беспокоит.

Звоним

Многие провайдеры используют коварный флаг, который разрывает соединение каждые 2-3 минуты и коварный билайн в их числе. Недуг лечится опять же, просто:

./mf100.pl modem

Кто как, а я для дозвона с незапамятных времен использую wvdial, ибо для ppp/pppd нужно писать много букав, а в kppp/gnome-ppp - много тыкать мышкой. Лень.

для wvdial используем такой конфиг (пользователь/пароль/точка доступа специфичны для вашего провайдера):

[Dialer beeline-3g]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = AT+CGDCONT=1,"IP","home.beeline.ru"
Phone = *99#
ISDN = 0
Stupid Mode = 1
Auto Reconnect = 0
Idle Seconds = 0
Username = beeline
Password = beeline
Modem Type = USB Modem
Modem = /dev/ttyUSB2

теперь запускаем wvdial и радуемся интернету:

wvdial beeline-3g

Ссылки