Установка Bluez 5.44 на Raspbian?


9

Кто-нибудь смог успешно установить Bluez 5.44 на Raspbian? Я хотел бы использовать это как на Raspi 3, так и на Raspi Zero W.

Я следовал множество различных руководств , но они все установки версии Bluez раньше , чем 5.44. Я не могу следовать ни одному из этих руководств и в итоге получить работающую установку Bluez 5.44.

Любой, кто сделал это, пожалуйста, поделитесь своими шагами.


Я перепробовал много инструкций, и это единственное, что действительно сработало: learn.adafruit.com/install-bluez-on-the-raspberry-pi/… С той лишь разницей, что я получил свой файл .tar из: mirrors.edge. kernel.org/pub/linux/bluetooth и я скачали версию 5.52, которая была самой новой в то время.
Hurri

Ответы:


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. Вы также должны увидеть Bluetooth в /usr/lib/bluetooth.

Перейдите в каждый из этих каталогов и введите

./bluetoothd --version

Вы заметите, что тот, что в libexec , новый, а тот, что в lib , старый.

BlueZ создает эти объекты d-bus и интерфейс для приятного представления устройств Bluetooth.

Чтобы убедиться, что d-bus говорит с вами о новом BlueZ 5.47, а не о вашем старом BlueZ 5.23, вам нужно указать systemdиспользовать новый демон bluetooth:

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

Убедитесь, что exec.startлиния указывает на вашего нового демона /usr/libexec/bluetooth.

Для меня этого было недостаточно. Не смотря ни на что, при перезапуске я всегда получал bluetoothd 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

Это должно сделать это.

Теперь я должен сказать это, хотя это не имеет отношения к вопросу :

Если вы хотите разработать приложение для своего пи, прочитайте папку blueZ docs . Он знакомит вас с тем, что называется d-bus , о котором действительно стоит узнать, и позволяет разрабатывать ваше приложение на python, node.js или c (и более). Посмотрите это видео на Bluez Dev .

Есть много красных селедок: обертки, которые пытаются дать вам «легкую» функциональность. Даже ресурсы, которые говорят, что не хватает документации о том, как разработать Bluetooth. Однако, как только вы захотите сделать что-то, кроме простого подключения к устройству и просмотра его характеристик, вы поймете, что оболочка не подойдет вам.

Сделай себе одолжение. Потратьте несколько часов, чтобы узнать, как это BlueZработает (видео, на которое я ссылаюсь, сплошное золото). Он использует то, что называется D-Bus. Прочитайте немного о D-Bus. Если вам нравится Python, посмотрите код в тестовой папке. Прочитайте руководство по питону dbus один или два раза. Это окупится так хорошо. Я потратил впустую несколько дней, пытаясь найти что-то легкое, но это оказалось лучшим способом.

Удачи!


оригинальная страница bluez кажется мертвой
not2qubit

1
Большое спасибо за эту сумму. Я следовал нескольким учебникам ( learn.adafruit.com/install-bluez-on-the-raspberry-pi/… | fam-haugk.de/starting-with-bluetooth-le-on-the-raspberry-pi ), но только ваш заставил это работать. Две заметки: - Страница Bluez: bluez.org/download - Чтобы создать символическую ссылку, выполните: 1. Переименуйте старую: sudo mv /usr/lib/bluetooth/bluetoothd /usr/lib/bluetooth/bluetoothd-543.orig2. Создайте символическую ссылку: sudo ln -s /usr/libexec/bluetooth/bluetoothd /usr/lib/bluetooth/bluetoothd
Еще

Я рад, что это сработало! Я также сделал комментарии, которые вы предложили. Приветствия
Охотник Акинс

Здесь есть один шаг: прочтите README и установите зависимости, которые могут превратиться в каскад зависимостей. Это помогает: rrbluetoothx.blogspot.nl/2016/04/…
brianfit

3

Я установил его на свой Raspberry Pi 3 с ОС Raspbian GNU / Linux 8 (jessie). Это было немного сложно, но эти шаги сработали для меня. Я установил его после прочтения вашего поста.

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

Ответ @Hunter Akins спас меня от такого большого разочарования, когда он сказал (перефразировано): серьезно, познакомься с BlueZ. Познакомьтесь с D-BUS. Познакомьтесь с командами bluetoothctl, systemctl и bluetoothd.

Проблема заключается в том, что после выпуска Bluez5.42 в сентябре 2016 года многие пакеты, которые используются в онлайн-руководствах, устарели ( https://wiki.archlinux.org/index.php/Bluetooth#Trou устранение неполадок ). О, и пакет Bluez строго отсутствует в официальной документации.

Вот команды, которые я использовал для запуска Bluetooth на 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
ханк этой информации соответствует PDF шаг за шагом найти на bluetooth.com blog.bluetooth.com/bluez-on-raspberry-pi
Остина
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.