Fedora + ZTE MF 626 + OI

Publicado por Alexandre Catão em 31/05/2009 na(s) categoria(s): Fedora 10, LINUX, Novidades, Tutoriais

Tags: , , , ,

Não sei o que as empresas possuem contra o Linux, é um absurdo a ZTE desenvolver drivers dos modens para o Windows/MAC e nada para Linux….
Mas para o Linux nada é impossível, graças a comunidade ativa que temos, já possuímos uma forma de conectar vários modens 3G. Desculpem o desabafo…..

Após 2 semanas lendo vários fóruns e blogs consegui instalar o modem da ZTE modelo MF626 que a OI São Paulo esta comercializando.

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 acretido que esteja bem explicado e completo. A maioria dos passos serve para outros modelos de modens e operadoras.

Pacotes necessários:

  1. usb_modeswitch - aplicativo para detectar o modem USB
  2. libusb e libusb-devel - faz o controle de dados para dispositivos USB
  3. ppp - protocolo de comunicação ponto-a-ponto
  4. 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.

1º passo - Instalando os pacotes necessários

Para saber quais pacotes estão instalados utilize o seguinte comando. 

# rpm -qa | grep libusb libusb-devel ppp wvdial usb_modeswitch

Se trouxer informação é porque o pacote está instalado. O que não obtive resposta instale usando o comando: 

# yum install nome do pacote

2º passo - Configurando o usb_modeswitch.conf

Após instalado os pacotes edite o arquivo usb_modeswitch.conf no /etc. 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″

3º passo - Criando o arquivo no udev

Copie o arquivo 15-zte-mf626.rules para /etc/udev/rules.d/

4º passo - Testando para ver se reconheceu

Antes de rodar o comando para reconhecer o modem, vamos rodar o comando:

# lsusb
Bus 002 Device 004: ID 19d2:2000 ONDA Communication S.p.A.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 002: ID 08ff:2810 AuthenTec, Inc.
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Repare que na linha onde aparece ONDA Communication 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 ONDA Communication S.p.A.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 002: ID 08ff:2810 AuthenTec, Inc.
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Repare que a linha onde está escrito ONDA Communication o ID mudou de 19d2:2000 para 19d2:0031, com este resultado quer dizer que o modem  foi detectado.

5º passo - 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 45-hotplug.rules com o conteúdo abaixo no diretório /etc/udev/rules.d

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 modeswitch.sh com o conteúdo abaixo no diretório /sbin

#!/bin/sh
#exec 1<&- 2<&- 5<&- 7<&-
sh -c “sleep 4; /usr/sbin/usb_modeswitch” &
exit 0

- Criei o arquivo modeswitch-kmod.sh com o conteúdo abaixo no diretório /sbin

#!/bin/sh
/sbin/rmmod option
sh -c “sleep 4; /sbin/modprobe option” &
exit 0

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

Terá um resultado parecido com este:

May 30 17:08:05 cataonote kernel: usb 2-1: new high speed USB device using ehci_hcd and address 4
May 30 17:08:05 cataonote kernel: usb 2-1: configuration #1 chosen from 1 choice
May 30 17:08:05 cataonote kernel: usb-storage: device ignored
May 30 17:08:05 cataonote kernel: usb 2-1: New USB device found, idVendor=19d2, idProduct=2000
May 30 17:08:05 cataonote kernel: usb 2-1: New USB device strings: Mfr=2, Product=1, SerialNumber=0
May 30 17:08:05 cataonote kernel: usb 2-1: Product: ZTE CDMA Technologies MSM
May 30 17:08:05 cataonote kernel: usb 2-1: Manufacturer: ZTE,Incorporated
May 30 17:08:09 cataonote kernel: usb 2-1: usbfs: process 18739 (usb_modeswitch) did not claim interface 0 before use
May 30 17:08:14 cataonote kernel: usb 2-1: USB disconnect, address 4
May 30 17:08:20 cataonote kernel: usb 2-1: new high speed USB device using ehci_hcd and address 5
May 30 17:08:20 cataonote kernel: usb 2-1: configuration #1 chosen from 1 choice
May 30 17:08:20 cataonote kernel: usbserial_generic 2-1:1.0: GSM modem (1-port) converter detected
May 30 17:08:20 cataonote kernel: usb 2-1: GSM modem (1-port) converter now attached to ttyUSB0
May 30 17:08:20 cataonote kernel: usbserial_generic 2-1:1.1: GSM modem (1-port) converter detected
May 30 17:08:20 cataonote kernel: usb 2-1: GSM modem (1-port) converter now attached to ttyUSB1
May 30 17:08:20 cataonote kernel: usbserial_generic 2-1:1.2: GSM modem (1-port) converter detected
May 30 17:08:20 cataonote kernel: usb 2-1: GSM modem (1-port) converter now attached to ttyUSB2
May 30 17:08:20 cataonote kernel: usbserial_generic 2-1:1.3: GSM modem (1-port) converter detected
May 30 17:08:20 cataonote kernel: usb 2-1: GSM modem (1-port) converter now attached to ttyUSB3
May 30 17:08:20 cataonote kernel: usb 2-1: New USB device found, idVendor=19d2, idProduct=0031
May 30 17:08:20 cataonote kernel: usb 2-1: New USB device strings: Mfr=2, Product=1, SerialNumber=0
May 30 17:08:20 cataonote kernel: usb 2-1: Product: ZTE CDMA Technologies MSM
May 30 17:08:20 cataonote kernel: usb 2-1: Manufacturer: ZTE,Incorporated
May 30 17:08:20 cataonote kernel: usbcore: deregistering interface driver option
May 30 17:08:20 cataonote kernel: usbserial: USB Serial deregistering driver GSM modem (1-port)
May 30 17:08:20 cataonote kernel: option1 ttyUSB3: GSM modem (1-port) converter now disconnected from ttyUSB3
May 30 17:08:20 cataonote kernel: option1 ttyUSB2: GSM modem (1-port) converter now disconnected from ttyUSB2
May 30 17:08:20 cataonote kernel: option1 ttyUSB1: GSM modem (1-port) converter now disconnected from ttyUSB1
May 30 17:08:20 cataonote kernel: option1 ttyUSB0: GSM modem (1-port) converter now disconnected from ttyUSB0
May 30 17:08:20 cataonote kernel: usb 2-1: GSM modem (1-port) converter now attached to ttyUSB0
May 30 17:08:20 cataonote kernel: usb 2-1: GSM modem (1-port) converter now attached to ttyUSB1
May 30 17:08:20 cataonote kernel: usb 2-1: GSM modem (1-port) converter now attached to ttyUSB2
May 30 17:08:20 cataonote kernel: usb 2-1: GSM modem (1-port) converter now attached to ttyUSB3
May 30 17:08:20 cataonote kernel: usbserial: USB Serial support registered for GSM modem (1-port)
May 30 17:08:20 cataonote kernel: usbcore: registered new interface driver option
May 30 17:08:20 cataonote kernel: option: USB Driver for GSM modems: v0.7.2

