如何使用dbus-send来调用org.bluez.Adapter1.StartDiscovery?

时间:2017-04-21 19:19:26

标签: dbus bluez

我正在尝试使用dbus-send命令行工具与Bluez 5.44进行交互。我似乎无法让它正确地开始发现,虽然它在我使用bluetoothctl的{​​{1}}和scan on命令时工作正常。我也可以使用scan off启动和停止发现。

我在发出命令之前尝试过关闭电源,但似乎没有开始发现。

我正在使用的命令行是:

d-feet

发出此命令时我通常从dbus-send --system --type=method_call --print-reply --dest=org.bluez \ /org/bluez/hci0 \ org.bluez.Adapter1.StartDiscovery 得到的是dbus-monitor属性为Discovering

供参考,这是false显示的内容。

这个命令我做错了什么?

1 个答案:

答案 0 :(得分:3)

问题是dbus-send几乎立即退出。 BlueZ跟踪请求发现的客户端(将适配器的D-Bus代理打开),当没有更多客户端请求发现时,发现将停止。

d-feet和bluetoothctl是长生存进程,可以将org.bluez.Adapter1代理保持在适配器上。

我使用我正在处理的glib客户端遇到了同样的问题,解决方法是将D-Bus代理对象保持在适配器上。

如果你必须坚持使用dbus-send,这可能是个坏消息。