domingo, 17 de janeiro de 2010

Acessando a internet no Palm Centro via rede Bluetooth Linux

Depois de muito bater a cabeça consegui fazer a tal da rede Bluetooth funcionar para compartilhar minha banda larga e acessá-la no palm!!!

Estou usando um desses adaptadores baratinhos que vendem por ai. O meu é esse aqui (saída do lsusb):

Bus 002 Device 003: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)

Eu utilizo o Slackware 13. Bem, abaixo segue basicamente o que fiz:

1) Após plugar o adaptador, ele foi reconhecido e carregou os módulos necessários (Santo udev / hal).

2) Editei o arquivo /etc/bluetooth/hcid.conf e editei o valor dos parâmetros abaixo:

- passkey: Senha de pareamento dos dispositivos que irão conectar no PC
- name: Nome que teoricamente deveria ser atribuído ao disposito. No meu caso, ele ficou com um nome bizarro ("D142189D7AD6417"). Não quis me preocupar com isso no momento.

3) Depois disso, iniciei o serviço do Bluetooth (estou usando o BlueZ 3.36, que veio na instalação do Slack13)

4) A saída do hciconfig resultou na saída abaixo:

hci0: Type: USB
BD Address: 00:18:E4:0B:C8:41 ACL MTU: 192:8 SCO MTU: 64:8
UP RUNNING PSCAN ISCAN
RX bytes:959 acl:0 sco:0 events:27 errors:0
TX bytes:364 acl:0 sco:0 commands:27 errors:0

5) No PALM Centro, ativei o Bluetooth e mandei listar dispositivos para adicionar como confiáveis. Meu PC era listado, mas eu não conseguia de jeito nenhum parear, pois ele sempre falhava após digitar a passkey definida (exibia a mensagem "Não foi possível adicionar D142189D7AD6417 a lista de dispositivos confiáveis".

6) Bati a cabeça com isso, não conseguia fazer parear de jeito nenhum. Resolvi então testar no Windows, para ver como ele se comportava. Instalei o driver e o programa "Bluesolei" que vem junto do CD de instalação (bem na verdade tive que baixar, pois o meu quebrou na entrega...)

La acontecia a mesma coisa: Eu conseguia detectar o PC no PALM (com aquele mesmo nome bizarro apesar de eu ter trocado o nome) mas na hora de autenticar... nada. Fuçando as opções, achei uma caixa de seleção chamada "Encrypt data". Marquei ela e tentei de novo e consegui parear (somente desabilitando aquele lance de bolinha e tracinho do PALM que ficam trocando o que você digitou por outros caracteres; Até então achei que fosse algum recurso de inibição de senha somente).

7) Vendo que funcionou assim, voltei ao Linux e vi que pelo comando hciconfig eu conseguia habilitar a criptografia assim como fiz no Windows. Então digitei o comando:

hciconfig hci0 encrypt

Ao lista novamente o dispositivo apareceram as informações "AUTH" e "ENCRYPT"

hci0: Type: USB
BD Address: 00:18:E4:0B:C8:41 ACL MTU: 192:8 SCO MTU: 64:8
UP RUNNING PSCAN ISCAN AUTH ENCRYPT
RX bytes:2868 acl:7 sco:0 events:89 errors:0
TX bytes:735 acl:8 sco:0 commands:53 errors:0

8) Tentei parear novamente a partir do PALM e consegui! O PC foi adicionado a lista de dispositivos confiáveis

9) O próximo passo foi configurar a rede bluetooth. Para isso, fiz o seguinte:

9.1) Editei o arquivo /etc/rc.d/rc.bluetooth.conf e troquei o valor dos seguintes parâmetros:

# Habilita as conexões ppp vindas do PALM
DUND_ENABLE=true

# Define as opções do pppoe.
DUND_OPTIONS="--listen --msdun --channel 1 192.168.0.104:192.168.0.105"