6º passo - 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<*1>: S0   S1   S2   S3
WvModem<*1>: Cannot get information for serial port.
ttyUSB0<*1>: ATQ0 V1 E1 — failed with 2400 baud, next try: 9600 baud
ttyUSB0<*1>: ATQ0 V1 E1 — failed with 9600 baud, next try: 9600 baud
ttyUSB0<*1>: ATQ0 V1 E1 — and failed too at 115200, giving up.
WvModem<*1>: Cannot get information for serial port.
ttyUSB1<*1>: ATQ0 V1 E1 — OK
ttyUSB1<*1>: ATQ0 V1 E1 Z — OK
ttyUSB1<*1>: ATQ0 V1 E1 S0=0 — OK
ttyUSB1<*1>: ATQ0 V1 E1 S0=0 &C1 — OK
ttyUSB1<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 — OK
ttyUSB1<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 — OK
ttyUSB1<*1>: Modem Identifier: ATI — Manufacturer: ZTE INCORPORATED
ttyUSB1<*1>: Speed 9600: AT — OK
ttyUSB1<*1>: Max speed is 9600; that should be safe.
ttyUSB1<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 — OK
WvModem<*1>: Cannot get information for serial port.
ttyUSB2<*1>: ATQ0 V1 E1 — failed with 2400 baud, next try: 9600 baud
ttyUSB2<*1>: ATQ0 V1 E1 — failed with 9600 baud, next try: 9600 baud
ttyUSB2<*1>: ATQ0 V1 E1 — and failed too at 115200, giving up.
WvModem<*1>: Cannot get information for serial port.
ttyUSB3<*1>: ATQ0 V1 E1 — OK
ttyUSB3<*1>: ATQ0 V1 E1 Z — OK
ttyUSB3<*1>: ATQ0 V1 E1 S0=0 — OK
ttyUSB3<*1>: ATQ0 V1 E1 S0=0 &C1 — OK
ttyUSB3<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 — OK
ttyUSB3<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 — OK
ttyUSB3<*1>: Modem Identifier: ATI — Manufacturer: ZTE INCORPORATED
ttyUSB3<*1>: Speed 9600: AT — OK
ttyUSB3<*1>: Max speed is 9600; that should be safe.
ttyUSB3<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0 — OK

Found a modem on /dev/ttyUSB1.
Modem configuration written to /etc/wvdial.conf.
ttyUSB1<Info>: Speed 9600; init “ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0″
ttyUSB3<Info>: 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.

Após rodar o wvdialconf acrescente o que estiver diferente do meu 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/ttyUSB1
Username = oi
Password = oi
Baud = 9600

É necessário também criar o wvdial que fica no /etc/ppp/peers. Segue o meu:

hide-password
noauth
debug
/dev/ttyUSB1
115200
defaultroute
noipdefault
user “oi”
remotename oi
persist
maxfail 0
ipparam
#name wvdial
usepeerdns

A porta ttyUSB que esta configurado no wvdial.conf tem que ser igual aqui.

7º passo - 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.

Ufa. Bom é isso pessoal, caso tenham dúvidas por favor mandem comentários. Gostaria de agradecer os blogs/fóruns e sites que utilizei com referência para configurar o modem no meu Fedora e criar este tutorial.

Referências

http://rextaclibon.blogspot.com/2009/02/fedora-zte-mf626-modem-smartbro.html
http://christiano.blog.br/2008/07/06/instalando-modem-zte-mf622-claro-3g-no-ubuntu/
http://www.vivaolinux.com.br/artigo/Configurando-modem-MF622-no-Linux-com-velocidade-superior-a-512K
http://www.draisberghof.de/usb_modeswitch/
http://forums.whirlpool.net.au/forum-replies-archive.cfm/1072789.html
http://ubuntuforum-br.org/index.php?topic=50178.0