¿Instalar Bluez 5.44 en Raspbian?


9

¿Alguien ha podido instalar con éxito Bluez 5.44 en Raspbian? Me gustaría usar esto tanto en un Raspi 3 como en un Raspi Zero W.

He seguido numerosas guías diferentes, pero todas instalan versiones de Bluez anteriores a 5.44. No puedo seguir ninguna de estas guías y terminar con una instalación funcional de Bluez 5.44.

Cualquiera que haya hecho esto, por favor comparta sus pasos.


Intenté muchas instrucciones y esta es la única que realmente funcionó: learn.adafruit.com/install-bluez-on-the-raspberry-pi/... La única diferencia es que obtuve mi archivo .tar de: mirrors.edge. kernel.org/pub/linux/bluetooth y descargué una versión 5.52 que era la más nueva en ese momento.
Hurri

Respuestas:


11

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-experimentalporque 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 bluetoothden /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 systemdque uses el nuevo bluetooth daemon:

    sudo vim /lib/systemd/system/bluetooth.service

Asegúrate de que la exec.startlí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 BlueZfunciona (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!


la página original de bluez parece muerta
not2qubit el

1
Muchas gracias por ese resumen. Seguí varios tutoriales ( learn.adafruit.com/install-bluez-on-the-raspberry-pi/… | fam-haugk.de/starting-with-bluetooth-le-on-the-raspberry-pi ) pero solo el tuyo Lo hizo funcionar. Dos notas: - La página de Bluez es: bluez.org/download - Para crear el enlace simbólico, haga lo siguiente: 1. Cambie el nombre del antiguo: sudo mv /usr/lib/bluetooth/bluetoothd /usr/lib/bluetooth/bluetoothd-543.orig2. Cree el enlace simbólico: sudo ln -s /usr/libexec/bluetooth/bluetoothd /usr/lib/bluetooth/bluetoothd mayo, gracias de nuevo :)
Thor_Bux

Me alegro de que funcionó! También hice los comentarios que sugirió. Saludos
Hunter Akins

Aquí hay un paso: lea el archivo README e instale las dependencias, que pueden convertirse en una cascada de dependencias. Esto ayuda: rrbluetoothx.blogspot.nl/2016/04/…
brianfit

3

Lo instalé en mi Raspberry Pi 3 con el sistema operativo Raspbian GNU / Linux 8 (jessie). Fue un poco complicado, pero estos pasos funcionaron para mí. Lo instalé después de leer tu publicación.

sudo apt-get update
sudo apt-get upgrade -y 
sudo apt-get install bluez
sudo apt-get install blueman

Después de esto no encontré ningún adaptador. Lo siguiente que hice fue

sudo service bluetooth start
sudo service bluetooth status

Todavía no hay adaptador. Esto se debe al firmware, así que tuve que hacer esto a continuación

sudo apt-get dist-upgrade -y 
sudo apt-get install pi-bluetooth 
sudo apt-get install bluez bluez-firmware

Finalmente escriba:

sudo usermod -G bluetooth -a pi

Luego verifique si funcionó escribiendo:

cat /etc/group | grep bluetooth

Si funcionó, debería ver esto en su terminal

$ cat /etc/group | grep bluetooth
bluetooth:x:113:pi

Último comando

sudo reboot

Espero que esto funcione para usted.

Gracias a este sitio por ayuda https://www.pi-supply.com/make/fix-raspberry-pi-3-bluetooth-issues/


1

La respuesta de @Hunter Akins me salvó de tanta frustración cuando dijo (parafraseado): en serio, conoce a BlueZ. Conozca D-BUS. Conozca los comandos bluetoothctl, systemctl y bluetoothd.

El problema es que, desde el lanzamiento de Bluez5.42 en septiembre de 2016, muchos paquetes que usan las guías en línea han quedado en desuso ( https://wiki.archlinux.org/index.php/Bluetooth#Troubleshooting ). Ah, y el paquete Bluez carece severamente de documentación oficial.

Estos son los comandos que utilicé para ejecutar Bluetooth en Raspberry Pi Zero W, desde una nueva instalación:

$#Fresh install the latest version of Raspbian thru the latest version of NOOBS
$#Instructions for fresh install of at https://www.raspberrypi.org/help/noobs-setup/2/
$sudo apt-get update
$sudo apt-get upgrade #ensures you have latest linux kernel
$sudo init 6 #more robust than sudo reboot
$sudo apt-get -s install bluez #-s simulates the install, showing you
$#that the apt-get version is too old
$sudo apt-get --purge remove bluez #removes the bluez on your machine

Extraído de la respuesta y los comentarios anteriores:

$sudo apt-get -s install bluez #-s simulates the install, showing you
$#that an outdated version of bluez is on your machine
$sudo apt-get --purge remove bluez
$cd ~
$wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.49.tar.xz # find the latest bluez kernel at
$#http://www.kernel.org/pub/linux/bluetooth and install that, changing the version number of upcoming steps 
$tar xvf bluez-5.49.tar.xz
$sudo apt-get install -y libusb-dev libdbus-1-dev libglib2.0-dev libudev-dev libical-dev libreadline-dev
$cd bluez-5.49
$./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var
$make
$sudo make install
$cd ~
$cd /usr/libexec/bluetooth
$./bluetoothd --version
$cd ~
$cd usr/lib/bluetooth
$./bluetoothd --version #identify what the newer version is. 
#Mine was in libexec. If yours is not, reverse the paths in the following steps
$cd ~
$sudo nano /lib/systemd/system/bluetooth.service
#Go to the Exec Start line. Point it to /usr/libexec/bluetooth/bluetoothd
$sudo mv /usr/lib/bluetooth/bluetoothd /usr/lib/bluetooth/bluetoothd-543.orig
$sudo ln -s /usr/libexec/bluetooth/bluetoothd /usr/lib/bluetooth/bluetoothd 
$sudo systemctl daemon-reload 

Error adicional que encontré:

$sudo apt-get install -y bluez-obexd 
$# see https://forums.fedoraforum.org/showthread.php?315160-Cannot-get-bluetooth-devices-to-work
$sudo init 6 #more robust sudo reboot

Supongo que desea utilizar el paquete bluez que acaba de instalar. Utilizo los siguientes pasos para conectarme a un dispositivo BLE justo después de reiniciar el sistema (dado demasiado tiempo después de un reinicio, falla). No he experimentado lo suficiente como para encontrar una conexión consistente. Las líneas precedidas por "pi @ raspberrypi: ~ $" y "[bluetooth] #" fueron mi entrada; el resto fueron respuestas.

pi@raspberrypi:~ $ bluetoothctl
Agent registered
[bluetooth]# power on
Changing power on succeeded
[bluetooth]# scan on
Discovery started
[CHG] Controller B8:27:EB:DD:65:21 Discovering: yes      (The raspberry pi, I believe)
[CHG] Device 34:15:13:87:98:37 RSSI: -45     (device I want)
[bluetooth]# trust 34:15:13:87:98:37
Changing 34:15:13:87:98:37 trust succeeded
[bluetooth]# connect 34:15:13:87:98:37
Attempting to connect to 34:15:13:87:98:37    (this will take a few seconds)
[CHG] Device 34:15:13:87:98:37 Connected: yes
Connection successful
...(Specifications of your device)...
[CHG] Device 34:15:13:87:98:37 ServicesResolved: yes

Me estoy conectando a un dispositivo BLE. El comando de emparejamiento no funcionará, ya que está diseñado para Bluetooth Classic:

[bluetooth]# pair 34:15:13:87:98:37
Attempting to pair with 34:15:13:87:98:37
[CHG] Device 34:15:13:87:98:37 Connected: yes
Failed to pair: org.bluez.Error.AuthenticationFailed
[CHG] Device 34:15:13:87:98:37 Connected: no

1
El fragmento de esta información coincide con el pdf paso a paso que se encuentra en bluetooth.com blog.bluetooth.com/bluez-on-raspberry-pi
austin
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.