Script para conectar ao claro 3G via Bluetooth

Script para conectar ao claro 3G via Bluetooth

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: https://e.cdn-hardware.com.br/static/media/press/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 0x3e0100;
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.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X