Cài đặt Bluez 5.44 lên Raspbian?


9

Có ai đã có thể cài đặt thành công Bluez 5.44 lên Raspbian chưa? Tôi muốn sử dụng cái này trên cả Raspi 3 và Raspi Zero W.

Tôi đã làm theo nhiều hướng dẫn khác nhau nhưng tất cả đều cài đặt các phiên bản Bluez sớm hơn 5,44. Tôi không thể làm theo bất kỳ hướng dẫn nào trong số này và kết thúc với cài đặt Bluez 5.44 hoạt động.

Bất cứ ai đã làm điều này, xin vui lòng chia sẻ các bước của bạn.


Tôi đã thử nhiều hướng dẫn và đây là cách duy nhất thực sự có hiệu quả: learn.adafbean.com/install-bluez-on-the-raspberry-pi/ trộm Với sự khác biệt duy nhất là tôi có tệp .tar của mình từ: mirror.edge. kernel.org/pub/linux/bluetooth và tôi đã tải xuống phiên bản 5.52, phiên bản mới nhất vào thời điểm đó.
Hurri

Câu trả lời:


11

Ở đây hơi muộn, nhưng gần đây tôi bị đau đầu khi làm theo nhiều hướng dẫn khác nhau, không có hướng dẫn nào phù hợp với tôi. Vì vậy, đây là một hướng dẫn khác ... có lẽ sẽ không hiệu quả với bạn;)

Tôi đã tải xuống phiên bản mới nhất từ ​​trang chính thức: bluez.org/doad . Nếu trang đó đã chết, thay vào đó hãy sử dụng trang này .

Ví dụ: tại thời điểm viết nó là 5,47, vì vậy tôi đã sử dụng (trên quả mâm xôi của mình):

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

Sau đó, tôi trích xuất nó và xây dựng nó:

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

Đọc README! Nó liệt kê các phụ thuộc và các công tắc cấu hình:

Trước tiên hãy cài đặt các phụ thuộc: (glib, dbus, libdbus, udev, v.v.) Hầu hết chúng đã được cài đặt và nếu không, chúng sẽ dễ cài đặt, tất cả được cung cấp bởi trình quản lý gói. Khi bạn đã thực hiện điều đó:

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

Tôi cũng đã thêm --enable-experimentalvì tôi tin rằng đối tượng GattCharacteristic là một phần của các tính năng thử nghiệm. Sau đó làm:

make
sudo make install

Có thể mất 10 phút để biên dịch. Sau khi cài đặt, bạn nên tìm bluetoothdtrong /usr/libexec/bluetooth. Bạn cũng sẽ thấy bluetoothd trong /usr/lib/bluetooth.

Đi đến từng thư mục và loại

./bluetoothd --version

Bạn sẽ lưu ý rằng một trong libexec là mới và một trong lib là cũ.

BlueZ tạo ra các đối tượng và giao diện d-bus này để hiển thị các thiết bị bluetooth cho bạn theo những cách hay.

Để đảm bảo rằng d-bus đang nói chuyện với bạn BlueZ 5.47 mới chứ không phải BlueZ 5.23 của bạn , bạn cần nói systemdđể sử dụng daemon bluetooth mới:

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

Hãy chắc chắn rằng exec.startdòng trỏ đến daemon mới của bạn /usr/libexec/bluetooth.

Đối với tôi, điều đó là không đủ. Dù thế nào đi chăng nữa, khi khởi động lại, tôi luôn có bluetoothd 5.23 ... Vì vậy, tôi chỉ cần tạo một liên kết tượng trưng từ cái cũ sang cái mới.

Đầu tiên đổi tên tập tin cũ:

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

Tạo liên kết tượng trưng:

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

Nên làm vậy.

Bây giờ, tôi phải nói điều này, mặc dù nó không liên quan đến câu hỏi :

Nếu bạn muốn phát triển một ứng dụng cho số pi của mình, hãy đọc thư mục tài liệu blueZ . Nó giới thiệu cho bạn một thứ gọi là d-bus , thứ thực sự đáng để tìm hiểu và cho phép bạn phát triển ứng dụng của mình bằng python, node.js hoặc c (và hơn thế nữa). Xem video này trên bluez dev .

Có rất nhiều cá trích đỏ ngoài kia: các hàm bao cố gắng cung cấp cho bạn chức năng "dễ dàng". Ngay cả các tài nguyên nói rằng thiếu tài liệu về cách phát triển bluetooth. Tuy nhiên, ngay khi bạn muốn làm bất cứ điều gì ngoài việc chỉ cần kết nối với thiết bị và xem các đặc điểm của nó, bạn sẽ nhận ra trình bao bọc sẽ làm bạn thất vọng.

