Instalar o modem ZTE MF626 da OI
Pacotes necessários:
usb_modeswitch – aplicativo para detectar o modem USB
libusb e libusb-devel – faz o controle de dados para dispositivos USB
ppp – protocolo de comunicação ponto-a-ponto
wvdial – discador baseado no protocolo PPP
Toda a instalação e configuração é necessária fazer com o usuário root ou pelo menos rodar com privilégios de root.
Instalando os pacotes necessários:
Instale os deb’s usando o comando:
# apt-get install libusb libusb-devel ppp wvdial
instale o usb_modeswitch da seguinte forma:
Baixe o arquivo do link http://www.draisberghof.de/usb_modeswitch
descompacte o arquivo e instale:
– se sua distribuição for i386, o arquivo vem pronto para instalar
$ tar -xjvf usb_modeswitch-0.9.7.tar.bz2
$ cd usb_modeswitch-0.9.7
# make install
– se sua distribuição for amd64, teremos que compilar o usb_modeswitch
$ tar -xjvf usb_modeswitch-0.9.7.tar.bz2
$ cd usb_modeswitch-0.9.7
$ rm -f usb_modeswitch
$ make
# make install
Configurando o usb_modeswitch.conf
Após instalado os pacotes edite o arquivo /etc/usb_modeswitch.conf. Neste arquivo terá a configuração de diversos modens, procure pelo modelo MF626 e deixe-o assim:
########################################################
ZTE MF628+ (tested version from Telia / Sweden)
ZTE MF626
Contributor: Joakim Wennergren
DefaultVendor= 0×19d2
DefaultProduct= 0×2000
TargetVendor= 0×19d2
TargetProduct= 0×0031
MessageEndpoint=0×01
MessageContent=”55534243123456782000000080000c85010101180101010101000000000000″
# if that command doesn’t work, try the other (“eject”)
MessageContent=”5553424312345678000000000000061b000000030000000000000000000000″
Criando o arquivo no udev
Crie o arquivo /etc/udev/rules.d/15-zte-mf626.rules, com o seguinte conteúdo:
ACTION!=”add”, GOTO=”ZTE_End”
# Is this the ZeroCD device?
SUBSYSTEM==”usb”, SYSFS{idProduct}==”2000″, SYSFS{idVendor}==”19d2″, GOTO=”ZTE_ZeroCD”
# Is this the actual modem?
SUBSYSTEM==”usb”, SYSFS{idProduct}==”0031″, SYSFS{idVendor}==”19d2″, GOTO=”ZTE_Modem”
LABEL=”ZTE_ZeroCD”
# This is the ZeroCD part of the card, remove
# the usb_storage kernel module so
# it does not get treated like a storage device
#RUN+=”/sbin/rmmod usb_storage”
#RUN+=”/usr/local/sbin/usb_modeswitch -d 1 -v 0x19d2 -p 0x2000 -V 0x19d2 -P 0x0031″
RUN+=”/usr/sbin/usb_modeswitch -d 1 -v 0x19d2 -p 0x2000 -V 0x19d2 -P 0x0031″
LABEL=”ZTE_Modem”
# This is the Modem part of the card, let’s
# load usbserial with the correct vendor
# and product ID’s so we get our usb serial devices
RUN+=”/sbin/modprobe usbserial vendor=0x19d2 product=0x0031″,
# Make users belonging to the dialout group
# able to use the usb serial devices.
#MODE=”660″, GROUP=”dialout”
MODE=”660″, GROUP=”tty”
LABEL=”ZTE_End”
Testando para ver se reconheceu
Antes de rodar o comando para reconhecer o modem, vamos rodar o comando:
# lsusb
Bus 001 Device 003: ID 19d2:2000
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Repare que na linha onde aparece o ID está 19d2:2000. Agora vamos rodar o comando para o S.O. reconhecer o modem.
# usb_modeswitch
* usb_modeswitch: tool for controlling “flip flop” mode USB devices
* Version 0.9.7 (C) Josua Dietze 2009
* Works with libusb 0.1.12 and probably other versionsLooking for target devices …
No devices in target mode or class found
Looking for default devices …
Found default devices (1)
Prepare switching, accessing device 006 on bus 002 …
Looking for active driver …
No driver found. Either detached before or never attached
Setting up communication with interface 0 …
Trying to send the message to endpoint 0×01 …
OK, message successfully sent
-> Run lsusb to note any changes. Bye
Se o resultado for parecido com este é porque provavelmente o modem foi detectado. Mas para ter certeza absoluta rode novamente o penúltimo comando.
# lsusb
Bus 002 Device 003: ID 19d2:0031
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Repare que a linha onde está escrito o ID mudou de 19d2:2000 para 19d2:0031, com este resultado quer dizer que o modem foi detectado.
Automatizando a detecção do modem
Agora vamos automatizar o processo de detecção automática do modem. Para isso vamos criar três arquivos.
– Criei o arquivo /etc/udev/rules.d/45-hotplug.rules com o conteúdo abaixo:
SUBSYSTEM==”usb”, SYSFS{idProduct}==”2000″, SYSFS{idVendor}==”19d2″, RUN+=”/sbin/modeswitch.sh”
SUBSYSTEM==”usb”, SYSFS{idProduct}==”0031″, SYSFS{idVendor}==”19d2″, RUN+=”/sbin/modeswitch-kmod.sh”
– Criei o arquivo /sbin/modeswitch.sh com o conteúdo abaixo:
#!/bin/sh
#exec 1<&- 2<&- 5<&- 7<&-
sh -c “sleep 4; /usr/sbin/usb_modeswitch” &
exit 0
– Criei o arquivo /sbin/modeswitch-kmod.sh com o conteúdo abaixo:
#!/bin/sh
/sbin/rmmod option
sh -c “sleep 4; /sbin/modprobe option” &
exit 0
Dois arquivos precisam ter permissão de execução
# chmod +x /sbin/modeswitch.sh /sbin/modeswitch-kmod.sh
Para testar se o modem será detectado ao plugar na porta usb, reinicie a máquina, rode o comando abaixo e plugue o modem na porta USB.
# tail -f /var/log/messages
Configurando o wvdial/ppp
Com tudo detectado pelo S.O vamos configurar o wvdial e o ppp. Para sabermos qual ttyUSB usaremos vamos rodar o wvdialconf.
# wvdialconf
Editing `/etc/wvdial.conf’.Scanning your serial ports for a modem.
Modem Port Scan: S0 S1 S2 S3
WvModem: Cannot get information for serial port.
ttyUSB0: ATQ0 V1 E1 — failed with 2400 baud, next try: 9600 baud
ttyUSB0: ATQ0 V1 E1 — failed with 9600 baud, next try: 9600 baud
ttyUSB0: ATQ0 V1 E1 — and failed too at 115200, giving up.
WvModem: Cannot get information for serial port.
ttyUSB1: ATQ0 V1 E1 — OK
ttyUSB1: ATQ0 V1 E1 Z — OK
ttyUSB1: ATQ0 V1 E1 S0=0 — OK
ttyUSB1: ATQ0 V1 E1 S0=0 &C1 — OK
ttyUSB1: ATQ0 V1 E1 S0=0 &C1 &D2 — OK
ttyUSB1: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 — OK
ttyUSB1: Modem Identifier: ATI — Manufacturer: ZTE INCORPORATED
ttyUSB1: Speed 9600: AT — OK
ttyUSB1: Max speed is 9600; that should be safe.
ttyUSB1: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 — OK
WvModem: Cannot get information for serial port.
ttyUSB2: ATQ0 V1 E1 — failed with 2400 baud, next try: 9600 baud
ttyUSB2: ATQ0 V1 E1 — failed with 9600 baud, next try: 9600 baud
ttyUSB2: ATQ0 V1 E1 — and failed too at 115200, giving up.
WvModem: Cannot get information for serial port.
ttyUSB3: ATQ0 V1 E1 — OK
ttyUSB3: ATQ0 V1 E1 Z — OK
ttyUSB3: ATQ0 V1 E1 S0=0 — OK
ttyUSB3: ATQ0 V1 E1 S0=0 &C1 — OK
ttyUSB3: ATQ0 V1 E1 S0=0 &C1 &D2 — OK
ttyUSB3: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 — OK
ttyUSB3: Modem Identifier: ATI — Manufacturer: ZTE INCORPORATED
ttyUSB3: Speed 9600: AT — OK
ttyUSB3: Max speed is 9600; that should be safe.
ttyUSB3: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 — OK
Found a modem on /dev/ttyUSB1.
Modem configuration written to /etc/wvdial.conf.
ttyUSB1: Speed 9600; init “ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0″
ttyUSB3: Speed 9600; init “ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0″
Nas últimas linhas em negrito ele nos mostra quais portas estão habilitadas e qual ele configurou no wvdial.conf. Neste caso ele configurou o ttyUSB1. Quase sempre a porta correta do ttyUSB é a mais alta ou seja ttyUSB3.
Após rodar o wvdialconf acrescente o que estiver diferente do meu /etc/wvdial.conf. Segue o meu:
[Dialer Defaults]
Auto DNS = on
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = AT+CGDCONT=1,”IP”,”gprs.oi.com.br”
Stupid Mode = on
Modem Type = Analog Modem
ISDN = 0
Phone = *99***1#
Modem = /dev/ttyUSB3
Username = oi
Password = oi
Baud = 9600
É necessário também criar o arquivo em /etc/ppp/peers/wvdial. Segue o meu:
hide-password
noauth
debug
/dev/ttyUSB3
115200
defaultroute
noipdefault
user “oi”
remotename oi
persist
maxfail 0
ipparam
#name wvdial
usepeerdns
A porta ttyUSB que esta configurada no /etc/wvdial.conf tem que ser igual a /etc/ppp/peers/wvdial.
Conectando na Internet
O pior já passou agora é só executar:
# wvdial
–> WvDial: Internet dialer version 1.60
–> Cannot get information for serial port.
–> Initializing modem.
–> Sending: ATZ
ATZ
OK
–> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
OK
–> Sending: AT+CGDCONT=1,”IP”,”gprs.oi.com.br”
AT+CGDCONT=1,”IP”,”gprs.oi.com.br”
OK
–> Modem initialized.
–> Sending: ATDT*99***1#
–> Waiting for carrier.
ATDT*99***1#
CONNECT
–> Carrier detected. Starting PPP immediately.
–> Starting pppd at Fri May 29 23:11:59 2009
–> Pid of pppd: 4805
–> pppd: ��o[08]�}o[08]8~o[08]
–> Using interface ppp0
–> pppd: ��o[08]�}o[08]8~o[08]
–> pppd: ��o[08]�}o[08]8~o[08]
–> pppd: ��o[08]�}o[08]8~o[08]
–> pppd: ��o[08]�}o[08]8~o[08]
–> pppd: ��o[08]�}o[08]8~o[08]
–> pppd: ��o[08]�}o[08]8~o[08]
–> pppd: ��o[08]�}o[08]8~o[08]
–> Authentication (CHAP) started
–> pppd: ��o[08]�}o[08]8~o[08]
–> pppd: ��o[08]�}o[08]8~o[08]
–> Authentication (CHAP) successful
–> pppd: ��o[08]�}o[08]8~o[08]
–> pppd: ��o[08]�}o[08]8~o[08]
–> pppd: ��o[08]�}o[08]8~o[08]
–> pppd: ��o[08]�}o[08]8~o[08]
–> local IP address 10.124.27.231
–> pppd: ��o[08]�}o[08]8~o[08]
–> remote IP address 10.64.64.64
–> pppd: ��o[08]�}o[08]8~o[08]
–> primary DNS address 200.222.0.34
–> pppd: ��o[08]�}o[08]8~o[08]
–> secondary DNS address 200.202.193.75
–> pppd: ��o[08]�}o[08]8~o[08]
–> pppd: ��o[08]�}o[08]8~o[08]
–> Script /etc/ppp/ip-up run successful
–> Default route Ok.
–> Nameserver (DNS) Ok.
–> Connected… Press Ctrl-C to disconnect
–> pppd: ��o[08]�}o[08]8~o[08]
Caso não dê este resultado, altere a porta para a outra ttyUSB que o S.O. reconheceu. No meu caso ele reconheceu a ttyUSB1 e ttyUSB3, mas somente na ttyUSB3 que o modem conectou.
Referencias: adaptado para o Ubuntu do site tecnologias.catao.eti.br