Um pouco tarde aqui, mas recentemente sofri a dor de cabeça de seguir uma variedade de guias diferentes, nenhum dos quais funcionou para mim. Então, aqui está outro guia ... que provavelmente não funcionará para você;)
Eu baixei a versão mais recente da página oficial: bluez.org/download . Se essa página estiver morta, use esta .
Por exemplo, no momento em que escrevi, era 5,47, então usei (na minha framboesa):
wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.47.tar.xz
Então eu extraí e construí:
tar -xf bluez-5.47.tar.xz
cd bluez-5.47
Leia o README
! Ele lista as dependências e os comutadores de configuração:
Instale as dependências primeiro: (glib, dbus, libdbus, udev, etc.) A maioria delas já está instalada e, caso contrário, deve ser fácil de instalar, todas fornecidas pelo gerenciador de pacotes. Depois de fazer isso:
./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var
Também adicionei --enable-experimental
porque acredito que o objeto GattCharacteristics faz parte dos recursos experimentais. Então faça:
make
sudo make install
Demora talvez 10 minutos para compilar. Após a instalação, você deve encontrar
bluetoothd
no /usr/libexec/bluetooth
. Você também deve ver bluetoothd in /usr/lib/bluetooth
.
Vá para cada um desses diretórios e digite
./bluetoothd --version
Você notará que o da libexec é novo e o da lib é antigo.
O BlueZ cria esses objetos e interface d-bus para expor os dispositivos bluetooth para você de maneiras agradáveis.
A fim de se certificar de que d-bus está falando com você nova BlueZ 5,47 e não o seu antigo BlueZ 5,23, você precisa dizer systemd
para usar o novo daemon do bluetooth:
sudo vim /lib/systemd/system/bluetooth.service
Verifique se a exec.start
linha aponta para o seu novo daemon /usr/libexec/bluetooth
.
Para mim, isso não foi suficiente. Não importa o que acontecesse, ao reiniciar, sempre recebi o bluetoothd 5.23 ... Então, acabei de criar um link simbólico do antigo para o novo.
Primeiro renomeie o arquivo antigo:
sudo mv /usr/lib/bluetooth/bluetoothd /usr/lib/bluetooth/bluetoothd-543.orig
Crie o link simbólico:
ln -s /usr/libexec/bluetooth/bluetoothd /usr/lib/bluetooth/bluetoothd
sudo systemctl daemon-reload
Isso deve resolver.
Agora, tenho que dizer isso, mesmo que não seja relevante para a pergunta :
Se você deseja desenvolver um aplicativo para o seu pi, leia a pasta blueZ docs . Apresenta a você algo chamado d-bus , que realmente vale a pena aprender e permite que você desenvolva seu aplicativo em python, node.js ou c (e mais). Assista a este vídeo no bluez dev .
Existem muitos arenques vermelhos por aí: invólucros que tentam fornecer a funcionalidade "fácil". Mesmo os recursos que dizem que há uma falta de documentação sobre como desenvolver o bluetooth. No entanto, assim que você quiser fazer algo além de simplesmente se conectar ao dispositivo e visualizar suas características, perceberá que o wrapper falhará.
Faça um favor a si mesmo. Reserve algumas horas para aprender como BlueZ
funciona (o vídeo que vinculei é ouro maciço). Ele usa algo chamado d-bus. Leia um pouco sobre o d-bus. Se você gosta de Python, veja o código na pasta de teste. Leia o tutorial do python dbus uma ou duas vezes. Vai pagar tão bem. Eu perdi alguns dias tentando encontrar algo fácil, mas essa acabou sendo a melhor maneira.
Boa sorte!