Un po 'tardi qui, ma recentemente ho avuto il mal di testa di seguire una varietà di guide diverse, nessuna delle quali ha funzionato per me. Quindi ecco un'altra guida ... che probabilmente non funzionerà per te;)
Ho scaricato la versione più recente dalla pagina ufficiale: bluez.org/download . Se quella pagina è morta, usa invece questa .
Ad esempio, al momento della scrittura era 5.47, quindi ho usato (sul mio lampone):
wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.47.tar.xz
Quindi l'ho estratto e costruito:
tar -xf bluez-5.47.tar.xz
cd bluez-5.47
Leggi il README
! Elenca le dipendenze e le opzioni di configurazione:
Installare prima le dipendenze: (glib, dbus, libdbus, udev, ecc.) La maggior parte sono già installate e, in caso contrario, dovrebbero essere facili da installare, tutte fornite dal gestore pacchetti. Dopo averlo fatto:
./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var
Ho anche aggiunto --enable-experimental
perché credo che l' oggetto GattCharacteristics faccia parte delle funzionalità sperimentali. Quindi fa:
make
sudo make install
Ci vogliono forse 10 minuti per compilare. Dopo l'installazione, dovresti trovare
bluetoothd
in /usr/libexec/bluetooth
. Dovresti anche vedere bluetoothd in /usr/lib/bluetooth
.
Vai a ciascuna di queste directory e digita
./bluetoothd --version
Noterai che quello in libexec è nuovo e quello in lib è vecchio.
BlueZ crea questi oggetti e interfaccia d-bus per esporre i dispositivi bluetooth in modo piacevole.
Per assicurarti che d-bus stia comunicando con te il nuovo BlueZ 5.47 e non il tuo vecchio BlueZ 5.23, devi dire systemd
di usare il nuovo demone bluetooth:
sudo vim /lib/systemd/system/bluetooth.service
Assicurati che la exec.start
linea punti al tuo nuovo demone in /usr/libexec/bluetooth
.
Per me non è bastato. Non importa cosa, al riavvio ho sempre avuto bluetoothd 5.23 ... Quindi ho appena creato un collegamento simbolico dal vecchio al nuovo.
Innanzitutto rinominare il vecchio file:
sudo mv /usr/lib/bluetooth/bluetoothd /usr/lib/bluetooth/bluetoothd-543.orig
Crea il link simbolico:
ln -s /usr/libexec/bluetooth/bluetoothd /usr/lib/bluetooth/bluetoothd
sudo systemctl daemon-reload
Questo dovrebbe farlo.
Ora, devo dire questo, anche se non è rilevante per la domanda :
Se vuoi sviluppare un'applicazione per il tuo pi, leggi la cartella documenti blueZ . Ti introduce a qualcosa chiamato d-bus , che vale davvero la pena conoscere e ti consente di sviluppare la tua applicazione in python, node.js o c (e altro). Guarda questo video su bluez dev .
Ci sono molte aringhe rosse là fuori: involucri che tentano di darti funzionalità "facile". Anche le risorse che affermano che manchi la documentazione su come sviluppare il bluetooth. Tuttavia, non appena si desidera fare qualcosa oltre a collegarsi semplicemente al dispositivo e visualizzarne le caratteristiche, si renderà conto che il wrapper non funzionerà.
Fatti un favore. Impiega alcune ore per imparare come BlueZ
funziona (il video che ho collegato è in oro massiccio). Usa qualcosa chiamato d-bus. Leggi un po 'di d-bus. Se ti piace Python, guarda il codice nella cartella test. Leggi il tutorial su Python Dbus una o due volte. Pagherà così bene. Ho perso qualche giorno cercando di trovare qualcosa di facile, ma questo si è rivelato il modo migliore.
In bocca al lupo!