Note nesse último parâmetro há dois IPs separados por dois pontos. O primeiro é o IP que será atribuido a conexão ppp (no linux). O segundo é o que será atribuido ao PALM.

9.2) Reiniciei o serviço do Bluetooth

/etc/rc.d/rc.bluetooth restart

9.3) Ativei o forward (para que o PC repasse as requisições vindas do PALM)

echo '1' > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i ppp0 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

10) Como resultado disso tudo, obtive o seguinte:

# Dispositivo ativo conforme saída do comando hciconfig
hci0: Type: USB
BD Address: 00:18:E4:0B:C8:41 ACL MTU: 192:8 SCO MTU: 64:8
UP RUNNING PSCAN ISCAN AUTH ENCRYPT
RX bytes:3487 acl:7 sco:0 events:105 errors:0
TX bytes:1061 acl:8 sco:0 commands:69 errors:0

# Daemons rfcomm, hcid e dund em execução:
ps -ef | egrep "(dund|hcid|rfco)" | grep -v grep
root 2719 2 0 10:54 ? 00:00:00 [krfcommd]
root 4279 1 0 14:59 ? 00:00:00 /usr/sbin/hcid -s -f /etc/bluetooth/hcid.conf
root 4283 1 0 14:59 ? 00:00:00 /usr/bin/dund --listen --msdun --channel 1 192.168.0.104:192.168.0.105

11) Parti para a configuração do PALM Centro. Primeiro criei uma nova conexão Bluetooth, conforme abaixo.

11.1) Acessei no menu "Pref" e dentro dele "Conexão" e criei uma nova, conforme abaixo:

11.1.1) Em "Nome" digitei "btooth" (apenas para identificação da conexão)

11.1.2) Em "Conectar a" escolhi "PC"

11.1.3) Em "Via" escolhi "Bluetooth"

11.1.4) Dei um toque em "Dispositivo: Toque para detectar" e selecionei o dispositivo listado relacionado ao meu PC (no meu caso aquele nome esquisito) e cliquei em OK, e novamente em OK na tela anterior.

11.1.5) Por fim, toquei em "Opções" e alterei a velocidade para "115.200 bps"

11.2)
Acessei no menu "Pref" e dentro dele "Rede" e criei uma nova, conforme abaixo:

11.2.1) Em "Serviço" digitei "rede_btooth"

11.2.2) Em "Conexão" escolhi "btooth" ( O nome que eu havia informado em 11.1.1)

11.2.3) Fui em "detalhes", depois em "avançado" e fiz o seguinte:

11.2.3.1) Deixei marcada a caixa "Endereço IP: Automático"

11.2.3.2) Desmarquei a caixa "Consultar DNS" e preenchi os campos "DNS primário" e DNS secundário" com os mesmos que uso no PC. Para saber quais eram, consultei o arquivo /etc/resolv.conf no linux.

11.2.4) Cliquei nos "oks" até voltar para tela com o nome do Serviço e da Conexão Utilizada. Dai cliquei em "Conectar". Surgiu um aviso que eu deveria me conectar a internet para concluir a solicitação (só para inglês ver - Ele não usa a rede GPRS/EDGE nesse ponto, até porquê nem créditos eu tinha :) ). Escolhi "Sim". Segundos de tensão e... conectado! :)

12) Agora era testar a conexão. Abri o Blazer e tentei abrir uma página. Ele me pediu para ligar o telefone. Fiz isso e conseguir navegar!!!

Obviamente que não cheguei a conclusão disso tudo sozinho. Consultei bastante na internet. Segue alguns links que me serviram de referência:

#

Internet Access via Bluetooth on Linux


# Conectando TREO 680 via Bluetooth na internet local do PC (Windows)

#
Configure a linux PC as a bluetooth access point for a palm

# Bluetooth in Slackware HOWTO

Agradeço as pessoas que tiveram a boa vontade de compartilhar as informações acima!

Um comentário: