Inicial > Modem 3G > Instalar o modem ZTE MF626 da OI

Instalar o modem ZTE MF626 da OI

agosto 16, 2009

Para você que esta lendo este post não precise passar pelo mesmo apuro que eu, desenvolvi este tutorial de como configurar este modelo de modem. O tutorial é longo mas acredito que esteja bem explicado e completo. A maioria dos passos serve para outros modelos de modens e operadoras. Este tutorial serve também para o modem MF636

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

Categorias:Modem 3G