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.

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:

[CODE]$ tar xvfz btsco-0.5.tgz[/CODE]

Entre na pasta btsco-0.5, e dentro dela, na kernel:

[CODE]$ cd btsco-0.5[/CODE]

Então compile e instale o binário btsco:

[CODE]$ ./configure
$ make
$ sudo make install[/CODE]

(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:

[CODE]$ make
$ sudo make install
$ sudo depmod -ae[/CODE]

Feito isso, vamos ativar o módulo:

[CODE]modprobe snd-bt-sco[/CODE]

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:

[CODE]security auto;[/CODE]

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:

[CODE]passkey “0000”;[/CODE]

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:

[CODE]$ sudo hciconfig hci0[/CODE]

Então localize seu fone/headset com o comando:

[CODE]$ hcitool scan[/CODE]

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:

[CODE]$ hcitool cc Mac_address_deseufone[/CODE]

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:

[CODE]$ sudo btsco Mac_address_deseufone[/CODE]

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 2

Mova-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:

[CODE]sudo /etc/init.d/headset.sh[/CODE]

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