Làm cho mình một việc. Hãy dành vài giờ để tìm hiểu cách thức BlueZhoạt động (video tôi liên kết là vàng nguyên khối). Nó sử dụng một cái gì đó gọi là d-bus. Đọc một chút về d-bus. Nếu bạn thích Python, hãy xem mã trong thư mục thử nghiệm. Đọc hướng dẫn về python dbus một hoặc hai lần. Nó sẽ trả hết một cách độc đáo. Tôi đã lãng phí một vài ngày để cố gắng tìm một cái gì đó dễ dàng, nhưng điều này hóa ra là cách tốt nhất.

Chúc may mắn!


trang bluez ban đầu dường như đã chết
not2qubit

1
Rất cám ơn cho tổng hợp đó. Tôi đi theo một vài hướng dẫn ( learn.adafruit.com/install-bluez-on-the-raspberry-pi/... | fam-haugk.de/starting-with-bluetooth-le-on-the-raspberry-pi ) nhưng chỉ của bạn làm cho nó hoạt động. Hai lưu ý: - Trang Bluez là: bluez.org/doad - Để tạo symlink làm: 1. Đổi tên cũ: sudo mv /usr/lib/bluetooth/bluetoothd /usr/lib/bluetooth/bluetoothd-543.orig2. Tạo symlink: sudo ln -s /usr/libexec/bluetooth/bluetoothd /usr/lib/bluetooth/bluetoothd Có thể cảm ơn lần nữa :)
Thor_Bux 17/1/18

Tôi rất vui vì nó đã làm việc! Tôi cũng đã thực hiện các ý kiến ​​bạn đề nghị. Chúc mừng
Hunter Akins

Có một bước ở đây, Đọc README và cài đặt các phụ thuộc, có thể biến thành một tầng phụ thuộc. Điều này giúp: rrbluetoothx.blogspot.nl/2016/04/ trên
brianfit

3

Tôi đã cài đặt nó trên Raspberry Pi 3 với HĐH Raspbian GNU / Linux 8 (jessie). Đó là một chút khó khăn nhưng những bước này làm việc cho tôi. Tôi đã cài đặt nó sau khi đọc bài viết của bạn.

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

Sau này tôi không tìm thấy bộ chuyển đổi. Việc tiếp theo tôi làm là

sudo service bluetooth start
sudo service bluetooth status

Vẫn không có bộ chuyển đổi. Điều này là do phần sụn nên tôi phải làm điều này tiếp theo

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

Cuối cùng gõ:

sudo usermod -G bluetooth -a pi

Sau đó kiểm tra xem nó có hoạt động không bằng cách gõ:

cat /etc/group | grep bluetooth

Nếu nó hoạt động bạn sẽ thấy điều này trong thiết bị đầu cuối của bạn

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

Lệnh cuối cùng

sudo reboot

Hy vọng điều này làm việc cho bạn.

Cảm ơn trang web này đã giúp đỡ https://www.pi-supply.com/make/fix-raspberry-pi-3-bluetooth-issues/


1

Câu trả lời của @Hunter Akins đã cứu tôi khỏi quá nhiều thất vọng khi anh ấy nói (diễn giải): nghiêm túc, làm quen với BlueZ. Nhận biết D-BUS. Nhận biết các lệnh bluetoothctl, systemctl và bluetoothd.

Vấn đề là, kể từ khi phát hành Bluez5.42 vào tháng 9 năm 2016, nhiều gói mà hướng dẫn trực tuyến sử dụng đã không được chấp nhận ( https://wiki.archlinux.org/index.php/Bluetooth#Troubledh Boot ). Ồ, và gói Bluez đang thiếu tài liệu chính thức.

Dưới đây là các lệnh tôi đã sử dụng để chạy Bluetooth trên Raspberry Pi Zero W, từ bản cài đặt mới:

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

Ripped từ câu trả lời và ý kiến ​​trên:

$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 

Tôi tìm thấy thêm lỗi:

$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

Tôi giả sử bạn muốn sử dụng gói bluez bạn vừa cài đặt. Tôi sử dụng các bước sau để kết nối với thiết bị BLE ngay sau khi khởi động lại hệ thống (được cung cấp quá lâu sau khi khởi động lại, nó không thành công). Tôi chưa thử nghiệm đủ để tìm ra một kết nối nhất quán. Các dòng được mở đầu bằng "pi @ raspberrypi: ~ $" và "[bluetooth] #" là đầu vào của tôi; phần còn lại là phản hồi.

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

Tôi đang kết nối với thiết bị BLE. Lệnh cặp sẽ không hoạt động, vì nó được dành cho 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
hunk của thông tin này phù hợp với pdf từng bước được tìm thấy trên blog
austin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.