GDH Press: Blog » Script para conectar ao claro 3G via Bluetooth
 
RSS

Script para conectar ao claro 3G via Bluetooth

Publicado em 28/08/2008 – 10:26
por Carlos Morimoto

Este é um script que escrevi para ativar a conexão ao Claro 3G usando o celular como modem, via Bluetooth. Ele é destinado a quem está usando um chip de dados no aparelho para navegar.

A idéia foi fazer um script que configure a conexão de forma prática e disque usando o wvdial, de forma a funcionar sem modificações em qualquer distribuição. Para usá-lo, é necessário estar usando uma distribuição atual, com o suporte a Bluetooth ativado.

Baixe o script no: http://www.gdhpress.com.br/blog/arquivos/conectar-claro3g

O script está bem comentado, de forma que você pode ler todo o código para entender melhor o que ele faz:

#!/bin/sh
# Script escrito para uso pessoal, modifique a gosto antes de usar
# Por Carlos E. Morimoto -- http://www.gdhpress.com.br/blog/
# Antes de usar é necessário ativar o bluetooth.
# Não se esqueça de fazer o pairing com o smartphone, usando o PIN informado na linha abaixo:

pim="49557567"

# Endereço do transmissor Bluetooth do smarphone.
# Use o comando "hcitool scan" para descobrir qual é:

blueaddr="00:1B:AF:E4:AA:5B"

# Canal usado pelo DUM no smartphone.
# Use "channel 2" para telefones da Nokia
# Use "channel 1" para aparelhos de outras marcas

channel="channel 2"

# Descobre qual é o nome da máquina:
nome=`cat /etc/hostname`

echo "Use --config da primeira vez, para gerar a configuração"
echo "Use --scan para procurar outros dispositivos"; echo ""
sleep 1

if [ "$1" = "--scan" ]; then
echo "Localizando outros aparelhos com Bluetooth:"
hcitool scan
read pausa; exit 0
fi

if [ "$1" = "--config" ]; then

## Workaround para corrigir um bug do Ubuntu 7.10, que não coloca o PC em modo discoverable (descomente para ativar):
#putdiscover(){
#while [ 1 = 1 ]; do
# sudo hciconfig hci0 piscan &>/dev/null
# sleep 15
#done
#}
#putdiscover &

cat </etc/bluetooth/hcid.conf
options {
autoinit yes;
security auto;
pairing multi;
passkey "$pim";
}
device {
name "$nome";
class 0×3e0100;
iscan enable; pscan enable;
lm accept;
lp rswitch,hold,sniff,park;
}
EOF

cd /var/lib/bluetooth/??:??:??:??:??:??
sed -i -e "s/mode connectable/mode discoverable/g" config &>/dev/null
cd /

/etc/init.d/bluetooth restart
hciconfig hci0 up

echo 'rfcomm0 {' > /etc/bluetooth/rfcomm.conf
echo ' bind yes;' >> /etc/bluetooth/rfcomm.conf
echo " device $blueaddr;" >> /etc/bluetooth/rfcomm.conf
echo " $channel;" >> /etc/bluetooth/rfcomm.conf
echo " comment \"$nome\";" >> /etc/bluetooth/rfcomm.conf
echo '}' >> /etc/bluetooth/rfcomm.conf

/etc/init.d/bluetooth restart
cd /dev
ln -sf rfcomm0 mobile
cd /; sleep 1
fi

## Desativa a rota padrao atual para que seja usada a conexao 3G (use caso conecte mas não navegue)
#echo "Desativando rota padrao…"
#route del default &>/dev/null
#route del default &>/dev/null

# Certifica-se de que o transmissor bluetooth está ativado:
hciconfig hci0 down; sleep 1
hciconfig hci0 up

echo "Gerando configuracao do wvdial…"

sed -i -e "/lcp-echo-interval 30/D" /etc/ppp/options
sed -i -e "/lcp-echo-failure 4/D" /etc/ppp/options

echo '[Modem0]
Modem = /dev/rfcomm0
Baud = 921600
SetVolume = 0
DialCommand = ATDT
FlowControl = Hardware(CRTSCTS)

[Dialer claro]
Username = claro
Password = claro
Phone = *99***1#
Mode = 1
Stupid mode = 1
Auto Reconnect = on
Inherits = Modem0

[Dialer Defaults]
Modem = /dev/rfcomm0
Baud = 921600
Auto DNS = off
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init5 = AT+CGDCONT=1,"IP","claro.com.br","",0,0
ISDN = 0
Modem Type = Analog Modem
Phone = *99***1#
Username = claro
Password = claro
' > /etc/wvdial.conf

echo "discando…"
echo "Pressione Ctrl+C para encerrar a conexao"
echo "
echo 'wvdial claro'
sleep 1

wvdial claro

O script termina aqui:

exit 0

# Comandos adicionais que voce pode executar manualmente:

# Compartilha a conexao (execute como root para ativar)
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
iptables -A INPUT -p tcp -i ppp0 --syn -j DROP
iptables -A INPUT -p udp -i ppp0 --dport 1:1024 -j DROP

