Post em Destaque

BSD Day 2018 chegando

  Pessoal da área de tecnologia ou que gosta, não deixe de ir nesse evento. Será abordado muitos assuntos legais desde segurança da informação até impressão 3D e muito mais. O vento é gratuito mas quem quiser contribuir com alguma doação, pode ser feito pelo site mesmo de forma segura....

Leia mais...

Acessar o Celular Android via Bluetooth no FreeBSD

Postado por Otacílio | Categoria Dicas, FreeBSD | Dia 30-09-2012

Tags:, ,

4

 

 

Este pequeno roteiro eu realizei utilizando o adaptador Bluetooth bem Xing-Ling da imagem abaixo.

The Adaptador Bluetooth :)

 

 

 

 

 

 

 

O primeiro passo é verificar se os drivers necessários estão presentes no kernel. O meu sistema é este aqui:

FreeBSD squitch 8.3-RELEASE-p4 FreeBSD 8.3-RELEASE-p4 #22: Mon Sep 24 17:16:29 BRT 2012     [email protected]:/usr/obj/usr/src/sys/SQUITCH  i386

Nele, apenas ao plugar o adaptador na entrada USB os seguintes drivers são carregados automaticamente:

ng_ubt.ko
ng_hci.ko
ng_bluetooth.ko
ng_l2cap.ko
ng_btsocket.ko
ng_socket.ko

Verifique no seu sistema se os drivers aparecem ao plugar o adaptador USB. Você pode fazer isso utilizando o comando kldstat. Ex:

[[email protected] ota]$ kldstat

Se não for o caso do seu sistema, você pode carregar os módulos utilizando o comando kldload <nome do módulo>.  Por exemplo:

squitch# kldload ng_ubt

Caso deseje você pode também adicionar a seguinte linha

ng_ubt_load="YES"

no arquivo

/boot/loader.conf

e os seguintes drivers serão carregados no momento do boot:

ng_ubt.ko
ng_hci.ko
ng_bluetooth.ko

e os seguintes (na minha máquina) quando plugo o adaptador bluetooth:

ng_l2cap.ko
ng_btsocket.ko
ng_socket.ko

Verifique na sua máquina se os drivers estão sendo carregados. Você obviamente pode fazer uma comparação com os drivers que listei aqui. Caso esteja tendo problemas você pode dar uma olhada no handbook sobre o assunto. Note também que outros dispositivos necessitam de outros drivers como, por exemplo, os que usam o chip Broadcom BCM2033. Neste caso o handbook cobre com mais detalhes.


Após checar os drivers, ao plugar o seu dispositivo você deve ver no terminal do sistema (ou em algum terminal gráfico se digitar dmesg) algo semelhante a isso:

ugen1.2: <vendor 0x0a12> at usbus1
ubt0: <vendor 0x0a12 product 0x0001, class 224/1, rev 2.00/19.15, addr 2> on usbus1
WARNING: attempt to domain_add(bluetooth) after domainfinalize()
WARNING: attempt to domain_add(netgraph) after domainfinalize()

A mensagem contendo ubt0 é especialmente animadora, pois indica que o driver bluetooth reconheceu o seu dispositivo.

Descubra então os dispositivos bluetooth nas proximidades com o comando hccontrol:

[[email protected] ota]$ hccontrol -n ubt0hci inquiry
Inquiry result, num_responses=1
Inquiry result #0
BD_ADDR: 94:51:03:ed:dd:f6
Page Scan Rep. Mode: 0x1
Page Scan Period Mode: 0x2
Page Scan Mode: 00
Class: 5a:02:0c
Clock offset: 0x67ec
Inquiry complete. Status: No error [00]

Note que alguns dispositivos podem estar configurados para não aparecer quando uma busca é feita. Então, verifique se o seu Android está com a configuração “Detectável” habilitada.

O meu sistema responde com a seguinte para o meu celular:

[[email protected] ota]$ hccontrol -n ubt0hci inquiry
Inquiry result, num_responses=1
Inquiry result #0
    BD_ADDR: 94:51:03:ed:dd:f6
    Page Scan Rep. Mode: 0x1
    Page Scan Period Mode: 0x2
    Page Scan Mode: 00
    Class: 5a:02:0c
    Clock offset: 0x4106
Inquiry complete. Status: No error [00]

De posse do BD_ADDR você deve criar uma entrada no arquivo /etc/bluetooth/hcsecd.conf para que o dispositivo Android consiga parear com o computador. A entrada no meu caso tem:

device {
        bdaddr 94:51:03:ed:dd:f6;
        name    "GT-S5300B";
        pin     "3295";
}

Onde bdaddr foi obtido na busca de dispositivos, name é um nome dado por você, e pin é o pin que você deverá digitar no Android no momento do pareamento.

Agora como root rode os daemons que vão responder a comunicação bluetooth:

squitch# /etc/rc.d/hcsecd onestart ubt0
Starting hcsecd.
squitch# /etc/rc.d/sdpd onestart
Starting sdpd.
squitch#

