蓝牙服务发现协议(SDP)守护程序在哪里?
我正在使用bluez在Debian V8.0上注册蓝牙服务。我使用https://people.csail.mit.edu/albert/bluez-intro/上的示例代码。一切顺利,直到我尝试……
sdp_connect( BDADDR_ANY, BDADDR_LOCAL, 0 );
出现故障。经过一番探索,我发现需要连接的sdp守护进程(sdpd)并未运行,实际上在我的系统中甚至不存在。
我尝试过:
- 我已安装(使用apt-get)所有似乎与蓝牙或bluez有关的软件包,但仍然没有sdpd。
- 我尝试使用我的Android手机的地址进行连接(使用相同的代码)。那个可以正常工作,但当然毫无用处。
- 我在Google上进行了详尽的搜索,但没有找到明确的答案。有很多关于hcid、pand等内容的讨论,但没有明确说明这些内容与问题的相关性。
我的目标:
我正在尝试在我的Debian系统上注册我的服务,以便可以从另一个蓝牙设备(特别是我的Android设备)连接到它。该服务运行良好,只是没有SDP注册就无法找到它。
我希望能够直接连接到它,使用它的(已知的)通道号码,但Android只能通过注册的服务UUID连接(即使用BluetoothDevice.createRfcommSocketToServiceRecord(uuid)
),但我看不到连接到通道的API。
有趣的是,我可以通过通道号码连接到Android上的服务,但反过来却不行。我认为sdpd可能已经过时了-所有与它有关的参考都是几年前的。
blueman
的后备版本应该会为您提供所有所需的依赖项(无论是否是后备版本)-请参阅:https://packages.debian.org/jessie-backports/blueman。关于您的“...公钥不可用:...”警告,我不确定它是否会发生。在将后备版本添加到您的`/etc/apt/sources.list`之后,您应该运行apt-get update(我已将此添加到我的答案中)。DEBIAN_FRONTEND=noninteractive
部分是可选的,以使其无需人工干预运行。 - Jamil Said