Configurando modem MF622 no Linux com velocidade superior a 512K

Neste artigo será apresentado como configurar o modem 3G MF622, usado pela Brasil Telecom e pela Claro, no Linux. Ensina também como aplicar um patch no módulo option de modo a deixar a velocidade superior a 512K.

[ Hits: 17.073 ]

Por: Marcelo Araujo em 04/08/2008


Configurando Modem MF622 no Linux com velocidade superior a 512K



Recentemente fiz a adesão ao plano 3G de 1MB da Brasil Telecom. Junto com o plano veio o modem USB MG622 da ZTE, trata-se de um modem HSDPA/UMTS/EDGE/GPRS/GSM, ou seja, compatível com as definições 3G e 2G.

Perguntei à vendedora se suportava Linux e a resposta não me surpreendeu:

"- Apenas Windows e MAC, sr."

Coloquei no Windows e conectou normalmente. Fui pesquisar e encontrei alguns blogs nacionais e internacionais que ensinavam a configurar no Linux.

Segui o procedimento do Christiano Anderson e tudo ocorreu bem, a única diferença talvez seja o número a ser discado para a Brasil Telecom, que verificando os logs do modem no Windows, descobri que é *99***1#, apesar daquele conectar...

Conectei, porém notei que ficava mais lento no Linux. Pesquisando no Google descobri que realmente existe uma limitação usando-se o módulo usbserial generic, opção seria o módulo option do usbserial, mas para tanto seria necessário mexer no código.

Aplicando o patch

Descobri um patch do Acme para o modem ONDA. Tendo por base o artigo, adicionei três linhas no option.c, recompilei e funcionou! Agora conecto a 1MB que contratei (ao menos de madrugada quando tem menos usuários).

Meu sistema é um Ubuntu 8.04 com kernel 2.6.24-19-generic.

A seguir, um passo a passo. Observe que requer algum conhecimento de Linux...

Instale os fontes do kernel e descompacte. No Debian e afins:

# aptitude install linux-source
# cd /usr/src/
# tar jxf linux-source-2.6.24.tar.bz2


Copie o cole o texto abaixo para o arquivo option.c.patch

--- option.c.orig       2008-08-02 00:51:48.000000000 -0300
+++ option.c    2008-08-02 03:15:52.000000000 -0300
@@ -120,8 +120,11 @@
 #define BANDRICH_VENDOR_ID                     0x1A8D
 #define BANDRICH_PRODUCT_C100_1                        0x1002
 #define BANDRICH_PRODUCT_C100_2                        0x1003
