Ở đâ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-experimental
vì 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
bluetoothd
trong /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ũ 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.start
dò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 BlueZ
hoạ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!