domingo, 26 de fevereiro de 2012

Modem 3G no Debia USB

Introdução

Até o momento da criação desse artigo, o modem Onda MSA110UP não é reconhecido nativamente pelas distribuições e como sempre as operadoras dizem que esse modem não é suportado pelo Linux e/ou eles não dão suporte.

Vamos primeiro entender como o Linux reconhece esse dispositivo.

Esse modem é um dispositivo "flip flop" (dispositivo múltiplo) que funciona como modem e como pendrive.

Através do comando lsusb conseguimos verificar o ID do fabricante e do produto (19d2:2000):

# lsusb
Bus 002 Device 015: ID 19d2:2000 ONDA Communication S.p.A.

Ou seja, no momento em que você pluga o dispositivo em uma porta USB, ele é reconhecido como um dispositivo de armazenamento (pendrive).

Depois de realizarmos a "troca" do dispositivo para o modo modem, o daemon do UDEV em conjunto com ModemManager disponibilizam o modem para o NetworkManager, que irá gerenciar nossa conexão.

A ferramenta USB_ModeSwitch

Como falei anteriormente, esse nosso modem é um dispositivo múltiplo, portanto precisamos usar uma ferramenta que nos permite alternar entre os modos do dispositivo. Essa ferramenta é o USB_ModeSwitch.

A maioria das distribuições já contém pacotes dessa ferramenta.

Abra um terminal como root e execute o seguinte comando (ou utilize o gerenciador de pacotes de sua preferência).

Instalação no Ubuntu (Debian Based):

# apt-get install usb-modeswitch

Instalação no Gentoo:

# emerge sys-apps/usb_modeswitch

Ainda no terminal, baixe o pacote com as informações as informações dos dispositivos múltiplos e descompacte:

# wget http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-data-20101202.tar.bz2
# tar -xf usb-modeswitch-data-20101202.tar.bz2

Agora você terá uma pasta chamada usb-modeswitch-data-20101202, copie o conteúdo para os locais corretos:

# cd usb-modeswitch-data-20101202
# cp -R usb_modeswitch.d /etc
# cp 40-usb_modeswitch.rules /lib/udev/rules.d/


Plugue novamente o modem numa porta USB, após alguns segundos ele será automaticamente reconhecido como modem.

# lsusb
Bus 002 Device 018: ID 19d2:0091 ONDA Communication S.p.A.


Repare que o ID do fabricante continua o mesmo, porém o ID do dispositivo mudou para 0091.

Agora você deve ter 4 novos dispositivos no seu /dev:

# ls -la ttyUSB* gsmmodem
lrwxrwxrwx 1 root root      7 Dez 18 16:14 gsmmodem -> ttyUSB3
crw-rw---- 1 root uucp 188, 0 Dez 18 16:14 ttyUSB0
crw-rw---- 1 root uucp 188, 1 Dez 18 16:14 ttyUSB1
crw-rw---- 1 root uucp 188, 2 Dez 18 16:14 ttyUSB2
crw-rw---- 1 root uucp 188, 3 Dez 18 16:14 ttyUSB3

O gsmmodem é só um link apontando para o dispositivo que realmente funciona como modem.

(Não feche ainda o terminal, vamos usar bastante ele)

A ferramenta ModemManager

O ModemManager é um serviço que identifica os dispositivos do modem e trabalha em conjunto com o DBus para disponibilizar o modem para outras aplicações.

Instalação no Ubuntu:

# apt-get install modemmanager

Instalação no Gentoo:

# emerge net-misc/modemmanager

O problema é que o ModemManager reconhece o dispositivo errado como porta de dados com o modem MSA110UP, então quando você tentar conectar utilizando o NetworkManager o dispositivo não vai saber o que fazer e você não irá conectar.

Para resolver isso, edite o arquivo /etc/udev/rules.d/77-mm-zte-port-types.rules. Se o arquivo existir, adicione essas duas linhas:

ATTRS{idProduct}=="0091", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
ATTRS{idProduct}=="0091", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"

Caso o arquivo não exista, cole esse conteúdo dentro de um arquivo novo:

ACTION!="add|change", GOTO="mm_zte_port_types_end"
SUBSYSTEM!="tty", GOTO="mm_zte_port_types_end"

SUBSYSTEMS=="usb", ATTRS{idVendor}=="19d2", GOTO="mm_zte_port_types_vendorcheck"
GOTO="mm_zte_port_types_end"

LABEL="mm_zte_port_types_vendorcheck"
SUBSYSTEMS=="usb", ATTRS{bInterfaceNumber}=="?*", ENV{.MM_USBIFNUM}="$attr{bInterfaceNumber}"

ATTRS{idProduct}=="0091", ENV{.MM_USBIFNUM}=="04", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
ATTRS{idProduct}=="0091", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"

LABEL="mm_zte_port_types_end" 
Assim o Udev informa o ModemManager qual é o verdadeiro dispositivo de dados, no nosso caso, o ttyUSB3.

NetworkManager e nm-applet

O NetworkManager é o serviço que controla todas as conexões de rede, tanto cabeadas como wi-fi, VPNs e móveis.

O nm-applet é uma ferramenta GUI totalmente intuitiva para gerenciar essas conexões.

Instalação no Ubuntu:

# apt-get install network-manager network-manager-gnome

Instalação no Gentoo:

# emerge net-misc/networkmanager gnome-extra/nm-applet

Após a instalação, execute o comando nm-applet. Um novo ícone irá aparecer na barra do sistema.

1) Clique com o botão direito nesse ícone e vá em "Editar Conexões"
2) Vá na Aba "Banda Larga Móvel"
3) Clique no botão "Adicionar"

Se seu modem já estiver plugado, ele deve aparecer na lista, senão, pode continuar o Assistente sem selecionar nenhum dispositivo.

Siga os passos do assistente preenchendo com os dados da sua operadora.

No final, irá aparecer um formulário com todos os dados, se desejar, altere o nome da conexão. Se quiser que a conexão seja estabelecida automaticamente quando o modem for plugado, marque a opção "Conectar Automaticamente". Finalize o assistente e pronto.

Agora você tem o modem configurado e a conexão feita.

Toda vez que você plugar o modem no seu computador, o nm-applet irá mostrar as conexões de banda larga móvel que você configurou, agora é só clicar em uma delas e sair navegando.

Considerações finais


Os procedimentos realizados aqui foram testados no Ubuntu 10.10 e Gentoo.

No caso do Ubuntu, o NetworkManager, ModemMonitor e nm-applet já vêm instalados por padrão, então você pode pular as etapas de instalação sem problemas, mas verifique sempre que você tem a última versão desses aplicativos.

Fonte: Vivaolinux (Autor: Gabriel R. Schanuel)
http://www.vivaolinux.com.br/artigo/Instalando-o-modem-Onda-MSA110UP-em-distribuicoes-Linux-que-utilizam-o-NetworkManager?pagina=1


Configuracao com wvdial:
http://www.hardware.com.br/tutoriais/3g-linux/

Outros trabalhos encontrados aqui no VOL
http://www.vivaolinux.com.br/artigo/Passos-essenciais-para-configurar-seu-modem-3G-no-Linux?pagina=8