Un peu tard ici, mais j'ai récemment eu le mal de tête de suivre une variété de guides différents, dont aucun ne fonctionnait pour moi. Voici donc un autre guide ... qui ne fonctionnera probablement pas pour vous;)
J'ai téléchargé la version la plus récente de la page officielle: bluez.org/download . Si cette page est morte, utilisez celle-ci à la place.
Par exemple, au moment de la rédaction, c'était 5,47, j'ai donc utilisé (sur ma framboise):
wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.47.tar.xz
Ensuite, je l'ai extrait et construit:
tar -xf bluez-5.47.tar.xz
cd bluez-5.47
Lisez le README
! Il répertorie les dépendances et les commutateurs de configuration:
Installez d'abord les dépendances: (glib, dbus, libdbus, udev, etc.) La plupart d'entre elles sont déjà installées et sinon elles devraient être faciles à installer, toutes fournies par le gestionnaire de paquets. Une fois que vous avez fait cela:
./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var
J'ai également ajouté --enable-experimental
parce que je pense que l' objet GattCharacteristics fait partie des fonctionnalités expérimentales. Alors fais:
make
sudo make install
Il faut peut-être 10 minutes pour compiler. Après l'installation, vous devriez trouver
bluetoothd
dans /usr/libexec/bluetooth
. Vous devriez également voir bluetoothd dans /usr/lib/bluetooth
.
Accédez à chacun de ces répertoires et saisissez
./bluetoothd --version
Vous remarquerez que celui de libexec est nouveau et que celui de lib est ancien.
BlueZ crée ces objets et cette interface d-bus pour vous exposer les appareils Bluetooth de manière agréable.
Afin de vous assurer que d-bus vous parle du nouveau BlueZ 5.47 et non de votre ancien BlueZ 5.23, vous devez dire systemd
d'utiliser le nouveau démon Bluetooth:
sudo vim /lib/systemd/system/bluetooth.service
Assurez-vous que la exec.start
ligne pointe vers votre nouveau démon /usr/libexec/bluetooth
.
Pour moi, ce n'était pas suffisant. Quoi qu'il en soit, au redémarrage, j'ai toujours eu bluetoothd 5.23 ... Je viens donc de créer un lien symbolique de l'ancien vers le nouveau.
Renommez d'abord l'ancien fichier:
sudo mv /usr/lib/bluetooth/bluetoothd /usr/lib/bluetooth/bluetoothd-543.orig
Créez le lien symbolique:
ln -s /usr/libexec/bluetooth/bluetoothd /usr/lib/bluetooth/bluetoothd
sudo systemctl daemon-reload
Ça devrait le faire.
Maintenant, je dois dire ceci, même si ce n'est pas pertinent pour la question :
Si vous souhaitez développer une application pour votre pi, lisez le dossier blueZ docs . Il vous présente quelque chose appelé d-bus , qui vaut vraiment la peine d'être étudié et vous permet de développer votre application en python, node.js ou c (et plus). Regardez cette vidéo sur bluez dev .
Il y a beaucoup de harengs rouges là-bas: des wrappers qui tentent de vous offrir des fonctionnalités "faciles". Même les ressources qui disent qu'il y a un manque de documentation sur la façon de développer le bluetooth. Cependant, dès que vous voudrez faire autre chose que de simplement vous connecter à l'appareil et voir ses caractéristiques, vous vous rendrez compte que le wrapper vous fera défaut.
Fais toi plaisir. Prenez quelques heures pour apprendre comment ça BlueZ
marche (la vidéo que j'ai liée est en or massif). Il utilise quelque chose appelé d-bus. Lisez un peu sur d-bus. Si vous aimez Python, regardez le code dans le dossier de test. Lisez le didacticiel python dbus une ou deux fois. Cela portera ses fruits si bien. J'ai perdu quelques jours à essayer de trouver quelque chose de facile, mais cela s'est avéré être le meilleur moyen.
Bonne chance!