在Raspbian上安装Bluez 5.44?


9

有谁能够成功将Bluez 5.44安装到Raspbian上?我想在Raspi 3和Raspi Zero W上都使用它。

我遵循了许多 不同的 指南,但是它们都安装了5.44之前的Bluez版本。我无法遵循任何这些指南,最后无法正常运行Bluez 5.44的安装。

完成此操作的任何人,请分享您的步骤。


我尝试了许多说明,但这是唯一有效的说明:learn.adafruit.com/install-bluez-on-the-raspberry-pi/……唯一的区别是,我从.mirrors.edge获取了.tar文件。 kernel.org/pub/linux/bluetooth,我下载了当时最新的5.52版本。
Hurri

Answers:


11

到这里有点晚了,但是最近我因遵循各种不同的指南而头疼,这些指南都不适合我。所以这是另一本指南...可能对您不起作用;)

我从官方页面下载了最新版本:bluez.org/download。如果该页面已用完,请改用页面。

例如,在撰写本文时,它是5.47,所以我用了(在我的树莓上):

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

然后我提取并构建了它:

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

阅读README它列出了依赖性和配置开关:

首先安装依赖项:(glib,dbus,libdbus,udev等)。大多数依赖项已经安装,如果没有安装,它们应该易于安装,所有这些都由软件包管理器提供。完成此操作后:

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

我还添加了内容,--enable-experimental因为我相信GattCharacteristics对象是实验功能的一部分。然后做:

make
sudo make install

编译可能需要10分钟。安装后,您应该bluetoothd在中找到 /usr/libexec/bluetooth。您还应该在中看到蓝牙/usr/lib/bluetooth

转到每个目录并键入

./bluetoothd --version

你会注意到,在一个在libexec目录是新的,一个在LIB是旧的。

BlueZ创建这些d-bus对象和接口,以很好的方式向您展示蓝牙设备。

为了确保d-bus与您正在使用新的 BlueZ 5.47,而不是您的 BlueZ 5.23,您需要告诉systemd使用新的蓝牙守护程序:

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

确保该exec.start行指向中的新守护程序/usr/libexec/bluetooth

对我来说,这还不够。不管怎样,重新启动后我总是得到蓝牙5.23 ...所以我只是创建了一个从旧版本到新版本的符号链接。

首先重命名旧文件:

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

创建符号链接:

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

那应该做。

现在,我必须说这个,即使它与问题无关

如果要为pi开发应用程序,请阅读blueZ docs文件夹。它向您介绍了d-bus,这确实值得学习,并允许您使用python,node.js或c(及更多)开发应用程序。在bluez dev上观看此视频。

有很多红色鲱鱼:包装程序试图为您提供“简单”功能。甚至有资源说缺乏有关如何开发蓝牙的文档。但是,只要您想做的事情不仅仅是连接设备并查看其特性,您就会意识到包装器会让您失败。

帮个忙。花几个小时来学习如何BlueZ工作(我链接的视频是纯金的)。它使用称为d-bus的东西。阅读有关d-bus的知识。如果您喜欢Python,请查看测试文件夹中的代码。一两次阅读python dbus教程。它将很好地回报。我浪费了几天时间试图找到一些简单的方法,但是事实证明这是最好的方法。

祝好运!


原始的bluez页面似乎已失效
not2qubit

1
非常感谢您的总结。我遵循了几个教程(learn.adafruit.com/install-bluez-on-the-raspberry-pi/… | fam-haugk.de/starting-with-bluetoothle-on-the-raspberry-pi),但只有您一个使它工作。两个注意事项:-Bluez页面是:bluez.org/download-要创建符号链接,请执行以下操作:1.重命名旧sudo mv /usr/lib/bluetooth/bluetoothd /usr/lib/bluetooth/bluetoothd-543.orig符号:2.创建符号链接:sudo ln -s /usr/libexec/bluetooth/bluetoothd /usr/lib/bluetooth/bluetoothd 再次感谢:)
Thor_Bux

我很高兴它成功了!我也发表了您的建议。干杯
亨特埃金斯

这里有一个步骤,阅读自述文件并安装依赖项,这可能会变成依赖项级联。这会有所
brianfit

3

我将其安装在具有Raspbian GNU / Linux 8(jessie)操作系统的Raspberry Pi 3上。这有点棘手,但是这些步骤对我有用。我在阅读您的帖子后安装了它。

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

在此之后,我没有找到适配器。我接下来要做的是

sudo service bluetooth start
sudo service bluetooth status

仍然没有适配器。这是由于固件的缘故,所以我接下来要做

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

最后输入:

sudo usermod -G bluetooth -a pi

然后输入以下内容检查其是否有效:

cat /etc/group | grep bluetooth

如果有效,您应该在终端中看到

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

最后命令

sudo reboot

希望这对您有用。

感谢本网站的帮助 https://www.pi-supply.com/make/fix-raspberry-pi-3-bluetooth-issues/


1

@亨特·阿金斯的回答使我免于如此沮丧(转述):认真,结识BlueZ。了解D-BUS。了解bluetoothctl,systemctl和bluetoothd命令。

问题是,自2016年9月发布Bluez5.42以来,已弃用了在线指南使用的许多软件包(https://wiki.archlinux.org/index.php/Bluetooth#Troubleshooting)。哦,Bluez软件包严重缺少官方文档。

这是重新安装Raspberry Pi Zero W时使蓝牙运行的命令:

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

从以上答案和评论中摘录:

$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 

我发现的其他错误:

$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

我假设您要使用刚安装的bluez软件包。我在系统重启后立即使用以下步骤连接到BLE设备(重启后时间过长,它将失败)。我还没有进行足够的实验来找出一致的连接。以“ pi @ raspberrypi:〜$”和“ [bluetooth]#”开头的行是我的输入;剩下的就是回应。

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

我正在连接到BLE设备。pair命令不适用于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
此信息的内容与在bluetooth.com blog.bluetooth.com/bluez-on-raspberry-pi
奥斯汀
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.