Installare Bluez 5.44 su Raspbian?


9

Qualcuno è stato in grado di installare correttamente Bluez 5.44 su Raspbian? Vorrei usarlo sia su Raspi 3 che su Raspi Zero W.

Ho seguito numerose guide diverse, ma tutte installano versioni di Bluez precedenti alla 5.44. Non sono in grado di seguire nessuna di queste guide e di finire con un'installazione Bluez 5.44 funzionante.

Chiunque l'abbia fatto, ti preghiamo di condividere i tuoi passi.


Ho provato molte istruzioni e questa è l'unica che effettivamente ha funzionato: learn.adafruit.com/install-bluez-on-the-raspberry-pi/… Con l'unica differenza che ho ottenuto il mio file .tar da: mirrors.edge. kernel.org/pub/linux/bluetooth e ho scaricato una versione 5.52 che era la più recente al momento.
Hurri,

Risposte:


11

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-experimentalperché 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 bluetoothdin /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 systemddi usare il nuovo demone bluetooth:

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

Assicurati che la exec.startlinea 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 BlueZfunziona (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!


la pagina bluez originale sembra morta
not2qubit

1
Molte grazie per questo riassunto. Ho seguito diversi tutorial ( learn.adafruit.com/install-bluez-on-the-raspberry-pi/… | fam-haugk.de/starting-with-bluetooth-le-on-the-raspberry-pi ) ma solo i tuoi l'ha fatto funzionare. Due note: - La pagina Bluez è: bluez.org/download - Per creare il collegamento simbolico fare: 1. Rinominare il vecchio: sudo mv /usr/lib/bluetooth/bluetoothd /usr/lib/bluetooth/bluetoothd-543.orig2. Creare il sudo ln -s /usr/libexec/bluetooth/bluetoothd /usr/lib/bluetooth/bluetoothd
collegamento

Sono contento che abbia funzionato! Ho anche fatto i commenti che mi hai suggerito. Saluti
Hunter Akins,

C'è un passaggio qui, leggi il file README e installa le dipendenze, che possono trasformarsi in una cascata di dipendenze. Questo aiuta: rrbluetoothx.blogspot.nl/2016/04/…
brianfit

3

L'ho installato sul mio Raspberry Pi 3 con sistema operativo Raspbian GNU / Linux 8 (jessie). È stato un po 'complicato, ma questi passaggi hanno funzionato per me. L'ho installato dopo aver letto il tuo post.

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

Dopo questo non ho trovato nessun adattatore. La prossima cosa che ho fatto è stata

sudo service bluetooth start
sudo service bluetooth status

Ancora nessun adattatore. Ciò è dovuto al firmware, quindi ho dovuto farlo in seguito

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

Infine digita:

sudo usermod -G bluetooth -a pi

Quindi controlla se ha funzionato digitando:

cat /etc/group | grep bluetooth

Se ha funzionato dovresti vederlo nel tuo terminale

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

Ultimo comando

sudo reboot

Spero che questo funzioni per te.

Grazie a questo sito per aiuto https://www.pi-supply.com/make/fix-raspberry-pi-3-bluetooth-issues/


1

La risposta di @Hunter Akins mi ha salvato da tanta frustrazione quando ha detto (parafrasato): seriamente, conosci BlueZ. Conosci D-BUS. Scopri i comandi bluetoothctl, systemctl e bluetoothd.

Il problema è, dal rilascio di Bluez5.42 di settembre 2016, molti pacchetti utilizzati dalle guide online sono stati deprecati ( https://wiki.archlinux.org/index.php/Bluetooth#Tro troubleshooting ). Oh, e il pacchetto Bluez è gravemente privo di documentazione ufficiale.

Ecco i comandi che ho usato per far funzionare il Bluetooth sul Raspberry Pi Zero W, da una nuova installazione:

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

Strappato dalla risposta e dai commenti sopra:

$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 

Bug aggiuntivo che ho trovato:

$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

Presumo che tu voglia usare il pacchetto bluez che hai appena installato. Uso i seguenti passaggi per connettermi a un dispositivo BLE subito dopo il riavvio del sistema (dato troppo tempo dopo un riavvio, non riesce). Non ho sperimentato abbastanza per capire una connessione coerente. Le linee precedute da "pi @ raspberrypi: ~ $" e "[bluetooth] #" sono state il mio input; il resto erano risposte.

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

Mi sto collegando a un dispositivo BLE. Il comando pair non funzionerà, poiché è destinato a 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
l'hunk di queste informazioni corrisponde al pdf dettagliato trovato su bluetooth.com blog.bluetooth.com/bluez-on-raspberry-pi
austin
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.