Instalarea Bluez 5.44 pe Raspbian? (Raspberry Pi, Raspbian, Bluetooth)

rityzmon a intrebat.

A reușit cineva să instaleze cu succes Bluez 5.44 pe Raspbian? Aș dori să folosesc acest lucru atât pe un Raspi 3, cât și pe un Raspi Zero W.

Am urmat numeroase diferite ghiduri dar toate instalează versiuni Bluez mai vechi de 5.44. Nu reușesc să urmez niciunul dintre aceste ghiduri și să ajung la o instalare Bluez 5.44 funcțională.

Oricine a făcut acest lucru, vă rog să împărtășiți pașii dvs.

Comentarii

3 răspunsuri
Hunter Akins

Un pic mai târziu aici, dar am suferit recent durerea de cap de a urma o varietate de ghiduri diferite, dintre care nici unul nu a funcționat pentru mine. Așa că iată un alt ghid… care probabil că nu va funcționa pentru tine 😉

Am descărcat cea mai recentă versiune de pe pagina oficială: bluez.org/download. Dacă pagina respectivă este moartă, folosiți aceasta în loc.

De exemplu, la momentul scrierii acestui articol era 5.47, așa că am folosit (pe zmeura mea):

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

Apoi am extras-o și am construit-o:

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

Citiți pagina README! Acesta listează dependențele și comutatoarele de configurare:

Instalați mai întâi dependențele: (glib, dbus, libdbus, libdbus, udev, etc.) Cele mai multe dintre ele sunt deja instalate, iar dacă nu, ar trebui să fie ușor de instalat, toate sunt furnizate de managerul de pachete. După ce ați făcut asta:

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

De asemenea, am adăugat --enable-experimental pentru că eu cred că GattCharacteristics face parte din caracteristicile experimentale. Apoi faceți:

make
sudo make install

Compilarea durează poate 10 minute. După instalare, ar trebui să găsiți bluetoothd în /usr/libexec/bluetooth. De asemenea, ar trebui să vedeți bluetoothd în /usr/lib/bluetooth.

Mergeți în fiecare dintre aceste directoare și tastați

./bluetoothd --version

Veți observa că cel din libexec este nou, iar cel din lib este vechi.

BlueZ creează aceste obiecte d-bus și interfețe pentru a vă expune dispozitivele bluetooth în moduri plăcute.

Pentru a vă asigura că d-bus vorbește cu dvs. nou BlueZ 5.47 și nu cu versiunea dvs. vechiul BlueZ 5.23, trebuie să îi spuneți lui systemd să folosească noul daemon bluetooth:

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

Asigurați-vă că exec.start indică noul daemon în /usr/libexec/bluetooth.

Pentru mine, acest lucru nu a fost suficient. Indiferent de ce se întâmpla, la repornire, întotdeauna îmi apărea bluetoothd 5.23… Așa că am creat o legătură simbolică de la cel vechi la cel nou.

Mai întâi redenumiți fișierul vechi:

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

Creați legătura simbolică:

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

Asta ar trebui să fie de ajuns.

Acum, trebuie să spun asta, chiar dacă nu e relevant pentru întrebare.:

Dacă doriți să dezvoltați o aplicație pentru pi, citiți dosarul de documente blueZ. Acesta vă prezintă ceva numit d-bus, , despre care chiar merită să înveți și care îți permite să dezvolți aplicația în python, node.js sau c (și nu numai). Urmăriți acest videoclip pe bluez dev.

Există o mulțime de heringi roșii: învelitori care încearcă să vă ofere o funcționalitate „ușoară”. Chiar și resurse care spun că există o lipsă de documentație despre cum să dezvolți bluetooth. Cu toate acestea, de îndată ce veți dori să faceți ceva mai mult decât simpla conectare la dispozitiv și vizualizarea caracteristicilor acestuia, veți realiza că wrapper-ul vă va da greș.