# Substitui o DNS do provedor
echo "nameserver 208.67.222.222" > /etc/resolv.conf
echo "nameserver 208.67.220.220" >> /etc/resolv.conf

Em resumo, o script ativa o Bluetooth, gera os arquivos de configuração necessários e ativa a conexão usando o wvdial. Dentro do script, existem alguns workarounds para problemas comuns, que você pode descomentar para ativar.

Depois de salvar o script, altere as três primeiras linhas (pim=, blueaddr= e channel=), especificando o PIN (que você informa ao fazer o pairing no smarphone), o endereço do transmissor Bluetooth do smarphone, que você descobre qual é usando o comando "hcitool scan" e o canal usado pelo DUM no smartphone, sendo que telefones da Nokia usam o canal 2 e os de outras marcas usam quase sempre o canal 1.

Em seguida, transforme-o em executável usando (como root) o:

# chmod +x conectar-claro3g

Ao executá-lo pela primeira vez, use a opção "--config", que gera a configuração inicial:

# ./conectar-claro3g --config

Devido ao uso do "echo" para escrever nos arquivos de configuração, o script precisa ser executado diretamente (não funciona se você usar o sudo). Se você usa o Ubuntu, destrave a conta de root e logue-se diretament usando:

$ sudo passwd
<senha>
$ su -
<mesma senha>

A partir da segunda vez, execute-o sem parâmetros para que ele simplesmente abra a conexão, sem fazer toda a configuração de novo:

# ./conectar-claro3g

Você pode também discar diretamente, usando o wvdial:

# wvdial claro

Se, mesmo depois de tudo configurado e revisado a conexão estiver falhando com um erro como:

--> Sending: ATZ
ERROR
ERROR
--> Bad init string.
--> Cannot get information for serial port.

… experimente desligar e ligar novamente o smartphone. Por estranho que possa parecer, travamentos no sub-sistema de comunicação serial usado no Bluetooth são extremamente comuns e são resolvidos com o bom e velho reset. Se você achava que os paus e resets eram coisa do Windows, seja bem-vindo ao fantástico mundo dos smartphones… :)

Concluindo, o script também funciona com chips da Tim, basta substituir a linha:

Init5 = AT+CGDCONT=1,"IP","claro.com.br","",0,0

por:

Init5 = AT+CGDCONT=1,"IP","tim.br","",0,0

Naturalmente, para que o script funcione é necessário que o wvdial esteja instalado. Instale-o usando o gerenciador de pacotes, como em:

# apt-get install wvdial

ou:

# urpmi wvdial

Uma dica: salve o script no cartão de memória do smartphone, assim você pode tê-lo sempre a mão caso precise conectar usando outro micro.

» Mais posts

  1. 7 respostas para “Script para conectar ao claro 3G via Bluetooth”

  2. Francisco Wesley em 28 ago, 2008

    Muito bom, já guardei o script! só uma observação no script: lá está informando que tanto aparelhos Nokia, quanto outros aparelhos, deve-se usar "channel 2", em vez de "channel 1" para estes úlitmos:

    # Canal usado pelo DUM no smartphone.
    # Use "channel 2" para telefones da Nokia
    # Use "channel 2" para aparelhos de outras marcas

  3. Carlos Morimoto em 28 ago, 2008

    Pronto, é "channel 1" para aparelhos de outras marcas

  4. Joao Goulart em 21 nov, 2008

    Prezado, pela leitura que fiz, parece que esse script é para quem usa Linux, não? Se for, vc tem uma forma de fazer o mesmo no S.O. Windows XP?

  5. eu em 18 mar, 2009

    aconselho o amigo ai rever os conseitos e mudar pra linux e parar de perder tempo em windows ai ver as vantegens de poder usar shell script e altomatizar td em seu sistema
    td mesmo!

  6. Danilo em 26 abr, 2009

    É normal a conexao da internet através do modem bluetooth cair muito?Tenho um 6120 e utilizo a Claro, ouvi algumas pessoas falando que essa seria uma ótima opção de portabilidade, mas eu só consigo utilizar a internet decentemente quando conecto via Usb. Existe alguma configuração especial ou algum macete? Isto acontece tanto no Mac Leopard quanto no Windows XP.

  7. Carlos Morimoto em 27 abr, 2009

    Eu encontrei um problema em algumas versões do Bluez-utils no Linux, onde a conexão ficava instável ao usar transmissores bluetooth com EDR (os 2.0, de 3 megabits), com sintomas similares aos seus (caía depois de alguns minutos e só reconectava depois de reiniciar o smartphone), talvez ele se aplique também a outros sistemas.
    Experimente fazer um teste usando alguns transmissor bluetooth antigo, sem EDR (os 1.2, de 1 megabit), pode ser uma solução até que saia uma atualização.

  8. leon em 19 dez, 2009

    ola carissimo marimoto voc é o cara nesse assunto! por favor ajuda ai.. quando conecto o 6120 pelo 3g claro a conexao fica inativa ou ociosa nos downloads e nos videos por streaming e de audio tambem … o que posso fazer para solucionar este problema???? um abraço


Comente: