2017-04-21 79 views
0

我正在嘗試使用dbus-send命令行工具與Bluez 5.44進行交互。我似乎無法讓它正常開始發現,但當我使用bluetoothctlscan onscan off命令時,它工作正常。我也可以使用d-feet來啓動和停止發現。如何使用dbus-send調用org.bluez.Adapter1.StartDiscovery?

我試過在發出命令之前關閉電源,但它似乎沒有啓動發現。

我使用的命令行是:

dbus-send --system --type=method_call --print-reply --dest=org.bluez \ 
    /org/bluez/hci0             \ 
    org.bluez.Adapter1.StartDiscovery 

什麼我通常會在發出這條命令是從dbus-monitor是,Discovering屬性爲false

僅供參考,這是d-feet顯示的內容。

我在做這個命令的錯誤是什麼?

+0

有一個想法。與會話有關係嗎? – Ana

+0

試試sudo? –

+0

嘗試通過在運行'bluetoothctl'的同時運行'sudo dbus-monitor --system'來監視'bluetoothctl scan'的功能。看看它在總線上做了什麼,除了你用'dbus-send'嘗試的東西。 –

回答

2

問題是dbus-send幾乎立即退出。 BlueZ會跟蹤請求發現的客戶端(使D-Bus代理服務器打開適配器),當沒有其他客戶端請求時,發現將停止。

d-feet和bluetoothctl是長期存在的進程,它將org.bluez.Adapter1代理保持在適配器上。

我遇到了同樣的問題,我正在開發一個glib客戶端,那裏的解決方案是讓D-Bus代理對象保持適配器活着。

如果你必須堅持使用dbus-send,這可能是個壞消息。