我使用 BlueZ 5.30 和内核 3.13.0-32,我需要通过 DBus 在我的应用程序中实现读/写特征功能。
我正在使用 BlueZ 测试脚本来建立连接:
“测试发现”,然后是“测试设备连接”。
问题是我没有在 DBus (org.bluez) 中看到任何服务。使用 d-feet 应用程序我只能看到:
“/org/bluez/hci0/dev_btaddr” 接口(interface) org.bluez.Device1 org.freedesktop/DBus.Introspectable org.freedesktop.DBus.Properties
在“/var/log/syslog”中我可以看到很多:
“bluetoothd[715]:无法使用句柄 0x0045 为设备注册 GATT 服务...”
使用 gatttool 我能够读/写特征、初选等。在 hcidump 下我看到所有特征都被正确读取。
但是,从 DBus PoV 来看,只有 Device1 接口(interface)可用。
这是我的 BlueZ 配置: “ ./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var --enable-library --disable-systemd --enable-experimental --enable-维护者模式--启用调试 "
我在看这里:“http://i-miss-erin.blogspot.com/2010/12/gatt-related-dbus-api.html ”,但正如我提到的,这里没有显示任何界面或服务。
为了测试,我使用接近和隐藏设备。 在隐藏的情况下,正确连接后我可以在终端窗口(隐藏键盘设备)中看到字符,所以我认为它工作正常。
有什么建议吗?
最佳答案
您必须激活蓝牙设备的实验功能才能启用 GATT 服务。
在 Debian 系统上,您可以通过放置
NOPLUGIN_OPTION="-E"
进入 /etc/default/bluetooth
文件。
重启后,为了让我的设备 (Logitech MX Master) 在我的 Debian Stretch 上正常工作,我还必须使用 bluetoothctl
命令手动配对并信任它。我使用 Gnome 的图形蓝牙工具没有成功。
关于Linux BlueZ dbus 通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31380594/