【问题标题】:How to use dbus-send to call org.bluez.Adapter1.StartDiscovery?如何使用 dbus-send 调用 org.bluez.Adapter1.StartDiscovery?
【发布时间】:2017-09-18 21:52:50
【问题描述】:

我正在尝试使用 dbus-send 命令行工具与 Bluez 5.44 进行交互。我似乎无法让它正确地开始发现,尽管当我使用bluetoothctlscan onscan 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

作为参考,这是d-feet 显示的内容。

.

这个命令我做错了什么?

【问题讨论】:

  • 想到了。与会话有关?
  • 用 sudo 试试?
  • 尝试通过在运行bluetoothctl 的同时运行sudo dbus-monitor --system 来监控bluetoothctl scan on 所做的事情。看看它是否在总线上做任何你正在尝试使用 dbus-send 的东西。

标签: dbus bluez


【解决方案1】:

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

d-feet 和 bluetoothctl 是长期存在的进程,它们使适配器的 org.bluez.Adapter1 代理保持活动状态。

我正在使用的 glib 客户端遇到了同样的问题,解决方案是让适配器的 D-Bus 代理对象保持活动状态。

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

【讨论】:

    猜你喜欢
    • 2014-09-02
    • 2016-07-10
    • 2021-11-18
    • 2011-04-11
    • 2015-02-28
    • 2015-12-04
    • 2021-12-05
    • 2017-06-15
    • 1970-01-01
    相关资源
    最近更新 更多