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.
1. Configurando Modem MF622 no Linux com velocidade superior a 512K
[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 ...