Conectando via USB no Linux

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, conseqüentemente, são baseadas em 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 como esperado. Para as distribuições antigas, onde isso ainda não acontece, você pode seguir as dicas
no final do tópico.

A configuração é similar à que fizemos anteriormente, para conectar via DUN, porém com bem menos passos, já que não precisamos mais fazer o pareamento nem configurar a porta de comunicação.

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. Ao usar o wvdial, o arquivo “/etc/wvdial.conf” fica muito similar ao usado para conectar via DUN, com apenas algumas pequenas diferenças:

[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 caso 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 o PC obtém a APN ao estabelecer a conexão.

Depois de salvar o arquivo, tente discar usando o wvdial. Com as opções que incluímos, a conexão deve passar a ser estabelecida normalmente.

# wvdial 3g

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.

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 configuraçõ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.

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, 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ê está usando um smartphone e não está conseguindo estabelecer a conexão, experimente desligá-lo, ligá-lo e tentar conectar 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.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X