Академический Документы
Профессиональный Документы
Культура Документы
Diferente dos softmodems para acesso discado, que são dispositivos burros, controlados inteiramente via software,
os modems 3G USB são dispositivos completos, que executam todas as funções via hardware e são controlados
através de comandos AT. Via de regra, todos são compatíveis com o Linux, suportados através do módulo
"usbserial" do Kernel, responsável por criar o canal de comunicação por onde são transferidos os dados.
1) Muitos modems incluem um chip de memória flash, que é usado para armazenar os drivers do Windows. Este
chip de memória flash é visto pelo sistema como um drive de CD-ROM virtual, o que faz com que o modem se
comporte como sendo dois dispositivos diferentes. Versões antigas do Kernel se confundiam com isso, detectando
apenas a memória flash e não o modem propriamente dito, um problema que pode ser resolvido através de regras
do UDEV que orientam o sistema a ignorar o drive virtual e ir direto para a detecção do modem.
2) Distribuições antigas (que usam conseqüentemente versões antigas do Kernel) não incluem os códigos de
identificação dos modems e por isso não são capazes de ativá-los automaticamente. Nesses casos precisamos
apenas especificar manualmente ao carregar o módulo.
3) Discadores como o kppp e o gnome-ppp foram originalmente desenvolvidos para usarem modems discados e
não modems 3G. Isso torna a configuração muitas vezes complicada, pois você precisa especificar as strings
corretas ao configurar, caso contrário acaba recebendo erros diversos na hora de conectar. Justamente por isso
prefiro usar o wvdial, onde você pode especificar toda a configuração diretamente.
Como pode ver, são todos problemas contornáveis. Em distribuições recentes, os passos são executados
automaticamente, de forma que o modem é detectado diretamente, como esperado. Para as distribuições antigas,
onde isso ainda não acontece, você pode seguir as dicas que veremos mais adiante.
Os modems USB são quase sempre detectados pelo sistema como "/dev/ttyUSB0", enquanto os smartphones
ligados na porta USB são geralmente vistos como "/dev/ttyACM0" mas, como de praxe, podem haver exceções. Em
caso de dúvida, você pode descobrir qual é a porta correta usando o comando "dmesg" alguns segundos depois de
plugar o modem. Entre as últimas linhas, você verá duas mensagens similares a:
[77875.428241] option 7-3:1.0: GSM modem (1-port) converter detected
[77875.428517] usb 7-3: GSM modem (1-port) converter now attached to ttyUSB0
... onde o "ttyUSB0" indica a porta usada pelo modem, dentro do diretório "/dev".
A principal dica para não ter problemas relacionados à detecção do modem é usar uma distribuição recente,
lançada a partir da segunda metade de 2008, como no caso do Ubuntu 8.10. Por utilizarem versões atualizadas do
Kernel, elas são capazes de detectar os modems diretamente, sem necessidade de configurações manuais, como
no caso das versões antigas.
Com o modem detectado, o próximo passo é configurar a conexão. A forma mais rápida de gerar a conexão é usar
o wvdial, que é um discador de modo texto, onde você pode simplesmente colocar as configurações de discagem
dentro de um arquivo de texto e chamá-lo sempre que quiser ativar a conexão. Você pode instalá-lo usando o
gerenciador de pacotes, como em:
# apt-get install wvdial
ou:
# urpmi wvdial
Em casos de problemas com a discagem, você pode experimentar remover a linha "Init3", que causa problemas
em alguns modems. Ela não é realmente necessária na maioria dos casos, pois PC obtém a APN ao estabelecer a
conexão.
Aqui vão os parâmetros de configuração para as principais operadoras (no final de 2008). As configurações mudam
conforme as operadoras atualizam suas redes, por isso não deixe de checar em caso de erro:
Vivo:
Usuário e senha: vivo/vivo
Telefone: *99#
APN: zap.vivo.com.br
Claro:
Usuário e senha: claro/claro
Telefone: *99***1#
APN: bandalarga.claro.com.br
TIM:
Usuário e senha: tim/tim
Telefone: *99# (para as conexões 3G) ou *99***1# (para os planos antigos, com EDGE)
APN: tim.br
Se por acaso você ainda estiver usando um dos planos CDMA da Vivo, o número de discagem é "#777" e o login é
o número do telefone (incluindo o código de área), seguido de um "@vivozap.com.br" como em
"1199998888@vivozap.com.br", com a senha "vivo".
Depois de salvar o arquivo, tente discar usando o wvdial. Com as opções a conexão deve passar a ser estabelecida
normalmente.
# wvdial 3g
Para a maioria dos modems essa configuração é suficiente, mas muitos modelos, como o Aiko 82D e o Huawei
E156 precisam de um conjunto de opções adicionais. Originalmente o modem chega a discar e iniciar a conexão,
mas desconecta sozinho logo depois. Para solucionar o problema, é necessário voltar ao "/etc/ppp/options" e
adicionar também as linhas "asyncmap 0xa0000", "mru 1500" e "refuse-chap" no final do arquivo.
Caso o sistema não esteja obtendo automaticamente os endereços DNS da operadora ao ativar a conexão, edite o
arquivo "/etc/ppp/options" e adicione a opção "ipcp-max-failure 30" no final do arquivo. Essa opção orienta o
discador a esperar mais tempo pelas configurações da conexão antes de desistir, dando mais tempo ao servidor
remoto.
Ele é um daqueles arquivos grandes e intimidadores, com mais de 350 linhas de opções, mas você não precisa se
preocupar com elas. Basta adicionar as linhas no final do arquivo "/etc/ppp/options", logo depois do "# ---<End of
File>---", como em:
# ---<End of File>---
asyncmap 0xa0000
mru 1500
refuse-chap
ipcp-max-failure 30
Se você não quer ter trabalho, pode usar meu script para conexão no Vivo Zap No Linux (que apesar do nome
também pode ser usado em conexões de outras operadoras) que está disponível no:
http://www.gdhpress.com.br/blog/script-vivo-zap/
Solucionando problemas
Chegamos então às dicas para ativar o modem em distribuições antigas, baseadas em versões do Kernel anteriores
à 2.6.20. Em caso de dúvidas, você pode checar a versão instalada usando o comando "uname -a".
Estes passos são necessários apenas se o modem não está sendo detectado automaticamente pelo sistema, em
distribuições atuais eles são executados automaticamente.
Para os modems Huawei 220 e 226 (os redondinhos) é necessário instalar o arquivo "huawei.tar.bz2", disponível
nohttp://oozie.fm.interia.pl/pro/huawei-e220/. Ao ser instalado, ele adiciona as regras do UDEV que são
necessárias para o sistema detectar o modem.
Se você achou a instalação do pacote complicada, outra opção é fazer o serviço você mesmo, criando o arquivo
"/etc/udev/rules.d/99-huawei.rules", com o seguinte conteúdo:
SUBSYSTEM=="block", ACTION=="add",
SYSFS{idVendor}=="12d1", SYSFS{idProduct}=="1003",
OPTIONS="ignore_device"
SUBSYSTEM=="usb", SYSFS{idVendor}=="12d1",
SYSFS{idProduct}=="1003",
RUN+="/sbin/modprobe usbserial vendor=0x12d1 product=0x1003"
Estas orientações crípticas fazem com que o sistema ignore a detecção do CD-ROM virtual (o chip de memória
flash contendo os drivers Windows) e logo em seguida carregue o módulo que dá suporte ao modem, com os
parâmetros apropriados para detectá-lo. Para que o sistema leia as novas regras sem que você precise reiniciar o
micro, use o comando:
# udevcontrol reload_rules
Depois de salvar o arquivo, desconecte o modem e reconecte novamente para que as regras façam seu papel e o
modem seja detectado, usando a porta "/dev/ttyUSB0". Espere uns 15 segundos para que o sistema tenha tempo
de ativar o modem e tente ativar a conexão.
# ./huawei.out
# wvdial 3g
Ele é um pequeno programa escrito em C que se encarrega de ativar o modem, de forma similar à regra do UDEV
que vimos a pouco (ele foi compilado para o Ubuntu 7.10, mas funciona também em algumas outras distribuições.
Para as demais é necessário baixar o código fonte e compilar manualmente).
Se você está usando o Kurumin 7 (ou outra distribuição baseada no Debian Etch) pode usar o arquivo disponível
no:http://www.gdhpress.com.br/blog/arquivos/k7/huawei.out
Para o Huawei E620 (EC325) a receita é a mesma, a única diferença é que ele utiliza o idProduct "1001" e não
"1003" como o E220, por isso modificamos o número dentro do arquivo "/etc/udev/rules.d/99-huawei.rules", que
fica:
SUBSYSTEM=="block", ACTION=="add",
SYSFS{idVendor}=="12d1", SYSFS{idProduct}=="1001",
OPTIONS="ignore_device"
SUBSYSTEM=="usb", SYSFS{idVendor}=="12d1",
SYSFS{idProduct}=="1001",
RUN+="/sbin/rmmod option; /sbin/modprobe usbserial vendor=0x12d1
product=0x1001"
Em algumas distribuições, é necessário descarregar o módulo "option" antes de carregar o usbserial para que o
modem seja detectado, por isso incluí o comando dentro do arquivo, para que ele seja executado
automaticamente.
Outro modelo muito comum é o Aiko 82D (ZTE MF622), que é usando pela Vivo, Claro e TIM:
Para ele, o procedimento é similar, mudando apenas alguns dos parâmetros usados. Crie o arquivo
"/etc/udev/rules.d/99_aiko82e.rules", com o seguinte conteúdo:
SUBSYSTEM=="block", ACTION=="add",
SYSFS{idVendor}=="19d2", SYSFS{idProduct}=="2000",
OPTIONS="ignore_device"
SUBSYSTEM=="usb",
SYSFS{idVendor}=="19d2", SYSFS{idProduct}=="0001",
RUN+="/sbin/modprobe usbserial vendor=0x19d2 product=0x0001"
Salve o arquivo, rode o comando "udevcontrol reload_rules" (como root) para ativar a nova regra e
desconecte/reconecte o modem para que ele seja detectado.
Um modelo mais recente é o Huawei E156, um dos preferidos atualmente, por ser bem menor que os modelos
anteriores, quase do tamanho de um pendrive:
No caso dele, não é necessário adicionar regras adicionais no UDEV, pois nele o chip de memória flash é opcional,
instalada através de um cartão micro-SD (o que permite que ele seja usado também como leitor de cartões. No
caso dele, você precisa apenas remover o cartão, em caso de problemas:
Graças a isso, ele é detectado diretamente pelo sistema mesmo em distribuições antigas, ativado através da porta
"/dev/ttyUSB0".
Entretanto, ele possui um conjunto de peculiaridades nos comandos AT suportados, que fazem com que ele só
funciona caso você tenha adicionado as opções "asyncmap 0xa0000", "mru 1500" e "refuse-chap" no final do
arquivo "/etc/ppp/options", como mostrei anteriormente.
Sem elas, o modem desconecta logo depois de estabelecer a conexão, dando origem aos relatos de problemas que
você pode encontrar pela web.
Se você está usando um smartphone e não está conseguindo estabelecer a conexão, experimente desligá-lo, ligá-
lo e conectá-lo novamente. Se está usando um aparelho da Nokia, certifique-se de que ele está configurado para
se conectar ao PC em modo PC suíte (a configuração vai no Conectividade > USB). Em alguns aparelhos novos,
como o E71 está disponível também o modo "Conect. PC à Internet", mas ele não funciona no Linux, diferente do
PC Suite.