+#define ZTE_VENDOR_ID                          0x19d2
+#define ZTE_PRODUCT_MF622                      0x0001

 static struct usb_device_id option_ids[] = {
+       { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622 ) },
        { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
        { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
        { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA_LIGHT) },

Copie o patch para o local onde vamos trabalhar:

# cp /caminho/onde/salvei/oArquivo/option.c.patch /usr/src/linux-source-2.6.24/drivers/usb/serial

Aplique o patch:

# cd /usr/src/linux-source-2.6.24/drivers/usb/serial
# patch -p1 option.c < option.c.patch


Vá para o raiz do kernel e recompile:

# cd /usr/src/linux-source-2.6.24/
# make oldconfig
# make


Agora basta copiar o módulo para o diretório certo:

# cd /lib/modules/2.6.24-19-generic/kernel/drivers/usb/serial
# mv option.ko option.ko.old
# cp /usr/src/linux-source-2.6.24/drivers/usb/serial/option.ko .


Modifique a linha RUN+="/sbin/modprobe usbserial vendor=0x19d2 product=0x0001" do arquivo /etc/udev/rules.d/15-zte-mf622.rules para:

RUN+="/sbin/modprobe option",

Reinicie o sistema e conecte!

Observe que os caminhos podem mudar um pouco para cada distro. O patch em questão é apenas para a versão 2.6.24 do kernel, mas basicamente adicionando-se as três linhas manualmente pode funcionar em qualquer versão.

   

Páginas do artigo
   1. Configurando Modem MF622 no Linux com velocidade superior a 512K
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Radius - Freeradius com MySQL no Debian

Redes de comunicação sem fio (Wireless)

FreeBSD + Asterisk

Conectando Ajato com Linux

Instalando o AxyFTP , o WSFTP do linux

  
Comentários
[1] Comentário enviado por netoitape em 04/08/2008 - 16:14h

Ola marujo... muito legal o topico e a dica mais ela so funciona pra claro ou pra vivo tbm ... pq tenho um modem da vivo 3g e gostaria de saber se funicona bem com ele essa sua dica camarada.

Vlws amigo se vc descobrir algo me avisa.

Parabens!

[2] Comentário enviado por marujo_fln em 04/08/2008 - 20:32h

Oi amigo, se o modem for um ZTE ou ainda o ONDA do mesmo modelo deve funcionar. Caso contrário, tente pegar o vendor id e product id com lsusb.

Observe as linhas do patch que começam com + e use como modelo.

Se quiser coloque o resultado do lsusb aqui. que adiciono as linhas ae vc testa, OK?

[3] Comentário enviado por saocubo em 06/08/2008 - 23:40h

netoitape, se o modem da Vivo for um EvDO 0eab:c893, funciona:
"http://www.vivaolinux.com.br/dica/Modems-Vivo-Flash-Zap-sem-problemas-de-reconexao-(OpenSuSE-10.2)/"

Mesmo que não seja o seu modelo, pode ser interessante fazer a experiência...

[4] Comentário enviado por juliaojunior em 07/08/2008 - 14:59h

blz, gostei e vou testar daqui a alguns dias.

[5] Comentário enviado por matrixgames em 18/08/2008 - 00:46h

meu querido como proceder no big linux pq tentei mas da erro na linha 3 na hora de aplicar o lembrando q meu kernel eh igual ao seu

[6] Comentário enviado por maiconkist em 05/09/2008 - 20:03h

Parabéns Marcelo.
Contratei o serviço da Claro há alguns dias e notei que nunca conseguia uma velocidade comparável á qual assinei. Estava pensando que talvez fosse problema no modem ou que tivessem liberado uma velocidade inferior por engano. Fui na loja e informei ao atendente e resolvemos testa a conexão no Windows, funcionou perfeitamente, na hora pensei: "o sinal da loja é melhor, por isso esta conectando á uma velocidade melhor", mas pra confirmar resolvi testar no meu note e pra minha surpresa, não conseguia velocidade superiores a 400kbps. Aí obviamente concluímos que é algum problema de configuração. Pesquisando, o seu tutorial, estou compilando o kernel neste momento e agradeço de antemão pela tua iniciativa.

Tive o mesmo problema que o matrixgames, daí adicionei as linhas na unha.

T+

[7] Comentário enviado por gabrielgpp em 03/10/2008 - 00:07h

Parabens pelo artigo Marcelo,

estava com meu modem funcionando com velocidade baixa, fiz o tutorial do site do Marcelo Araujo e nao consigo mais achar o modem, ele me dá o seguinte log: voce poderia me dar uma ajuda? Tentei achar o modem pelo gnome-ppp mas nao existe mais Obrigado:

Oct 2 23:49:12 gabriel-desktop kernel: [ 54.727442] usbcore: registered new interface driver usbserial
Oct 2 23:49:12 gabriel-desktop kernel: [ 54.727463] /build/buildd/linux-2.6.24/drivers/usb/serial/usb-serial.c: USB Serial support registered for generic
Oct 2 23:49:12 gabriel-desktop kernel: [ 54.727504] usbcore: registered new interface driver usbserial_generic
Oct 2 23:49:12 gabriel-desktop kernel: [ 54.727507] /build/buildd/linux-2.6.24/drivers/usb/serial/usb-serial.c: USB Serial Driver core
Oct 2 23:49:12 gabriel-desktop kernel: [ 54.771703] /build/buildd/linux-2.6.24/drivers/usb/serial/usb-serial.c: USB Serial support registered for GSM modem (1-port)
Oct 2 23:49:12 gabriel-desktop kernel: [ 54.771734] usbcore: registered new interface driver option
Oct 2 23:49:12 gabriel-desktop kernel: [ 54.771737] drivers/usb/serial/option.c: USB Driver for GSM modems: v0.7.1

[8] Comentário enviado por marujo_fln em 03/10/2008 - 09:24h

Oi Gabriel. parece que ele carregou normalmente. Tente reiniciar a máquina.
Apropóstio: Configurou o usb_modeswitch?

[9] Comentário enviado por gabrielgpp em 03/10/2008 - 14:29h

Pior que não ... como eu devo configurá-lo? Tinha esquecido desse detalhe...

[10] Comentário enviado por marujo_fln em 04/10/2008 - 19:05h

No artigo do Christiano mostra. O início do artigo tem o link o procedimento.

[11] Comentário enviado por marujo_fln em 16/10/2008 - 09:02h

Meu Ubuntu atualizou o Kernel e tive que recompilar. Notei que o patch não funcionava mais., então fiz um novo. que está abaixo:

>>>>>>>>>>>>>>>>>>>>>> CORTE AQUI <<<<<<<<<<<<<<<<<<<<<<<<<<<<<

--- option.c 2008-08-25 13:53:34.000000000 -0300
+++ new/option.c 2008-10-16 08:55:40.000000000 -0300
@@ -121,6 +121,9 @@
#define BANDRICH_PRODUCT_C100_1 0x1002
#define BANDRICH_PRODUCT_C100_2 0x1003

+#define ZTE_VENDOR_ID 0x19d2
+#define ZTE_PRODUCT_MF622 0x0001
+
static struct usb_device_id option_ids[] = {
{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
@@ -187,6 +190,7 @@
{ USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_500A) },
{ USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_1) },
{ USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_2) },
+ { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622 ) },
{ } /* Terminating entry */
};
MODULE_DEVICE_TABLE(usb, option_ids);

>>>>>>>>>>>>>>>>>> CORTE AQUI <<<<<<<<<<<<<<<<<<<<<<<<<<

[12] Comentário enviado por sonapan em 21/02/2009 - 15:09h

Marujo estou com o ubuntu 8.04 e kernel 2.6.24-23 tenho um modem MF622 da ZTE e com serviço de 1Mb

Estou conseguindo conectar pelo modem porem com limite de 512k tentei seguir os passos acima e já com o novo patch mas esta dando este erro!

missing header for unified diff at line 3 of patch
patching file option.c
patch: **** malformed patch at line 10: static struct usb_device_id option_ids[] = {

Por falta de conhecimento em linux não sei o que fazer a não ser solicitar um help . sabe o que poderia ser?

Desde já agradeço ...


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts