Inicial > Bluetooth > Conectar Ubuntu 9.04 com modem via Bluetooth no E63 + chip 3G da Oi

Conectar Ubuntu 9.04 com modem via Bluetooth no E63 + chip 3G da Oi

setembro 6, 2009

Como todo brinquedo novo a curiosidade sempre fica aguçada, um smartphone E63. Ele não veio com o cabo USB e resolvi testar o que tinha em mãos, o bluetooth para conectar na internet com chip 3G da Oi.

Configurar o bluetooth no smartphone:

É muito simples, vá em (Menu > Conectividade > Bluetooth), e você vai encontrar o seguinte:

Bluetooth – é onde você “Ativa” ou “Desativa” a conexão
Visibilidade do meu telefone – é melhor deixar “Visto por todos”
Nome do telefone – este é o nome que vai aparecer, usei “E63”
Modo SIM remoto – “Desativado”

Configurar o bluetooth no computador:

É mais simples ainda, basta plugar o dongle na porta USB, aguardar um momento que o ícone do bluetooth aparecera na bandeja.

Depois é só clicar com o botão direito do mouse e “Preferências”. Se o dispositivo não aparecer na lista, clique no “+” para adiciona-lo.

Não esqueça de dar um “Nome amigável” para seu bluetooth. Usei “u904-0”

Para parear basta marcar o nome do dispositivo e clicar na “Tomada” em baixo e o telefone vai perguntar se aceita a conexão

Configuração para reconhecimento do modem via bluetooth DUN:

Vamos aos passos manuais para reconhecer o smartphone como modem via Bluetooth que você pode usar em qualquer distribuição.

O primeiro passo é descobrir qual é o endereço do transmissor Bluetooth do smartphone, usando o comando:

$ hcitool scan

Scanning …
00:24:03:83:C5:00 E63

Precisamos descobrir também qual é o canal usado pelo smartphone para o acesso ao DUN. Para isso, usamos o comando:

$ sdptool search DUN

Inquiring …
Searching for DUN on 00:24:03:83:C5:00 …
Service Name: Dial-Up Networking
Service RecHandle: 0x10031
Service Class ID List:
“Dialup Networking” (0x1103)
Protocol Descriptor List:
“L2CAP” (0x0100)
“RFCOMM” (0x0003)
Channel: 4

Language Base Attr List:
code_ISO639: 0x454e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
“Dialup Networking” (0x1103)
Version: 0x0100

Como pode ver, ele devolve uma grande quantidade de informações, mas o que nos interessa é a linha “Channel”, que no caso é 4.

O passo seguinte é ativar o rfcomm, que cria um link serial entre o desktop e o smartphone, permitindo o uso do DUN. Para isso, edite o arquivo “/etc/bluetooth/rfcomm.conf“, deixando-o com o seguinte conteúdo:

rfcomm0 {
bind yes;
device 00:24:03:83:C5:00;
channel 4;
comment “E63”;
}

Note que o “00:24:03:83:C5:00” e o “E63” correspondem ao ID e ao nome do aparelho, que você obtém ao rodar o comando “hcitool scan”. É importante indicar corretamente o canal, já que sem ele o PC não consegue se conectar ao smartphone.

Continuando, dê uma olhada também no arquivo “/etc/bluetooth/hcid.conf“, onde vão as configurações gerais do Bluetooth. No Ubuntu 9.04 esse arquivo não existe então vamos cria-lo. Este é um exemplo de arquivo de configuração, que você pode usar como modelo:

options {
autoinit yes;
security auto;
pairing multi;
passkey “1234”;
}

device {
name “u904-0”;
class 0x3e0100;
iscan enable; pscan enable;
lm accept;
lp rswitch,hold,sniff,park;
}

As opções importantes aqui são as linhas “passkey” e “name”. As demais já vêm configuradas por padrão, permitindo a conexão de qualquer dispositivo.

A opção “name” determina o nome com o qual seu PC aparecerá na piconet (a rede Bluetooth). A passkey (também chamada de PIN) é um código de segurança, que você precisa fornecer na hora de conectar seu smartphone ou qualquer outro dispositivo ao PC. A passkey default é “1234” (depois de testar, não deixe de mudar para algo mais seguro).

Depois de terminar, reinicie o serviço do Bluetooth para que a configuração entre em vigor:

# /etc/init.d/bluetooth restart

Nesse ponto, o comando “rfcomm” deve mostrar algo como:

# rfcomm

rfcomm0: 00:24:03:83:C5:00 channel 4 clean

Isso indica que o link entre o PC e o smartphone foi criado com sucesso. Verifique também se o arquivo “/dev/rfcomm0” foi criado. Em alguns casos, pode ser necessário desligar e ligar o smartphone para que ele seja criado corretamente.

