Visite também: Currículo ·  Efetividade BR-Mac

O que é LinuxDownload LinuxApostila LinuxEnviar notícia


Kernel: Patch de brasileiro dobra a capacidade de tráfego pelos modems GSM Onda MSA501HS USB

Fazia tempo que eu não recebia material do Arnaldo Carvalho de Melo (acme Θ redhat.com) por aqui, mas sempre que recebo, é interessante. Além de ser um dos fundadores da Conectiva, ele é historicamente um dos brasileiros mais atuantes no desenvolvimento do kernel Linux, além de uma série de outras iniciativas variadas.

E desta vez não foi diferente: na sexta-feira, ele me enviou cópia da mensagem que havia enviado aos desenvolvedores do kernel, e em especial dos subsistemas USB, propondo um pequeno patch para o driver de modems GSM Onda MSA501HS USB usado em planos da TIM WEB no Brasil. Com o driver original, ele conseguia transferir 490 Kbit/s, e com o seu pequeno patch, conseguiu saturar o 1Mbit/s a que seu plano de acesso lhe dá direito.

O patch acrescenta uma vantagem extra na hora de fazer a configuração da conexão. Segundo o próprio acme, “com isto não é mais necessário passar o vendor e product id para o usbserial, o usb_modeswitch ainda é necessário, como documentado por alguém.” (leia também: Tim Web no Linux com mini modem Onda Communication MSA501HS USB)

O patch foi incluído no driver por Greg Kroah-Hartman na mesma data, e eu acreditei que valia a pena reproduzir abaixo os e-mails trocados entre eles, para ilustrar como funciona o processo. Agradeço ao acme pelo envio do material para cá, e pela contribuição – dobrar a capacidade de tráfego do dispositivo certamente pode fazer diferença pra bastante gente que usa estes mini-modems.

Este é o e-mail original, do acme para as listas relevantes:

Subject: [PATCH][OPTION]: Add id for Onda MSA501HS HSDPA modem

Hi Matthias,

Please consider adding the following USB product id to the
option GSM modem driver.

Using the generic usbserial kernel driver I can only get to
~490 Kbit/s, while when using your excellent driver I’m being able to
saturate the 1 Mbit/s bandwidth I subscribed from TIM WEB here in Brazil.

Signed-off-by: Arnaldo Carvalho de Melo

Best Regards,

- Arnaldo

diff –git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
index e7e016e..47be78b 100644
— a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -183,6 +183,7 @@ static int option_send_setup(struct usb_serial_port *port);
#define AXESSTEL_PRODUCT_MV110H 0×1000

#define ONDA_VENDOR_ID 0x19d2
+#define ONDA_PRODUCT_MSA501HS 0×0001
#define ONDA_PRODUCT_ET502HS 0×0002

#define BANDRICH_VENDOR_ID 0x1A8D
@@ -297,6 +298,7 @@ static struct usb_device_id option_ids[] = {
{ USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_E100A) },
{ USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_500A) },
{ USB_DEVICE(AXESSTEL_VENDOR_ID, AXESSTEL_PRODUCT_MV110H) },
+ { USB_DEVICE(ONDA_VENDOR_ID, ONDA_PRODUCT_MSA501HS) },
{ USB_DEVICE(ONDA_VENDOR_ID, ONDA_PRODUCT_ET502HS) },
{ USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_1) },
{ USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_2) },

Esta foi a primeira resposta do Greg Kroah-Hartman, meia hora depois:

Hm, I already added this device to the driver a few days ago, but it was
under a different section and name. I’ll go fix it up to use these
defines as that makes more sense, sorry for missing that previously.

thanks,

greg k-h

E esta foi a resposta definitiva, com o relatório de inclusão, 10 minutos depois:

This is a note to let you know that I’ve just added the patch titled

Subject: USB: OPTION: fix name of Onda MSA501HS HSDPA modem

to my gregkh-2.6 tree. Its filename is

usb-option-fix-name-of-onda-msa501hs-hsdpa-modem.patch

This tree can be found at

http://www.kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/patches/

From acme@redhat.com Fri May 16 12:07:22 2008
From: Arnaldo Carvalho de Melo
Date: Fri, 16 May 2008 15:41:40 -0300
Subject: USB: OPTION: fix name of Onda MSA501HS HSDPA modem
To: Matthias Urlichs
Cc: linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, Augusto Campos
Message-ID: <20080516184140.GA8111@ghostprotocols.net>
Content-Disposition: inline

This fixes the name of the onda MSA501HS device, I guess it is called
different things in different countries.

Signed-off-by: Arnaldo Carvalho de Melo
Signed-off-by: Greg Kroah-Hartman


