2015-07-13 76 views
3

我使用BlueZ 5.30和内核3.13.0-32,我需要通过DBus在我的应用程序中实现读/写特性功能。Linux BlueZ dbus通信

我使用的BlueZ测试脚本来建立连接:

“测试发现”,然后在“测试设备连接”。

问题是我没有看到DBus(org.bluez)中显示的任何服务。使用d英尺的应用程序,我只能看到:

“/组织/ bluez的/ hci0/dev_btaddr” 接口 org.bluez.Device1 org.freedesktop/DBus.Introspectable org.freedesktop.DBus.Properties

和 “在/ var/log/syslog的” 我可以看到很多的:

“bluetoothd [715]:无法注册与手柄0x0045用于设备GATT服务......” 使用gatttool我

能读/写特征,初选等在hcidump我看到al l的特性被正确读取。

但是,从DBus PoV只有Device1接口可用。

这里是我的配置的BlueZ: “ 的./configure --prefix =/USR --mandir =的/ usr/share/man的--sysconfdir = /等--localstatedir =/VAR --enable-库 - -disable-systemd --enable-实验--enable-维护模式--enable-调试 “

我一直在寻找在这里:” http://i-miss-erin.blogspot.com/2010/12/gatt-related-dbus-api.html“,但正如我所说,没有哪个是任何接口或服务显示在这里。

对于测试,我使用接近和隐藏设备。 在隐藏的情况下,正确的连接后,我可以看到终端窗口中的字符(隐藏键盘设备),所以我认为它可以正常工作。

有什么建议吗?

+1

我解决了我的问题。这个问题是由bluetoothd在没有“-E”的情况下运行造成的,它使BlueZ的实验部分成为可能。 –

+0

你是如何在启动过程中添加-E的?我一直试图将它添加到/etc/init.d/bluetooth中的守护进程中,但似乎并没有办法。你在哪里添加它? – Brook

回答

2

您必须激活蓝牙设置的实验功能才能启用GATT服务。

在Debian系统中,你可以做到这一点通过把

NOPLUGIN_OPTION="-E"

/etc/default/bluetooth文件。

重新启动后,为了让我的设备(Logitech MX Master)在我的Debian Stretch上正常工作,我还必须使用bluetoothctl命令手动配对并信任它。 Gnome的图形蓝牙工具没有成功。

+0

使用较新的基于System的系统,请将'/ lib/systemd/system/bluetooth.service'复制到'/ etc/systemd/system/bluetooth。服务“,并将ExecStart行更改为ExecStart =/usr/lib/bluetooth/bluetoothd -E。 –