Ative seu fone/headset bluetooth para Skype, Gizmo, VoIP no Linux
By Jeff on Jun 1, 2007 | In (GNU)Linux | 14 feedbacks »
Esses dias eu estava usando o Skype no notebook, incomodado com o fato de ou ter que dividir a conversa com toda a sala, ou ficar preso a um fone de ouvido com meio metro de fio que não permitia levar aquela longa conversa até a garrafa de café. Lembrei-me do fone bluetooth do celular, que fica inativo a maior parte do tempo, e procurei um meio de usá-lo como fone/microfone do micro.
Depois de algumas buscas e muita insistência, consegui. Já posso visitar a cozinha ou a sala ao lado enquanto falo no Skype :-). Aliás, é possível até mesmo ouvir música ou qualquer saída de audio produzida pelo micro no fone bluetooth (se você se contentar com uma audição “mono”). Não achei nenhum passo a passo que tivesse solucionado a maioria dos problemas, então resolvi descrever aqui como fiz para ativá-lo ...
Primeiro, é preciso instalar o módulo bluetooth-alsa. Ele vem com o binário btsco e o módulo propriamente dito, o snd_bt_sco. Isso claro, pressupondo que todo o stack bluetooth (bluez) já esteja instalado em seu sistema.
Follow up:
Não há pacotes de binários pré compilados do bluetooth-alsa. Mas sua instalação não é um bicho de sete cabeças. Antes de começar, certifique-se de ter instalado os pacotes necessários para compilar o módulo. São eles:
build-essential
libbluetooth2-dev (fontes do Bluez 3.5 ou mais novo)
automake
autoconf
libtool
libasound2-dev
libdbus-1-dev
libdbus-glib-1-dev
código fonte do Kernel (ou ao menos os headers)
Eu uso Kurumin como base, então a maioria desses pacotes já vem instalada ou pode ser instalada através do ícone mágico Instalar “Compiladores” e “Kernel” (Código Fonte do Kernel). Nas distribuições Debian em geral, muitos também já vêm insalados, mas na dúvida a opção é instalar direto essas dependências pelo apt-get. Os pacotes “algumacoisa-dev” são os fontes de bibliotecas que você provavelmente já usa. Automake e autoconf são usados num dos scripts de compilação do módulo. É provável que não sejam necessários (não usaremos esse script), mas, por via das dúvidas, instale.
O que pode dar um pouco mais de trabalho é o código fonte do kernel, se preciso. A maioria das distribuições já inclui os “kernel-headers”, que devem ser suficientes para a compilação do módulo btsco. Se no seu sistema os fontes (normalmente em /usr/src) não estão instalados, procure na documentação a melhor forma de instalá-los. Um “apt-get install kernel-source ou kernel-source-XXXXX” (onde XXXX é a versão so seu kernel) deverá resolver.
No Debian, uma vez que estejam instalados os compiladores necessários, teoricamente deveria ser possível instalar os fontes com apt-get install btsco-source e depois usar o module-assistant (m-a prepare, m-a a-i btsco). Mas um problema com os fontes do btsco impede que a instalação seja simples assim. Então mãos à obra.
Compiladores e bibliotecas extra instaladas, vá até:
http://sourceforge.net/project/showfiles.php?group_id=116589&package_id=150389
E baixe o arquivo btsco-0.5.tgz
Descompacte em uma pasta, via gerenciador gráfico, ou na linha de comando:
$ tar xvfz btsco-0.5.tgz
Entre na pasta btsco-0.5, e dentro dela, na kernel:
$ cd btsco-0.5
Então compile e instale o binário btsco:
$ ./configure $ make $ sudo make install
(Atenção: apenas o “make install” precisa ser como “root”)
Depois, entre na pasta kernel. Agora vamos compilar o módulo propriamente dito. Mas, antes de tudo, é necessária uma correção no arquivo “btsco.c”. É esse que dá problema ao se tentar instalar pelo método do “module assistant” no Debian... Abra-o no kedit ou no editor de texto simples de sua preferência, e, abaixo da linha:
...
# include [lt]net/bluetooth/bluetooth.h[gt]
...Acrescente:
#include [lt]linux/freezer.h[gt]Se não mudar isso, é bastante provável que receba a mensagem “Unknown symbol try_to_freeze” na hora que tentar ativar o módulo.
Então complete com os comandos:
$ make $ sudo make install $ sudo depmod -ae
Feito isso, vamos ativar o módulo:
modprobe snd-bt-sco
Agora é preciso “parear” o headset com o computador. Essa etapa prá mim, que uso o Kde, por incrível que pareça, acho a mais “misteriosa”, porque o pareamento do bluez através do Kdebluetooth não funciona bem, até hoje.
Por isso, se o seu aplicativo de pareamento está funcionando sem problemas (geralmente no Gnome), pule a etapa abaixo e faça o pareamento com ele...
Caso contrário:
Edite o arquivo kedit /etc/bluetooth/hcid.conf. Em “options {“, na parte “Security Maneger mode”, coloque, ou modifique, a linha final para:
security auto;
Depois, em “# Default PIN code for incoming connections”, comente o que estiver lá com “#” e coloque, sem o símbolo de comentário, a linha:
passkey "0000";
O “0000” é a passkey padrão dos fones de ouvido bluetooth. Eventualmente, a do seu pode ser diferente, então substitua esse valor.
Terminada a etapa do “para quem usa kdebluetooth”, o resto vale prá todos:
Certifique-se de que o stack bluetooth está rodando. Nas distribuições Debian, “sudo service bluetooth start” inicia o serviço. Eventualmente, você pode fazer o serviço carregar no boot, com “sudo chkconfig bluetooth on”.
Por garantia, inicie manualmente:
$ sudo hciconfig hci0
Então localize seu fone/headset com o comando:
$ hcitool scan
Isso deve retornar o “MAC ADDRESS” no formato “xx:xx:xx:xx:xx:xx” de seu fone. Estabeleça a conexão autenticada via passkey:
$ hcitool cc Mac_address_deseufone
Se retornar uma falha de autenticação, há erro no pareamento. Reveja as configurações de passkey ou tente seu aplicativo de pareamento (paring) novamente.
Então, ative o canal de comunicação entre o micro e o fone:
$ sudo btsco Mac_address_deseufone
Pronto. Se deu tudo certo, você terá um novo dispositivo de som disponível em seu equipamento. Alguns programas o reconhecerão como “headset”, como o Skype. Outros, como /dev/dspX (X depende da quantidade de dispositivos de som em seu micro). É possível até mesmo configurar seu player de mídia preferido para usar o headset como dispositivo de saída...
Se estiver com o bluetooth ativo na inicialização, é possível tornar as coisas mais práticas. Escrevi um pequeno script que ativa e desativa o fone bluetooth com um clique:
Crie o arquivo headset.sh, trocando o MAC ADDRESS pelo do seu fone:
#!/bin/sh
PATH=/bin:/usr/bin:/sbin:/usr/sbin
modulo=`lsmod | grep "snd_bt_sco"`
if [ -n "$modulo" ];
then
btsco -c
hcitool dc XX:XX:XX:XX:XX:XX
sleep 1
modprobe -r snd-bt-sco
exit 0
else
modprobe snd-bt-sco
hcitool cc XX:XX:XX:XX:XX:XX
btsco XX:XX:XX:XX:XX:XX [gt]/dev/null [amp]amp;
exit 1
fi
exit 2Mova-o para a pasta “/etc/init.d/”, deixando-o com permissão de executável. Crie um atalho na área de trabalho, menu, ou onde preferir, para esse arquivo, com o seguinte comando:
sudo /etc/init.d/headset.sh
Quando clicado ou acionado, ele verifica se o módulo está ativo ou não, ativando-o ou desativando quando necessário. Cuidado apenas para não desativar com o Skype ou outro programa executando e configurado para usar o headset, porque nesta situação o script não conseguirá forçar a desativação quanto o programa estiver aberto.
Referências:
http://bluetooth-alsa.sourceforge.net/build.html
http://divilinux.wordpress.com/2007/01/11/installazione-auricolare-bluetooth/
http://cmager.de/node/22
Trackback address for this post
Trackback URL (right click and copy shortcut/link location)
14 comments
Estou terminando de escrever meu artigo sobre produtividade de desktops utilizando linux e com certeza vou testar sua dica para incluir mais essa funcionalidade.
Atualmente ando pesquisando sobre bluetooth e fiz todas as configuracoes pro meu notebook e meu celular se falarem e trocarem arquivos via Bt.
Parabens e um abraco.
Fernando F.
Abraço!
# hcitool cc Mac_address_deseufone
Me aparece uma mensagem
"Can't create connection: Input/output error"
Vc tem noção do que eu estou fazendo de errado???
Dados:
Utilizo o dreamlinux 2.2 MMGL
Bluetooth Dakota 2.0
Fone Blkuetooth Logitech HS04
Muito obrigado pela atenção!!! um abraço
No comando:
# hcitool cc Mac_address_deseufone
Está trocando o "Mac_address_deseufone" pelo código XX:XX:XX:XX:XX:XX referente ao seu fone de ouvido?
(Ou seja, digitou corretamente, ANTES, o comando "sudo hciconfig hci0", e, depois, "hcitool scan", que vai fornecer o número para colocar no lugar de "Mac_address_deseufone"?)
Seguiu os passos anteriores do tutorial sem mensagens de erro? Compilou corretamente o btsco-0.5?
Abraço,
Jeff
Como eu falei no artigo, essa é justamente a parte nebulosa para mim: é o pareamento dos dispositivos. Reza a lenda que deveria abrir uma janela pedindo um PIN (uma senha que você coloca no seu computador e que é igual no fone). Pois bem: geralmente, o PIN é 0000 nos fones. Se no seu não for (só no manual dele você encontrará essa informação, aí a passkey no arquivo hcid.conf tem que ser mudada para o número certo.
Se for esse o problema, você reinicia o stack bluetooth (prá mim aqui, com debian, é o comando "# service bluetooth restart", mas tem que ver na sua distro como faz isso). E tenta de novo o "$ sudo hcitool cc ..."
Se ainda assim não der certo, aí é mesmo o bug de pareamento do bluez, que é um inferno resolver.
Mas já tenho bula prá isso também. :) Na verdade, atualizei coisas por aqui esses dias e gastei horas pra conseguir parear novamente os meus dispositivos bluetooth.
O método que funcionou prá mim é o seguinte:
1. No arquivo hcid.conf, comente a linha passkey 0000...
2. Logo abaixo, tem uma seção chamada "pin_helper". Comente o que estiver alí e acrescente, "descomentada" (#), a linha:
pin_helper passkey-agent --default /usr/bin/bluez-pin &
3. Salve e feche
Só isso já devia funcionar, mas não vai :-) Então, continuamos:
4. Apague, como root, todo o conteúdo da pasta "/var/lib/bluetooth"
5. Reinicie o stack (ou serviço) bluetooth (lembrando, prá mim é "service bluetooth restart"... Mas não faço idéia de como é aí. Mas suspeito que é a mesma coisa, já que o Dreamlinux é baseado no Debian)
6. Então, como root, numa janela do terminal, dê o comando manualmente: passkey-agent --default /usr/bin/bluez-pin (com sudo tem o mesmo efeito de root). Ele vai ficar esperando algo...
7. Em outra janela (NÃO ponha & no final do comando anterior para liberar o terminal. Abra outra tela de terminal) tente o "sudo hcitool cc ..." Parece inútil isso de não liberar, mas aqui, liberando o terminal, não funcionou...
8. Deve então aparecer uma janelinha pedindo o PIN. Coloque lá o 0000 ou a senha que estiver no manual do seu fone.
9. Se não aparecer a janelinha, refaça os itens 6 a 8 como usuário normal, e não root...
Se depois disso não resolver, eu realmente não sei como proceder ao pareamento do seu fone... E deveria ser muito mais simples, mas há o maldito bug de pareamento no bluez+pin_helper.
Somente deu pau no script, meu script naum funcionou...mas no manual, na unha foi maravilha.
Se puder me ajugar nisso.
MSG ERROR: Error: unable to set fd
Not connected.
FATAL: Module snd_bt_sco is in use.
Somente deu pau no script, meu script naum funcionou...mas no manual, na unha foi maravilha.
Se puder me ajugar nisso.
.
Depois de muita pesquisa cheguei até aqui.
Tenho um headset bluethooth stereo (sai um cabo com dois fones de ouvido), o aparelinho tem ajuste de volume, serve como controle remoto, como microfone, etc...
Uso o Ubuntu hardy e seguindo suas instruções o máximo que consegui foi usa-lo como fone de auvido com o skype porém o microfone não funciona.
O modulo snd_bt_sco não entra no boot tenho que ativá-lo depois que o sistema está montado.
Usando os comandos abaixo, veja o que acontece:
psav@MASTER:~$ sudo hciconfig hci0
hci0: Type: USB
BD Address: 11:11:11:11:11:11 ACL MTU: 672:3 SCO MTU: 48:1
UP RUNNING PSCAN ISCAN
RX bytes:8773 acl:33 sco:0 events:217 errors:0
TX bytes:1761 acl:34 sco:0 commands:113 errors:0
então desligo o headset e o ligo novamente em estado de espera e dou o comando:
psav@MASTER:~sudo hcitool scan....
é retornado o mac do headset;
dou o comando
psav@MASTER:~sudo hcitool cc mc_retornado
abre-se uma janelinha pedindo a senha; digito a senha e a conecção é estabelecida.
ou seja o meu dongle está funcionando e o headset também porém, a este comando:
psav@MASTER:~$ sudo btsco (numero do mac encontrado no escaneamento)
Error: btsco open (1-0): No such device or address
dá esse erro.
Onde foi que errei? VocÊ pode me ajudar?
Infelizmente não há erro no procedimento para o Ubuntu 8.04... Há erro NO UBUNTU 8.04. O btsco está obsoleto no kernel do novo Ubuntu e era pro bluettoth-alsa fazer isso. Porém a implementação nativa do bluetooth-alsa foi mal feita e ainda está bugada. Prá você ter uma idéia, cada vez que tento conexão (que acontece e dá tempo pra falar ou ouvir duas palavras), meu Kubuntu 8.04 aqui "mata" meu headset até que eu drene toda a bateria dele e espere uma semana... Sem brincadeira. Se não for assim, depois de uma tentativa de conexão, o headset simplesmente não volta a funcionar, parecendo estar quebrado...
This post has 14 feedbacks awaiting moderation...
Leave a comment
| « Vida curta do "quase famoso" Windows Longhorn Reloaded | Meme geek: comandos mais usados no seu Linux » |