quarta-feira, 20 de agosto de 2008

Usando internet 3G no Linux

Esta semana eu estava tentando instalar o modem 3G da Claro (Huawei E226) no Linux (Ubuntu, no Live CD) na casa da "patroa" segundo este artigo.

Tentei algumas vezes e nada de funcionar, então de repente funcionou! Então, quando descobri qual o problema, resolvi compartilhar a solução.

Primeiro, vamos conferir se o driver da usb está correto:

prompt:-> lsmod | grep usbserial

Nas versões mais novas de Linux, já está tudo certo.

Agora, copia-se o arquivo abaixo (wvdial.conf) no diretório /etc/


[Dialer Defaults]
Carrier Check = off
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Password = claro
Ask Password = 0
Check Def Route = 1
Phone = *99***1#
Idle Seconds = 0
Modem Type = Analog Modem
Stupid Mode = 1
Compuserve = 0
Baud = 460800
Auto DNS = off
Dial Command = ATDT
Modem = /dev/ttyUSB0
ISDN = 0
Username = claro

[Dialer claro3g]
Stupid Mode = on
Password = claro
Auto Reconnect = off
Username = claro
Phone = *99***1#

************Fim de arquivo***********

Agora copia-se o arquivo abaixo (resolv.conf.bkp) também no diretório /etc/


nameserver 200.255.121.39
nameserver 200.169.117.14

************Fim de arquivo***********

O primeiro arquivo configura o wvdial (discador) e o segundo serve para definir os endereços DNS a serem usados pelo modem (durante a conexão).

Agora deve-se dar o comando:

prompt:-> wvdial -C /etc/wvdial.conf

A saída deste comando deve ser:

WvDial<*1>: Initializing modem.
WvDial<*1>: Sending: ATZ
WvDial Modem<*1>: ATZ
WvDial Modem<*1>: OK
WvDial<*1>: Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
WvDial Modem<*1>: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
WvDial Modem<*1>: OK
WvDial<*1>: Modem initialized.
WvDial<*1>: Sending: ATDT*99***1#
WvDial<*1>: Waiting for carrier.
WvDial Modem<*1>: ATDT*99***1#
WvDial Modem<*1>: CONNECT
WvDial<*1>: Carrier detected. Starting PPP immediately.
WvDial: Starting pppd at Fri Jan 25 22:26:07 2008
WvDial: Pid of pppd: 5714
WvDial<*1>: Using interface ppp0
WvDial<*1>: local IP address 10.124.107.15
WvDial<*1>: remote IP address 10.64.64.64
WvDial<*1>: primary DNS address 10.11.12.13
WvDial<*1>: secondary DNS address 10.11.12.14

************Fim da saída***********

Por fim, deve-se dar o comando:

prompt:-> cat /etc/resolv.conf.bkp > /etc/resolv.conf

E pronto está funcionando.

O problema que eu estava tendo era que cada vez que se faz a chamada do wvdial, o arquivo /etc/resolv.conf volta ao que era antes, assim desconfigurando os endereços DNS.

Deve atentar para dar o comando cat /etc/resolv.conf.bkp > /etc/resolv.conf apenas quando o wvdial terminar de exibir a saída (com a apresentação do 2o endereço DNS).

Eu fiz um script shell para automatizar o processo (admitindo que os arquivos wvdial.conf e resolv.conf.bkp estão no diretório /etc/):


# arquivo Internet3G.sh

# abre o wvdial
wvdial -C /etc/wvdial.conf

# espera um tempo para o wvdial terminar o setup
sleep 30

# configura o arquivo que contém os endereços DNS
cat /etc/resolv.conf.bkp > /etc/resolv.conf

************Fim de arquivo***********

Obs.: Agora é só descobrir como desativar o modem.

Um comentário:

Alex Carneiro disse...

O tempo de espera de 30s (no comando sleep 30 foi obtido empiricamente, então fica a relação de compromisso, quem tiver um computador melhor pode colocar menos tempo, quem ainda usar um 386 é bom botar logo 1 ou 2 minutos (estou brincando, sei que o linux é capaz de fazer em 40s, mesmo em um 386 ou anterior).