Un poco tarde aquí, pero recientemente sufrí el dolor de cabeza de seguir una variedad de guías diferentes, ninguna de las cuales funcionó para mí. Así que aquí hay otra guía ... que probablemente no funcione para ti;)
Descargué la versión más reciente de la página oficial: bluez.org/download . Si esa página está muerta, use esta en su lugar.
Por ejemplo, al momento de escribir era 5.47, así que usé (en mi frambuesa):
wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.47.tar.xz
Luego lo extraje y lo construí:
tar -xf bluez-5.47.tar.xz
cd bluez-5.47
Lee el README
! Enumera las dependencias y los modificadores de configuración:
Instale primero las dependencias: (glib, dbus, libdbus, udev, etc.) La mayoría de ellas ya están instaladas y, de lo contrario, deberían ser fáciles de instalar, todas provistas por el administrador de paquetes. Una vez que hayas hecho eso:
./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var
También agregué --enable-experimental
porque creo que el objeto GattCharacteristics es parte de las características experimentales. Entonces hazlo:
make
sudo make install
Se tarda unos 10 minutos en compilar. Después de la instalación, debería encontrar
bluetoothd
en /usr/libexec/bluetooth
. También deberías ver bluetoothd en /usr/lib/bluetooth
.
Vaya a cada uno de estos directorios y escriba
./bluetoothd --version
Notarás que el de libexec es nuevo y el de lib es viejo.
BlueZ crea estos objetos e interfaces d-bus para exponerle los dispositivos bluetooth de manera agradable.
Para asegurarte de que d-bus te está hablando a ti nuevo BlueZ 5.47 y no a tu viejo BlueZ 5.23, debes decirle systemd
que uses el nuevo bluetooth daemon:
sudo vim /lib/systemd/system/bluetooth.service
Asegúrate de que la exec.start
línea apunte a tu nuevo demonio /usr/libexec/bluetooth
.
Para mí, eso no fue suficiente. No importa qué, al reiniciar siempre obtuve bluetoothd 5.23 ... Así que acabo de crear un enlace simbólico del antiguo al nuevo.
Primero cambie el nombre del archivo antiguo:
sudo mv /usr/lib/bluetooth/bluetoothd /usr/lib/bluetooth/bluetoothd-543.orig
Crea el enlace simbólico:
ln -s /usr/libexec/bluetooth/bluetoothd /usr/lib/bluetooth/bluetoothd
sudo systemctl daemon-reload
Deberias hacer eso.
Ahora, tengo que decir esto, aunque no sea relevante para la pregunta :
Si desea desarrollar una aplicación para su pi, lea la carpeta blueZ docs . Le presenta algo llamado d-bus , que realmente vale la pena aprender, y le permite desarrollar su aplicación en python, node.js o c (y más). Mire este video en bluez dev .
Hay muchas pistas falsas: envoltorios que intentan darle una funcionalidad "fácil". Incluso los recursos que dicen que hay una falta de documentación sobre cómo desarrollar bluetooth. Sin embargo, tan pronto como desee hacer algo más que simplemente conectarse al dispositivo y ver sus características, se dará cuenta de que el contenedor fallará.
Hazte un favor. Tómese unas horas para aprender cómo BlueZ
funciona (el video que vinculé es de oro sólido). Utiliza algo llamado d-bus. Lee un poco sobre d-bus. Si te gusta Python, mira el código en la carpeta de prueba. Lea el tutorial de Python dbus una o dos veces. Pagará muy bien. Perdí unos días tratando de encontrar algo fácil, pero resultó ser la mejor manera.
¡Buena suerte!