Здесь я немного опоздал, но недавно у меня возникла головная боль, когда я следил за различными руководствами, ни одно из которых не помогло мне. Так что вот еще один гид ... который, вероятно, не будет работать для вас;)
Я скачал самую последнюю версию с официальной страницы: 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 один или два раза. Это окупится так хорошо. Я потратил впустую несколько дней, пытаясь найти что-то легкое, но это оказалось лучшим способом.
Удачи!