drivers/usb/serial/option.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

— a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -183,6 +183,7 @@ static int option_send_setup(struct usb
#define AXESSTEL_PRODUCT_MV110H 0×1000

#define ONDA_VENDOR_ID 0x19d2
+#define ONDA_PRODUCT_MSA501HS 0×0001
#define ONDA_PRODUCT_ET502HS 0×0002

#define BANDRICH_VENDOR_ID 0x1A8D
@@ -300,13 +301,13 @@ static struct usb_device_id option_ids[]
{ USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_E100A) },
{ USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_500A) },
{ USB_DEVICE(AXESSTEL_VENDOR_ID, AXESSTEL_PRODUCT_MV110H) },
+ { USB_DEVICE(ONDA_VENDOR_ID, ONDA_PRODUCT_MSA501HS) },
{ USB_DEVICE(ONDA_VENDOR_ID, ONDA_PRODUCT_ET502HS) },
{ USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_1) },
{ USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_2) },
{ USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC680) },
{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0×6613)}, /* Onda H600/ZTE MF330 */
{ USB_DEVICE(MAXON_VENDOR_ID, 0×6280) }, /* BP3-USB & BP3-EXT HSDPA */
- { USB_DEVICE(0x19d2, 0×0001) }, /* Telstra NextG CDMA */
{ USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864E) },
{ } /* Terminating entry */
};

Patches currently in gregkh-2.6 which might be from acme@redhat.com are

usb.current/usb-option-fix-name-of-onda-msa501hs-hsdpa-modem.patch


• Publicado por Augusto Campos em 2008-05-19

Comentários dos leitores