Fă-ți o favoare. Luați-vă câteva ore pentru a învăța cum BlueZ funcționează (videoclipul pe care l-am legat este aur curat). Se folosește ceva numit d-bus. Citiți un pic despre d-bus. Dacă vă place Python, uitați-vă la codul din dosarul de testare. Citiți tutorialul python dbus o dată sau de două ori. Se va dovedi foarte util. Am pierdut câteva zile încercând să găsesc ceva ușor, dar aceasta s-a dovedit a fi cea mai bună cale.

Mult noroc!

Comentarii

  • pagina originală bluez pare moartă –  > Por not2qubit.
  • Multe mulțumiri pentru acest rezumat. Am urmat mai multe tutoriale (learn.adafruit.com/install-bluez-on-the-raspberry-pi/… | fam-haugk.de/starting-with-bluetooth-le-on-the-raspberry-pi), dar numai a ta a făcut-o să funcționeze. Două note: – Pagina Bluez este: bluez.org/download – Pentru a crea legătura simbolică faceți: 1. Redenumiți vechiul: sudo mv /usr/lib/bluetooth/bluetoothd /usr/lib/bluetooth/bluetoothd-543.orig 2. Creați legătura simbolică: sudo ln -s /usr/libexec/bluetooth/bluetoothd /usr/lib/bluetooth/bluetoothd Mai mulțumim din nou 🙂 –  > Por Thor_Bux.
  • Mă bucur că a funcționat! Am făcut și eu comentariile pe care mi le-ai sugerat. Noroc –  > Por Hunter Akins.
  • Există un singur pas aici, Citiți README și instalați dependențele, ceea ce se poate transforma într-o cascadă de dependențe. Acest lucru ajută: rrbluetoothx.blogspot.nl/2016/04/04/… –  > Por brianfit.
Pismurf

L-am instalat pe Raspberry Pi 3 al meu cu sistemul de operare Raspbian GNU/Linux 8 (jessie). A fost un pic mai complicat, dar acești pași mi-au funcționat. L-am instalat după ce am citit postarea ta.

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

După aceasta nu am avut nici un adaptor găsit. Următorul lucru pe care l-am făcut a fost

sudo service bluetooth start
sudo service bluetooth status

Tot nu s-a găsit niciun adaptor. Acest lucru se datorează firmware-ului, așa că a trebuit să fac următorul lucru

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

În cele din urmă tastați:

sudo usermod -G bluetooth -a pi

Apoi verificați dacă a funcționat, tastând:

cat /etc/group | grep bluetooth

Dacă a funcționat, ar trebui să vedeți acest lucru în terminal

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

Ultima comandă

sudo reboot

Sper că vă va funcționa.

Mulțumiri acestui site pentru ajutor https://www.pi-supply.com/make/fix-raspberry-pi-3-bluetooth-issues/

John Doe

Răspunsul lui @Hunter Akins m-a salvat de atâta frustrare când a spus (parafrazat): serios, cunoașteți-l pe BlueZ. Ajungeți să cunoașteți D-BUS. Cunoașteți comenzile bluetoothctl, systemctl și bluetoothd.

Problema este că, de la lansarea din septembrie 2016 a Bluez5.42, multe pachete pe care le folosesc ghidurile online au fost depreciate (https://wiki.archlinux.org/index.php/Bluetooth#Troubleshooting). Ah, iar pachetul Bluez duce o lipsă severă de documentație oficială.

Iată comenzile pe care le-am folosit pentru a face Bluetooth să funcționeze pe Raspberry Pi Zero W, de la o instalare proaspătă:

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

Rupt din răspunsul și comentariile de mai sus:

$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 suplimentar pe care l-am găsit:

$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

Presupun că vrei să folosești pachetul bluez pe care tocmai l-ai instalat. Eu folosesc următorii pași pentru a mă conecta la un dispozitiv BLE imediat după o repornire a sistemului (dacă se dă prea mult timp după o repornire, nu reușește). Nu am experimentat suficient pentru a găsi o conexiune consistentă. Liniile prefațate cu „[email protected]:~ $ ” și „[bluetooth]#” au fost intrările mele; restul au fost răspunsuri.

[email protected]:~ $ 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

Mă conectez la un dispozitiv BLE. Comanda pair nu va funcționa, deoarece este destinată pentru 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

Comentarii