Instalando o Bluez 5.44 no Raspbian?


9

Alguém conseguiu instalar o Bluez 5.44 no Raspbian? Eu gostaria de usar isso em um Raspi 3 e um Raspi Zero W.

Eu segui vários guias diferentes, mas todos eles instalam versões do Bluez anteriores à 5.44. Não consigo seguir nenhum desses guias e terminar com a instalação do Bluez 5.44 em funcionamento.

Qualquer pessoa que tenha feito isso, compartilhe suas etapas.


Eu tentei muitas instruções e essa é a única que realmente funcionou: learn.adafruit.com/install-bluez-on-the-raspberry-pi/… Com a única diferença, obtive meu arquivo .tar em: mirrors.edge. kernel.org/pub/linux/bluetooth e baixei uma versão 5.52 que era a mais nova da época.
Hurri

Respostas:


11

Um pouco tarde aqui, mas recentemente sofri a dor de cabeça de seguir uma variedade de guias diferentes, nenhum dos quais funcionou para mim. Então, aqui está outro guia ... que provavelmente não funcionará para você;)

Eu baixei a versão mais recente da página oficial: bluez.org/download . Se essa página estiver morta, use esta .

Por exemplo, no momento em que escrevi, era 5,47, então usei (na minha framboesa):

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

Então eu extraí e construí:

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

Leia o README! Ele lista as dependências e os comutadores de configuração:

Instale as dependências primeiro: (glib, dbus, libdbus, udev, etc.) A maioria delas já está instalada e, caso contrário, deve ser fácil de instalar, todas fornecidas pelo gerenciador de pacotes. Depois de fazer isso:

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

Também adicionei --enable-experimentalporque acredito que o objeto GattCharacteristics faz parte dos recursos experimentais. Então faça:

make
sudo make install

Demora talvez 10 minutos para compilar. Após a instalação, você deve encontrar bluetoothdno /usr/libexec/bluetooth. Você também deve ver bluetoothd in /usr/lib/bluetooth.

Vá para cada um desses diretórios e digite

./bluetoothd --version

Você notará que o da libexec é novo e o da lib é antigo.

O BlueZ cria esses objetos e interface d-bus para expor os dispositivos bluetooth para você de maneiras agradáveis.

A fim de se certificar de que d-bus está falando com você nova BlueZ 5,47 e não o seu antigo BlueZ 5,23, você precisa dizer systemdpara usar o novo daemon do bluetooth:

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

Verifique se a exec.startlinha aponta para o seu novo daemon /usr/libexec/bluetooth.

Para mim, isso não foi suficiente. Não importa o que acontecesse, ao reiniciar, sempre recebi o bluetoothd 5.23 ... Então, acabei de criar um link simbólico do antigo para o novo.

Primeiro renomeie o arquivo antigo:

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

Crie o link simbólico:

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

Isso deve resolver.

Agora, tenho que dizer isso, mesmo que não seja relevante para a pergunta :

Se você deseja desenvolver um aplicativo para o seu pi, leia a pasta blueZ docs . Apresenta a você algo chamado d-bus , que realmente vale a pena aprender e permite que você desenvolva seu aplicativo em python, node.js ou c (e mais). Assista a este vídeo no bluez dev .

Existem muitos arenques vermelhos por aí: invólucros que tentam fornecer a funcionalidade "fácil". Mesmo os recursos que dizem que há uma falta de documentação sobre como desenvolver o bluetooth. No entanto, assim que você quiser fazer algo além de simplesmente se conectar ao dispositivo e visualizar suas características, perceberá que o wrapper falhará.

Faça um favor a si mesmo. Reserve algumas horas para aprender como BlueZfunciona (o vídeo que vinculei é ouro maciço). Ele usa algo chamado d-bus. Leia um pouco sobre o d-bus. Se você gosta de Python, veja o código na pasta de teste. Leia o tutorial do python dbus uma ou duas vezes. Vai pagar tão bem. Eu perdi alguns dias tentando encontrar algo fácil, mas essa acabou sendo a melhor maneira.

Boa sorte!


a página original do bluez parece morta
not2qubit

11
Muito obrigado por esse resumo. Eu segui vários tutoriais ( learn.adafruit.com/install-bluez-on-the-raspberry-pi/… | fam-haugk.de/starting-with-bluetooth-le-on-the-raspberry-pi ), mas apenas o seu fez funcionar. Duas notas: - Bluez página é: bluez.org/download - Para criar o link simbólico fazer: 1. Mudar o nome da velha: sudo mv /usr/lib/bluetooth/bluetoothd /usr/lib/bluetooth/bluetoothd-543.orig2. Crie o link simbólico: sudo ln -s /usr/libexec/bluetooth/bluetoothd /usr/lib/bluetooth/bluetoothd Maio obrigado novamente :)
Thor_Bux

Estou feliz que funcionou! Também fiz os comentários que você sugeriu. Cheers
Hunter Akins

Há uma etapa aqui: Leia o README e instale as dependências, que podem se transformar em cascata de dependências. Isso ajuda: rrbluetoothx.blogspot.nl/2016/04/…
brianfit 23/03

3

Eu o instalei no meu Raspberry Pi 3 com o SO Raspbian GNU / Linux 8 (jessie). Foi um pouco complicado, mas essas etapas funcionaram para mim. Eu instalei depois de ler sua postagem.

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

Depois disso, nenhum adaptador foi encontrado. A próxima coisa que fiz foi

sudo service bluetooth start
sudo service bluetooth status

Ainda sem adaptador. Isto é devido ao firmware, então eu tive que fazer isso na próxima

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

Finalmente digite:

sudo usermod -G bluetooth -a pi

Em seguida, verifique se funcionou digitando:

cat /etc/group | grep bluetooth

Se funcionou, você deve ver isso no seu terminal

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

Último comando

sudo reboot

Espero que funcione para voce.

Obrigado a este site pela ajuda https://www.pi-supply.com/make/fix-raspberry-pi-3-bluetooth-issues/


1

A resposta do @Hunter Akins me salvou de tanta frustração quando ele disse (parafraseado): sério, conheça o BlueZ. Conheça o D-BUS. Conheça os comandos bluetoothctl, systemctl e bluetoothd.

O problema é que, desde o lançamento do Bluez5.42 em setembro de 2016, muitos pacotes usados ​​pelos guias on-line foram descontinuados ( https://wiki.archlinux.org/index.php/Bluetooth#Trou Resolução de problemas ). Ah, e o pacote Bluez está com falta de documentação oficial.

Aqui estão os comandos que usei para executar o Bluetooth no Raspberry Pi Zero W, a partir de uma nova instalação:

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

Extraído da resposta e dos comentários acima:

$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 

Erro extra que encontrei:

$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

Suponho que você deseja usar o pacote bluez que você acabou de instalar. Eu uso as etapas a seguir para conectar-se a um dispositivo BLE logo após a reinicialização do sistema (dado muito tempo após a reinicialização, ele falha). Não experimentei o suficiente para descobrir uma conexão consistente. As linhas precedidas por "pi @ raspberrypi: ~ $" e "[bluetooth] #" foram as minhas entradas; o resto foram respostas.

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

Estou conectando a um dispositivo BLE. O comando pair não funcionará, pois se destina ao 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

11
o pedaço de esta informação corresponde ao pdf passo-a-passo encontrado na bluetooth.com blog.bluetooth.com/bluez-on-raspberry-pi
Austin
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.