Bluez 5.44 auf Raspbian installieren?

9

Konnte jemand Bluez 5.44 erfolgreich auf Raspbian installieren ? Ich möchte dies sowohl für einen Raspi 3 als auch für einen Raspi Zero W verwenden.

Ich habe zahlreiche verschiedene Anleitungen befolgt, aber alle installieren Bluez-Versionen vor 5.44. Ich kann keinem dieser Anleitungen folgen und habe eine funktionierende Bluez 5.44-Installation.

Wenn Sie dies getan haben, teilen Sie uns bitte Ihre Schritte mit.

Rityzmon
quelle
Ich habe viele Anweisungen ausprobiert und dies ist die einzige, die tatsächlich funktioniert hat: learn.adafruit.com/install-bluez-on-the-raspberry-pi/…. Der einzige Unterschied besteht darin, dass ich meine .tar-Datei von Mirrors.edge erhalten habe. kernel.org/pub/linux/bluetooth und ich haben eine Version 5.52 heruntergeladen, die zu dieser Zeit die neueste war.
Hurri

Antworten:

11

Ein bisschen spät hier, aber ich hatte kürzlich die Kopfschmerzen, einer Vielzahl verschiedener Führer zu folgen, von denen keiner für mich funktionierte. Also hier ist ein weiterer Leitfaden ... der wahrscheinlich nicht für dich funktioniert;)

Ich habe die neueste Version von der offiziellen Seite heruntergeladen : bluez.org/download . Wenn diese Seite tot ist, verwenden Sie diese ein , statt.

Zum Zeitpunkt des Schreibens war es zum Beispiel 5,47, also habe ich (auf meiner Himbeere) verwendet:

wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.47.tar.xz 

Dann habe ich es extrahiert und gebaut:

tar -xf bluez-5.47.tar.xz
cd bluez-5.47

Lesen Sie die README! Es listet die Abhängigkeiten und die Konfigurationsschalter auf:

Installieren Sie zuerst die Abhängigkeiten: (glib, dbus, libdbus, udev usw.) Die meisten von ihnen sind bereits installiert, und wenn nicht, sollten sie einfach zu installieren sein, alle vom Paketmanager bereitgestellt. Sobald Sie das getan haben:

./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var 

Ich habe auch hinzugefügt, --enable-experimentalweil ich glaube, dass das GattCharacteristics- Objekt Teil der experimentellen Funktionen ist. Dann mach:

make
sudo make install

Das Kompilieren dauert etwa 10 Minuten. Nach der Installation sollten Sie finden bluetoothdin /usr/libexec/bluetooth. Sie sollten auch Bluetooth in sehen /usr/lib/bluetooth.

Gehen Sie zu jedem dieser Verzeichnisse und geben Sie ein

./bluetoothd --version

Sie werden feststellen, dass der in libexec neu und der in lib alt ist.

BlueZ erstellt diese D-Bus-Objekte und -Schnittstellen, um Ihnen die Bluetooth-Geräte auf nette Weise zugänglich zu machen.

Um sicherzustellen, dass der D-Bus mit Ihnen über das neue BlueZ 5.47 und nicht mit Ihrem alten BlueZ 5.23 spricht, müssen Sie angeben, dass Sie systemdden neuen Bluetooth-Daemon verwenden möchten:

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

exec.startStellen Sie sicher, dass die Linie auf Ihren neuen Daemon in zeigt /usr/libexec/bluetooth.

Für mich war das nicht genug. Egal was passiert, beim Neustart habe ich immer Bluetoothd 5.23 bekommen ... Also habe ich einfach einen Symlink vom alten zum neuen erstellt.

Benennen Sie zuerst die alte Datei um:

sudo mv /usr/lib/bluetooth/bluetoothd /usr/lib/bluetooth/bluetoothd-543.orig

Erstellen Sie den Symlink:

ln -s /usr/libexec/bluetooth/bluetoothd /usr/lib/bluetooth/bluetoothd
sudo systemctl daemon-reload

Das sollte es tun.

Jetzt muss ich das sagen, obwohl es für die Frage nicht relevant ist :

Wenn Sie eine Anwendung für Ihren Pi entwickeln möchten, lesen Sie den Ordner blueZ docs . Es führt Sie in den sogenannten D-Bus ein , über den es sich wirklich zu lernen lohnt, und ermöglicht Ihnen, Ihre Anwendung in Python, Node.js oder C (und mehr) zu entwickeln. Sehen Sie sich dieses Video auf bluez dev an .

Es gibt viele rote Heringe da draußen: Wrapper, die versuchen, Ihnen "einfache" Funktionen zu bieten. Sogar Ressourcen, die besagen, dass es an Dokumentation zur Entwicklung von Bluetooth mangelt. Sobald Sie jedoch etwas anderes tun möchten, als nur eine Verbindung zum Gerät herzustellen und dessen Eigenschaften anzuzeigen, werden Sie feststellen, dass der Wrapper Sie nicht unterstützt.

Tu dir selbst einen Gefallen. Nehmen Sie sich ein paar Stunden Zeit, um zu erfahren, wie es BlueZfunktioniert (das von mir verlinkte Video ist aus massivem Gold). Es wird ein sogenannter D-Bus verwendet. Lesen Sie etwas über D-Bus. Wenn Sie Python mögen, sehen Sie sich den Code im Testordner an. Lesen Sie ein- oder zweimal das Python-dbus-Tutorial . Es wird sich so gut auszahlen. Ich habe ein paar Tage damit verbracht, etwas Leichtes zu finden, aber dies stellte sich als der beste Weg heraus.

Viel Glück!

Hunter Akins
quelle
Original Bluez Seite scheinen tot
not2qubit
1
Vielen Dank für diese Zusammenfassung. Ich folgte mehreren Tutorials ( learn.adafruit.com/install-bluez-on-the-raspberry-pi/… | fam-haugk.de/starting-with-bluetooth-le-on-the-raspberry-pi ), aber nur Ihren hat es geschafft. Zwei Hinweise: - Bluez Seite ist: bluez.org/download - Um den Symlink zu erstellen, gehen Sie wie folgt vor : 1. Benennen Sie den alten um: sudo mv /usr/lib/bluetooth/bluetoothd /usr/lib/bluetooth/bluetoothd-543.orig2. Erstellen Sie den Symlink: sudo ln -s /usr/libexec/bluetooth/bluetoothd /usr/lib/bluetooth/bluetoothd Mai nochmals
vielen
Ich bin froh, dass es funktioniert hat! Ich habe auch die von Ihnen vorgeschlagenen Kommentare abgegeben. Prost
Hunter Akins
Hier gibt es einen Schritt: Lesen Sie die README-Datei und installieren Sie die Abhängigkeiten, die sich in eine Abhängigkeitskaskade verwandeln können. Dies hilft: rrbluetoothx.blogspot.nl/2016/04/…
Brianfit
3

Ich habe es auf meinem Raspberry Pi 3 mit Raspbian GNU / Linux 8 (jessie) installiert. Es war ein bisschen schwierig, aber diese Schritte haben bei mir funktioniert. Ich habe es installiert, nachdem ich Ihren Beitrag gelesen habe.

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

Danach hatte ich keinen Adapter gefunden. Das nächste was ich tat war

sudo service bluetooth start
sudo service bluetooth status

Immer noch kein Adapter. Das liegt an der Firmware, also musste ich das als nächstes machen

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

Geben Sie zum Schluss Folgendes ein:

sudo usermod -G bluetooth -a pi

Überprüfen Sie dann, ob es funktioniert hat, indem Sie Folgendes eingeben:

cat /etc/group | grep bluetooth

Wenn es funktioniert hat, sollten Sie dies in Ihrem Terminal sehen

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

Letzter Befehl

sudo reboot

Hoffe das funktioniert bei dir.

Vielen Dank an diese Website für Hilfe https://www.pi-supply.com/make/fix-raspberry-pi-3-bluetooth-issues/

Pismurf
quelle
1

Die Antwort von @Hunter Akins rettete mich vor so viel Frustration, als er sagte (umschrieben): Ernsthaft, lerne BlueZ kennen. Lernen Sie D-BUS kennen. Lernen Sie die Befehle bluetoothctl, systemctl und bluetoothd kennen.

Das Problem ist, dass seit der Veröffentlichung von Bluez5.42 im September 2016 viele Pakete, die von Online-Handbüchern verwendet werden, veraltet sind ( https://wiki.archlinux.org/index.php/Bluetooth#Troubleshooter ). Oh, und das Bluez-Paket fehlt stark in der offiziellen Dokumentation.

Hier sind die Befehle, die ich verwendet habe, um Bluetooth auf dem Raspberry Pi Zero W nach einer Neuinstallation zum Laufen zu bringen:

$#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

Aus der obigen Antwort und den Kommentaren herausgerissen:

$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 

Zusätzlicher Fehler, den ich gefunden habe:

$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

Ich gehe davon aus, dass Sie das gerade installierte bluez-Paket verwenden möchten. Ich verwende die folgenden Schritte, um direkt nach einem Systemneustart eine Verbindung zu einem BLE-Gerät herzustellen (zu lange nach einem Neustart ist dies fehlgeschlagen). Ich habe nicht genug experimentiert, um eine konsistente Verbindung herauszufinden. Die Zeilen mit "pi @ raspberrypi: ~ $" und "[bluetooth] #" waren meine Eingabe; Der Rest waren Antworten.

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

Ich verbinde mich mit einem BLE-Gerät. Der Pair-Befehl funktioniert nicht, da er für Bluetooth Classic vorgesehen ist:

[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
John Doe
quelle
1
das große Stück dieser Informationen entspricht den Schritt- für -Schritt pdf auf bluetooth.com gefunden blog.bluetooth.com/bluez-on-raspberry-pi
Austin