2016-12-22 40 views
0

哪裏是藍牙服務發現協議(SDP)守護進程?藍牙SDP - 哪裏是sdpd?

我想註冊使用的bluez Debian的V8.0藍牙服務。我使用示例代碼https://people.csail.mit.edu/albert/bluez-intro/。一切順利,直到我試圖

sdp_connect(BDADDR_ANY, BDADDR_LOCAL, 0); 

其失敗。一些挖後,我發現SDP進程(使用sdpd)(以它需要連接)未運行,實際上並不甚至我的系統上。

我試了一下:

  1. 我已經安裝(apt-get的)每藍牙或bluez的包似乎遠程相關,但仍然沒有使用sdpd。
  2. 我試圖用我的Android手機(使用相同的代碼)地址進行連接。這工作得很好,但當然是沒用的。
  3. 難道對這個問題的詳盡的谷歌搜索,但沒有找到明確的答案。很多關於hcid,pand等的討論,但沒有關於這些相關性的明確答案。

我的目標:

我想我的Debian系統上登記自己的服務,讓我可以從其他藍牙設備連接到它(尤其是我的Android)。該服務運行良好,沒有SDP註冊就無法找到它。

我很高興能夠使用它的(已知)頻道號直接連接到它,但Android只能通過註冊服務UUID連接(即使用BluetoothDevice.createRfcommSocketToServiceRecord(uuid)),但我看不到API連接到頻道

有趣的是,我可以通過通道,而不是周圍的其他方式連接到在Android的服務。我認爲也許sdpd已經過時了 - 所有的參考資料都有幾年的歷史了。

回答

1

不知道這是否會幫助你,但它可能是值得一試。我也遇到了Debian 8藍牙的一些問題;我通過啓用Debian backports和下載blueman的最新回送版本解決了我的問題。要做到這一點,首先卸載當前的藍牙包(主要的,如bluez),然後該線(或類似)添加到您的/etc/apt/sources.list

deb http://ftp.debian.org/debian jessie-backports main contrib non-free 
deb-src http://ftp.debian.org/debian jessie-backports main contrib non-free 

然後運行apt-get update並安裝反向移植版本。我建議使用下面的代碼,以確保該配置文件更新到最新版本:

apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -qy -o DPkg::options::="--force-confnew" -t jessie-backports install blueman 

重新啓動計算機,看看它現在的工作。注意:在Debian上啓用backports不會安裝所有可用軟件的backport版本(您也不希望這樣做)。只有當你特別要求回送版本時(就像我們上面所做的那樣),它纔會被安裝。所有其他軟件包將保持原樣(穩定)。更新時,您的backport軟件包將使用最新的backport版本進行更新,您的穩定軟件包將使用最新的穩定版本進行更新。

編輯:編輯此答案以添加一些增強功能和信息。

+0

感謝您的建議。我有一個輕微(我認爲)與新來源apt-get更新的問題。有什麼似乎是警告「以下簽名無法驗證,因爲公鑰不可用:...」。我認爲這只是一個警告。我嘗試了apt-cache搜索「jessie」,「backports」,「bluez」等任何東西,但沒有看到任何相關的東西尚未安裝。我也被「DEBIAN_FRONTEND = ...」這一行所困惑。那去哪了? – DontPanic

+0

我建議你在安裝新的之前首先卸載你的藍牙軟件包(我將其添加到我的答案中)。通過apt-get安裝'blueman'的backport版本應該可以獲得所有你需要的(backport或not)依賴關係 - 請參閱:https://packages.debian.org/jessie-backports/blueman。不知道你的「...公共密鑰不可用:...」警告,它不應該發生。在你添加backports到你的'/ etc/apt/sources.list'之後,你應該運行apt-get update(我把它添加到我的答案中)。 'DEBIAN_FRONTEND =非交互'位是可選的,以使其無輔助地運行。 –

+0

另請注意,我相信通過藍牙進行連接並將您的外部設備安裝爲卷並將文件/文件夾複製並粘貼到設備/計算機上的能力已經在Debian 8上「逐步淘汰」了。現在他們迫使您使用「推送」系統(或稱爲「推送」系統),以便您可以在計算機/設備上選擇一個文件/文件夾,並將其「推送」到另一個文件/文件夾。在Debian 8上,我永遠不會有2個窗口顯示設備和計算機的文件,並在窗口之間複製和粘貼(可惜)。即使推送功能只與backport軟件包一起工作。 –

0

[已解決]顯然,sdpd早已不復存在。它的功能已被bluetoothd包容。要使其工作,請使用--compat標誌,例如

bluetoothd --compat 

這應該被添加到「/etc/init.d/bluetooth」。這樣,我可以成功連接並註冊我的服務。

我在博客中發現了這個提示。爲什麼發行說明或這個星球上的其他東西從未宣佈過這一點,我不知道。