3G com modems USB Huawei 220/226 e E156, e Aiko 82D no
Linux
13 de novembro de 2008 | Autor: antonini
A compatibilidade dos modems 3G USB
no Linux é foco de dúvidas freqüentes. Alguns usuários conseguem
conectar sem praticamente nenhum esforço, enquanto outros tem
dificuldades ou simplesmente desistem antes de conseguirem conectar.
Muitas dicas sobre o tema incluem apenas um conjunto inflexível de
passos, que dá a entender que o modem não vai funcionar se tudo não
for feito exatamente como explicado. O objetivo deste tutorial é
desmistificar o tema e mostrar como ativar os modems mesmo em
distribuições antigas, onde eles não são detectados automaticamente.
Carlos E. Morimoto
12/11/2008
A primeira coisa a ter em mente é que os modems USB nada mais são do
que celulares simplificados, onde a tela, teclado e outros
componentes “não essenciais” foram removidos, deixando apenas o
rádio, o processador de sinais e outros circuitos necessários para
acessar a rede de dados. Embora as operadoras normalmente ofereçam
os planos de acesso à web sem voz apenas em conjunto com os modems
USB, nada impede que você compre apenas o chip avulso e o utilize em
qualquer aparelho que tiver em mãos.
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.
Os problemas de compatibilidade no Linux surgem devido a três
fatores simples:
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
Para usá-lo, edite o arquivo
“/etc/wvdial.conf“, seguindo este modelo:
[Dialer 3g]
Modem = /dev/ttyUSB0
Baud = 921600
DialCommand = ATDT
Check Def Route = on
FlowControl = Hardware(CRTSCTS)
Username = vivo
Password = vivo
Phone = *99#
Stupid mode = 1
Auto Reconnect = on
Auto DNS = on
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2
Init3 = AT+CGDCONT=1,”IP”,”zap.vivo.com.br”
ISDN = 0
Modem Type = Analog Modem
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
Depois de fazer as alterações, é só discar novamente, usando o
comando “wvdial 3g”.
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 no
http://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.
Outra solução é baixar o arquivo “huawei.out”, disponível no:
http://wiki.ubuntu-br.org/TimWeb
…. e executá-lo antes de discar, como em:
# ./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
Outro modelo muito comum é o Aiko 82D (ZTE MF622), que é usando pela
Vivo, Claro e TIM:
no images were found
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.
Comente: http://www.guiadohardware.net/comunidade/3g-modems/922275/