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: 16.420 ]

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

Palm na internet via Linux

Operadoras de Banda Larga com Medição de Velocidade

Certificação Digital no Linux - Apache2

Instalação do Apache, MySQL e PHP

Instalando e configurando um servidor DNS (Bind)

  
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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts