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-experimental
weil 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
bluetoothd
in /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 systemd
den neuen Bluetooth-Daemon verwenden möchten:
sudo vim /lib/systemd/system/bluetooth.service
exec.start
Stellen 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 BlueZ
funktioniert (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!