Vamos então acessar o servidor de arquivos do dispositivo Android. Instale o port comms/obexapp e então execute (modificando o endereço para o seu caso, óbvio):

[[email protected] ota]$ obexapp -a 94:51:03:ed:dd:f6 -C FTRN

Uma tela solicitando o pin deve ter sido aberta no dispositivo Android. Digite o pin do campo pin da entrada device do arquivo /etc/bluetooth/hcsecd.conf correspondente ao seu dispositivo.

Pronto, agora é só aceitar o pedido para transferência de arquivos do computador e um terminal será aberto. Você pode digitar help para abrir a ajuda dos comandos. Por exemplo:

obex> help
CApability, CD, DElete, DIsconnect, Empty, GET, GETDefault, Ls, Mkdir, Put?
obex> Ls
Access    Owner    Group    Size       Modified         Name
          n/a      n/a      n/a        n/a              LOST.DIR/
          n/a      n/a      n/a        n/a              external_sd/
          n/a      n/a      n/a        n/a              DCIM/
          n/a      n/a      n/a        n/a              Android/
          n/a      n/a      n/a        n/a              Notifications/
          n/a      n/a      n/a        n/a              samsungapps/
          n/a      n/a      n/a        n/a              Mercury/
          n/a      n/a      n/a        n/a              media/
          n/a      n/a      n/a        n/a              bluetooth/
          n/a      n/a      n/a        n/a              .polarisViewer/
          n/a      n/a      n/a        n/a              Sounds/
          n/a      n/a      n/a        n/a              burstlyImageCache/
          n/a      n/a      n/a        n/a              Ringtones/
          n/a      n/a      n/a        n/a              social_cache/
          n/a      n/a      n/a        n/a              Pictures/
          n/a      n/a      n/a        n/a              WhatsApp/
          n/a      n/a      n/a        n/a              .temp/
Success, response: OK, Success (0x20)
obex>

Lista os arquivos e diretórios do aparelho. Sendo que existe um porém. Por default os arquivos não aparecem na listagem. Por exemplo:

obex> cd DCIM
Success, response: OK, Success (0x20)
obex> ls
Access    Owner    Group    Size       Modified         Name
                                                        ..
          n/a      n/a      n/a        n/a              Camera/
          n/a      n/a      n/a        n/a              .thumbnails/
Success, response: OK, Success (0x20)
obex> cd Camera
Success, response: OK, Success (0x20)
obex> ls
Access    Owner    Group    Size       Modified         Name
                                                        ..
Success, response: OK, Success (0x20)
obex>

Não mostra nenhum arquivo embora eles estejam lá. Para que você possa visualizá-los você deve ir no aplicativo do Android “Meus arquivos“, ir até a pasta, tocar no botão à esquerda do botão central do celular, clicar na combo “Mais” e escolher “Visibilidade do Bluetooth“. Então é só marcar os arquivos que você quer que apareçam na listagem e depois em “Conc.“. A listagem agora exibe:

obex> ls
Access    Owner    Group    Size       Modified         Name
                                                        ..
  R       n/a      n/a      238658     n/a              2012-09-27 22.55.16.jpg
Success, response: OK, Success (0x20)
obex>

Para baixar o arquivo é só rodar (para o arquivo do exemplo):

obex> GET 2012-09-27\ 22.55.16.jpg
238658 bytes streamed in 3 seconds (79552 bytes/sec)
Success, response: OK, Success (0x20)
obex>

Caso deseje ter um terminal no dispositivo Android execute o comando (novamente substituído o endereço, óbvio):

squitch# rfcomm_sppd -a 94:51:03:ed:dd:f6 -c 1 -t /dev/ttyp1

Aceite o pedido de conexão no Android. Abra um outro terminal e execute

squitch# chgrp users /dev/ttyp1

Em seguida (como usuário comum mesmo) execute um terminal no dispositivo criado:

[[email protected] ota]$ cu -l ttyp1

Pronto, você pode agora digitar comandos AT. Se tiver a lista de comandos AT que o Galaxy suporta por favor me envie para eu disponibilizar aqui.


Para enviar arquivos do Android para o FreeBSD diretamente pelos comandos Bluetooth do Android sem precisar conectar via terminal você deve rodar um servidor no FreeBSD na pasta que você quer que receba os arquivos. Ex:

[[email protected] ota]$ cd Downloads/
[[email protected] Downloads]$ obexapp -s
[[email protected] Downloads]$

E enviar os arquivos pelo Bluetooth do Android. Os arquivos deverão aparecer na pasta onde você rodou o servidor.


Muito mais detalhes você pode encontrar em: http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/network-bluetooth.html.


Se esta página foi útil para você, por favor, deixe um comentário.

Share Button

Comments (4)

Excelente post Otacílio e bem vindo ao BSDInfo! 🙂

Muito bom mesmo…E reforçando os votos do Gondim,. seja bem vindo…

HoHo, this is a beauty! Appreciate it!

Eѕta раgіnа me ayudο mientгas trataba ԁe сοnseguir
infοrmaсiοn ѕobre sοl .
Muy agгаdecido.

Write a comment

*