O próximo passo é (se já não fez anteriormente) ativar o pareamento entre o PC e o smartphone. A principal dica é que no smartphone você deve definir o PC como “Dispositivo autorizado” dentro da configuração do Bluetooth (que nos E63 vai no “Menu > Conectividade > Bluetooth > Dispositivos pareados”) depois de fazer a conexão inicial, de forma que você possa ativar a conexão quando quiser, sem precisar ficar respondendo a perguntas adicionais:

Nesse ponto, o suporte a Bluetooth já está configurado e testado, falta apenas estabelecer a conexão usando o kppp, gnome-ppp ou outro discador.

A forma mais rápida de configurar 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 configuração e chamá-lo sempre que quiser ativar a conexão.

Para usá-lo, edite o arquivo “/etc/wvdial.conf“, seguindo este modelo:

# Modelo do /etc/wvdial.conf para conexões via DUN:
[Dialer 3g]
Modem = /dev/rfcomm0
Baud = 921600
DialCommand = ATDT
FlowControl = Hardware(CRTSCTS)
Username = oi
Password = oi
Phone = *99***#
Check Def Route = on
Stupid mode = 1
Auto Reconnect = on
Auto DNS = on
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init5 = AT+CGDCONT=1,”IP”,”gprs.oi.com.br“,””,0,0
ISDN = 0
Modem Type = Analog Modem

As linhas “Modem”, “Username”, “Password” e “Phone” especificam a porta e as configurações da operadora, enquanto as linhas “Init1”, “Init2” e “Init5” especificam as strings de discagem. Estas do exemplo são as strings para conexões via Bluetooth, mas outros tipos de conexões podem utilizar strings diferentes.

Depois de salva a configuração, você precisa apenas usar o comando “wvdial 3g” (como root) quando quiser conectar. Veja só:

# wvdial 3g

–> WvDial: Internet dialer version 1.60
–> Cannot get information for serial port.
–> Initializing modem.
–> Sending: ATZ
ATZ
OK
–> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
OK
–> Sending: AT+CGDCONT=1,”IP”,”gprs.oi.com.br”,””,0,0
AT+CGDCONT=1,”IP”,”gprs.oi.com.br”,””,0,0
OK
–> Modem initialized.
–> Sending: ATDT*99***#
–> Waiting for carrier.
ATDT*99***#
CONNECT
~[7f]}#@!}!} } }2}#}$@#}!}$}%\}”}&} }*} } g}%~
–> Carrier detected. Starting PPP immediately.
–> Starting pppd at Sat Sep 5 22:54:31 2009
–> Pid of pppd: 23861
–> pppd: �o��@[�[08]�N�[08][01]
–> Using interface ppp0
–> pppd: �o��@[�[08]�N�[08][01]
–> pppd: �o��@[�[08]�N�[08][01]
–> pppd: �o��@[�[08]�N�[08][01]
–> pppd: �o��@[�[08]�N�[08][01]
–> pppd: �o��@[�[08]�N�[08][01]
–> pppd: �o��@[�[08]�N�[08][01]
–> pppd: �o��@[�[08]�N�[08][01]
–> pppd: �o��@[�[08]�N�[08][01]
–> pppd: �o��@[�[08]�N�[08][01]
–> Authentication (PAP) started
–> pppd: �o��@[�[08]�N�[08][01]
–> pppd: �o��@[�[08]�N�[08][01]
–> Authentication (PAP) successful
–> pppd: �o��@[�[08]�N�[08][01]
–> pppd: �o��@[�[08]�N�[08][01]
–> pppd: �o��@[�[08]�N�[08][01]
–> pppd: �o��@[�[08]�N�[08][01]
–> pppd: �o��@[�[08]�N�[08][01]
–> pppd: �o��@[�[08]�N�[08][01]
–> pppd: �o��@[�[08]�N�[08][01]
–> pppd: �o��@[�[08]�N�[08][01]
–> pppd: �o��@[�[08]�N�[08][01]
–> pppd: �o��@[�[08]�N�[08][01]
–> pppd: �o��@[�[08]�N�[08][01]
–> pppd: �o��@[�[08]�N�[08][01]
–> pppd: �o��@[�[08]�N�[08][01]
–> pppd: �o��@[�[08]�N�[08][01]
–> pppd: �o��@[�[08]�N�[08][01]
–> pppd: �o��@[�[08]�N�[08][01]
–> pppd: �o��@[�[08]�N�[08][01]
–> local IP address 187.43.213.162
–> pppd: �o��@[�[08]�N�[08][01]
–> remote IP address 10.6.6.6
–> pppd: �o��@[�[08]�N�[08][01]
–> primary DNS address 200.222.0.34
–> pppd: �o��@[�[08]�N�[08][01]
–> secondary DNS address 200.202.193.75
–> pppd: �o��@[�[08]�N�[08][01]
–> pppd: �o��@[�[08]�N�[08][01]
–> Script /etc/ppp/ip-up run successful
–> Default route Ok.
–> Nameserver (DNS) Ok.
–> Connected… Press Ctrl-C to disconnect
–> pppd: �o��@[�[08]�N�[08][01]

Como pode ver, o wvdial mostra todos os detalhes da conexão, o que acaba sendo útil para solucionar problemas inesperados (já que você pode ver as mensagens de erro e pesquisar sobre elas). Para encerrar a conexão, pressione Ctrl+C (apenas uma vez) e deixe que ele faça o processo normal de desconexão e restaure a rota padrão. Caso esteja curioso, o “3g” no comando para conectar especifica o nome da conexão, que é definido na linha “[Dialer 3g]”, dentro do arquivo.

Se algo der errado durante a discagem (mesmo que a configuração esteja correta), experimente reiniciar o smartphone e tentar de novo.

Pronto, conectado …, posso dizer que é funcional e a velocidade não é ruim da para navegar bem. Não testei em downloads.

O primeiro problema que notei é com a conexão que depois de um certo tempo de ociosidade desconecta e nos obriga a reconectar. Isto parece ser um problema da operadora Oi (timeout). O wvdial nas suas mensagens mostra quando isto acorre.

O segundo problema se é que pode ser chamado de problema, é a bateria do telefone que não deve durar muito mais do que duas horas.

Solução de alguns problemas que podem aparece:

conecta mas não navega

Muitas distribuições antigas (anteriores a 2008) usam uma versão bugada do wvdial, que não altera a rota padrão depois de conectado. Isso faz com que o sistema continue tentando acessar através da placa de rede (ou outra conexão já existente) em vez de acessar usando a conexão 3G, o que causa o famoso “conecta mas não navega”. Nesses casos, é necessário rodar o comando “route del default” antes de estabelecer a conexão, como em:

# route del default
# wvdial 3g

Para reconectar à rede local depois de fechar a conexão (se for o caso), use:

# /etc/init.d/networking restart

ou:

# /etc/init.d/NetworkManager restart
(no Ubuntu ou outras distribuições que usam o NetworkManager)

Conexões encerradas apos alguns segundos de inatividade (timeout)

As operadoras têm implementado um sistema de timeout, que faz com que as conexões sejam encerradas depois de alguns segundos de inatividade e restabelecidas automaticamente assim que é necessário transmitir dados. O problema é que, em áreas com muitos assinantes, o processo pode demorar alguns minutos, ou mesmo travar a conexão completamente, te obrigando a desconectar e reconectar novamente.

Uma solução simples para isso, no Linux, é usar o ping para enviar um pacote de dados a cada dois segundos, evitando que a conexão seja encerrada. Basta abrir um terminal e deixar o comando correndo enquanto estiver conectado:

$ ping -i 2 google.com

Se, por acaso, você tiver problemas de estabilidade, com a conexão caindo a cada dois minutos, abra o arquivo “/etc/ppp/options” e comente (ou remova) as linhas:

lcp-echo-interval 30
lcp-echo-failure 4

O “lcp-echo” é um pacote de controle, usado para verificar se a conexão ainda está ativa. Quando o servidor do provedor de acesso deixa de responder, o discador presume que a conexão foi perdida e desconecta automaticamente.

Compartilhamento e segurança

Se estiver preocupado com a segurança, você pode ativar um firewall simples para bloquear tentativas de conexão vindas da Internet adicionando os comandos:

iptables -A INPUT -p tcp -i ppp0 –syn -j DROP
iptables -A INPUT -p udp -i ppp0 –dport 1:1024 -j DROP

… no final do arquivo “/etc/ppp/ip-up“.

Se quiser compartilhar a conexão com outros micros ligados em rede com o primeiro (você pode criar uma rede ad-hoc, usando a placa wireless, e assim compartilhar a conexão rapidamente com os amigos, por exemplo), adicione as três linhas abaixo no mesmo arquivo:

modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

O arquivo “/etc/ppp/ip-up” é executado automaticamente pelo sistema quando a conexão é ativada. Dessa forma, ao colocar os comandos no final do arquivo, o firewall e/ou o compartilhamento passa a ser ativado automaticamente sempre que você ativa a conexão. Você pode também executá-los de forma avulsa diretamente no terminal.

referencia: Smartphones, Guia Prático (Morimoto)

Categorias:Bluetooth
  1. Romulo
    fevereiro 2, 2010 às 4:47 pm

    Amigo, achei muito interessante esse tuto, porem sou adepto do Windows, saberia informar se é possivel fazer isso com SO da Microsoft?
    Possuo um e63 tambem, e teria a liberdade de não usar o cabo.

    Obrigado!

  1. No trackbacks yet.
Comentários encerrados.