2016-12-22 39 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”。这样,我可以成功连接并注册我的服务。

我在博客中发现了这个提示。为什么发行说明或这个星球上的其他东西从未宣布过这一点,我不知道。