Os comentários são responsabilidade de seus autores, e não são analisados ou aprovados pelo BR-Linux. Leia os Termos de uso do BR-Linux.

    Eitch (usuário não registrado) em 19/05/2008 às 3:09 pm

    Grande acme, um dos meus grandes ídolos! :P Parabéns pelo feito! Bom ter notícias tuas!

    O acme na RedHat??? Caraca isso que é novidade para mim, pensava que ele continuava na Mandriva. Ele, junto com o Marcelo Tosatti, mandam muito no kernel do Linux.

    Parabéns acme!!!

    FMAY (usuário não registrado) em 19/05/2008 às 4:49 pm

    — a/drivers/usb/serial/option.c
    +++ b/drivers/usb/serial/option.c
    @@ -183,6 +183,7 @@ static int option_send_setup(struct usb
    #define AXESSTEL_PRODUCT_MV110H 0×1000

    #define ONDA_VENDOR_ID 0×19d2
    +#define ONDA_PRODUCT_MSA501HS 0×0001
    #define ONDA_PRODUCT_ET502HS 0×0002

    #define BANDRICH_VENDOR_ID 0×1A8D
    @@ -300,13 +301,13 @@ static struct usb_device_id option_ids[]
    { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_E100A) },
    { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_500A) },
    { USB_DEVICE(AXESSTEL_VENDOR_ID, AXESSTEL_PRODUCT_MV110H) },
    - { USB_DEVICE(ONDA_VENDOR_ID, ONDA_PRODUCT_MSA501HS) },
    +{ USB_DEVICE_AND_INTERFACE_INFO(ONDA_VENDOR_ID, ONDA_PRODUCT_MSA501HS), 0xff, 0xff, 0xff },
    { USB_DEVICE(ONDA_VENDOR_ID, ONDA_PRODUCT_ET502HS) },
    { USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_1) },
    { USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_2) },
    { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC680) },
    { USB_DEVICE(QUALCOMM_VENDOR_ID, 0×6613)}, /* Onda H600/ZTE MF330 */
    { USB_DEVICE(MAXON_VENDOR_ID, 0×6280) }, /* BP3-USB & BP3-EXT HSDPA */
    - { USB_DEVICE(0×19d2, 0×0001) }, /* Telstra NextG CDMA */
    { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864E) },
    { } /* Terminating entry */
    };

    Arnaldo Carvalho de Melo (usuário não registrado) em 19/05/2008 às 6:26 pm

    Mais dicas:

    Instale o pacote comgt e obtenha mais informações a respeito do sinal, modem, etc:

    Informações sobre o modem:

    [root@doppio ~]# comgt -d /dev/ttyUSB2 info
    ##### Wireless WAN Modem Configuration #####
    Product text:
    ====

    Manufacturer: ONDA COMMUNICATION
    Model: MSA501HS
    Revision: MSA501M3V1.0.1B01 ODNLP671M3V1.0.0B02 1 [Nov 19 2007 10:00:00]
    IMEI: 728952759294524
    +GCAP: +CGSM,+FCLASS,+DS
    OK
    +ZUSIMR:2
    ====
    Manufacturer: ONDA COMMUNICATION
    IMEI and Serial Number: 728952759294524
    Manufacturer’s Revision:
    MSA501M3V1.0.1B01 ODNLP671M3V1.0.0B02 1 [Nov 19 2007 10:00:0
    Hardware Revision:

    Network Locked: 0
    Customisation:

    Band settings: (
    )
    APN: 1,"IP","tim.br","0.0.0.0",0,0
    ##### END #####
    [root@doppio ~]#

    Sobre o sinal:

    [root@doppio ~]# comgt -d /dev/ttyUSB2 sig
    Signal Quality: 27,99
    [root@doppio ~]#

    Agora vou dar uma olhada no umtsmon.

    Senhores, eu sei que isto também ocorre com os modems EvDO identificados como 0eab:c893, utilizados pela Vivo no serviço Vivo Flash. Nesse caso, a alteração resolve, inclusive, um problema de não se conseguir reconexão sem desligar o modem, o que foi a razão de eu ter feito a recompilação do driver Option.
    Cheguei até a postar no VOL o passo-a-passo de como eu fiz no meu openSUSE 10.2:
    http://www.vivaolinux.com.br/dicas/verDica.php?codigo=9831

    Porém, como não entendo nada de compilação (apenas sigo as “receitas de bolo”), e nem sei os nomes corretos para estes “vendor id” e “product id” (já que serve para vários modems Yiso e Kyocera), não me senti à vontade de procurar o caminho para solicitar a inclusão oficial.
    Se alguém que estiver lendo a notícia puder ajudar…

    henrique (usuário não registrado) em 19/05/2008 às 11:07 pm

    E daí se ele é brasileiro??? a contribuição dele é maior ou menor por isso? Sinceramente, não entendo porque essas notícias são consideradas relevantes.

    Considerei relevante porque dobrou a capacidade de tráfego, usando driver livre, de um modem disponível hoje no Brasil para consumidores finais.

    Acredito que, qualquer outro modem ou dispositivo que esteja usando o usbserial generic, tenha melhora no desempenho ao ter o seu ID incluído no modulo. Quando o usbserial e compilado como generic, o tratamento de fluxo de dados e desativado, conforme informado na documentação.
    Fiz uma pequisa rápida de outros modems que usam o usbserial em modo generic:
    AIKO 76E, vivo zap
    VENDOR_ID 0x19d2 (mesmo do onda)
    PRODUCT_ID 0xfffe

    Yiso u893, vivo zap
    VENDOR_ID 0x0eab
    PRODUCT_ID 0xc893

    ZTE MF622
    Igual ao Onda MSA501HS

    Portando, incluído esses IDs e desativando (não sei se e necessário) o generic, pode ser que o desempenho deles também melhore. Fiz isso no kernel 2.6.21.4 do eeepc, mas como não tenho nenhum desses modems, não sei se realmente faz diferença.

    O mérito da noticia e que, a simples inclusão dos IDs dos modems no usbserial pode melhorar em muito o desempenho. Já desconfiava que fazer isso seria melhor que usar o generic.

    EU (usuário não registrado) em 20/05/2008 às 1:29 am

    Êêêê augusto, nao aprendeu a regra de não alimentar trolls ainda?! :)

    Luiz Gustavo (usuário não registrado) em 20/05/2008 às 8:07 am

    Opa, valeu por divulgar!
    Apesar de ter certeza que por aqui a tranferência não chegará perto de 1Mbit/s é bom saber. Acompanhei de perto o “drama” do Livio Assis para fazer o modem funcionar em seu notebook e acho que ele ficará feliz com a notícia também (e com seu nome citado na referência do link, hehehe)

    Xis (usuário não registrado) em 20/05/2008 às 9:08 am

    Porra, o cara aplicar um patch no kernel linux voltado aos brasileiros não é relevante ?

    O que é relevante então ? O novo tema do Ubuntu ?

    Bah !!

    Cleber (usuário não registrado) em 20/05/2008 às 10:45 am

    Xis, deixa esse troll maldito dos infernos pra lá. O importante é que partir dessa iniciativa os usuários irão poder usufruir da funcionalidade. E que bom que foi um brasileiro que viu a necessidade de brasileiros.

    luqinha (usuário não registrado) em 20/05/2008 às 12:38 pm

    u acme ‘distrói”. quando eu crescer quero ser que nem você acme!

Este post é antigo (2008-05-19) e foi arquivado. O envio de novos comentários a este post já expirou.