Modems Vivo Flash/Zap sem problemas de reconexão (OpenSuSE 10.2)

Publicado por Pedro Soares da S. Santos em 07/02/2008

[ Hits: 6.171 ]

 


Modems Vivo Flash/Zap sem problemas de reconexão (OpenSuSE 10.2)



Depois de algumas "garimpadas", descobri que é possível obter total rendimento do modem que usa o chipset 0eab:c893 no Linux. Possuo o Yiso S893V (Vivo Flash) e acredito que esta dica sirva para todos os modems que utilizem este mesmo chipset.

Apesar de eu ser completamente leigo no assunto, é incrível o que se consegue fazer visitando os fóruns da Comunidade.

Em uma primeira fase, havia descoberto que não se deve carregar o driver genérico "usbserial", pois, de acordo com seu próprio autor, ele não serve para estes dispositivos. Em vez disso, deve-se usar um "mini-driver" de alto desempenho:
Depois descobri um problema de reconexão similar nos modems "Anydata" (em inglês):
E, utilizando o módulo "Option" da dica acima, voilá! Funcionou corretamente!

No openSUSE 10.2 tive de recompilar o módulo para que ele reconhecesse o hardware. O fiz adaptando uma dica similar para o módulo "Airprime":
Os passos que segui foram:

1. Antes de tudo, desconectar o modem, desativar definitivamente qualquer automação para o driver "Usbserial" e ter instalado:
  • kernel-syms
  • kernel-source
  • glibc-devel
  • make
  • gcc

2. Copiar o código original do driver um para arquivo de becape:

cp /usr/src/linux/drivers/usb/serial/option.c \
/usr/src/linux/drivers/usb/serial/option.c.orig


3. Alterar o arquivo "option.c", que continua existindo, nos seguintes pontos:

(Personalizei a versão - a original neste caso é "v0.7.1":)

De:

#define DRIVER_VERSION "v0.7.1"

Para:
#define DRIVER_VERSION "v0.7.1-VOLteste"

(Incluí o código de fabricante)

Depois de:

/* Vendor and product IDs */

Incluir:
#define VFLASH_VENDOR_ID      0x0EAB

(Incluí o código de produto)

Como último texto antes da linha em branco que precede:

static struct usb_device_id option_ids[]

Incluir:
#define VFLASH_PRODUCT_ID               0xC893

(Acrescentei o dispositivo nas funções)

Depois de:

'static struct usb_device_id option_ids[] = {'

Incluir:
       { USB_DEVICE(VFLASH_VENDOR_ID, VFLASH_PRODUCT_ID) },'

Depois de:

'static struct usb_device_id option_ids1[] = {'

Incluir:
       { USB_DEVICE(VFLASH_VENDOR_ID, VFLASH_PRODUCT_ID) },'

E, para identificá-lo corretamente:

Em:

GSM modem (1-port)

Para:
GSM/CDMA modem

Com o arquivo alterado, entrar no diretório do fonte:

# rm -f option.ko

# make cloneconfig
# make modules_prepare
# cd $sdir/drivers/usb/serial/
# make -C /lib/modules/`uname -r`/build M=`pwd`
# depmod -ae

Correndo tudo bem, ao conectar o modem ele é automaticamente reconhecido.

Porém, ao atualizar o kernel, devem-se repetir todos os passos. Cheguei a criar um shell-script para isso, mas ainda não pude testá-lo.

Esta é minha primeira dica, e espero que seja de valia para a comunidade. É claro que comentários, principalmente informando sobre como se fazer o passo a passo em outras distros, seriam muito bem vindos!

Abraços.

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Baixando conteúdo de alguns sites usando wget

Anti-Microsoft

Habilitando retorno de página no Firefox com Backspace

Bloqueando página inicial do Hotmail após acessar MSN

Mozilla Firefox Nightly - Instalação fácil no Ubuntu

  

Comentários
[1] Comentário enviado por saocubo em 24/02/2008 - 10:11h

Correção:
No último passo, a ordem correta dos comandos é:

#cd /usr/src/linux
# make cloneconfig
# make modules_prepare

# cd drivers/usb/serial/
# rm -f option.ko
# make -C /lib/modules/`uname -r`/build M=`pwd`

# depmod -ae

Eu havia utilizado para esta dica uma versão mais antiga do script que estou criando.

[2] Comentário enviado por wgdesigner em 28/08/2008 - 17:20h

teria como fazer isso no fedora já que no mesmo não consegui achar o arquivo option.c ? desde já agradeço

[3] Comentário enviado por saocubo em 29/08/2008 - 20:21h

wgdesigner
O arquivo faz parte dos fontes do Kernel. Seu pacote kernel-sources está instalado?
Caso esteja, acredito que a localização dele no Fedora seja a mesma do openSUSE:
/usr/src/linux/drivers/usb/serial/
Mas atenção: /usr/src/linux é uma ligação simbólica para o diretório
/usr/src/linux-sua.versão.do.kernel-em.uso
Eu já sofri com este detalhe...

[4] Comentário enviado por saocubo em 25/06/2009 - 04:15h

** A título de informação: Desde 11/12/2008 Greg Kroah-Hartman incluiu os ids dos modems Yiso no "driver" option. Portanto, se você usa "Kernel" igual ou superior ao 2.6.27 em qualquer distro, pode desconsiderar esta dica. Nesse caso seu modem será reconhecido automaticamente com todas as vantagens que a alteração aqui descrita fornecia em relação ao paliativo com o "driver" Usbserial.

E mais: troquei meu modem S893v por um HSDPA (MF626 da ZTE). Portanto: águas passadas ;-).



Contribuir com comentário