我正在尝试通过 bluez 在 Linux 上构建蓝牙服务。根据该教程 [http://people.csail.mit.edu/albert/bluez-intro/x604.html],必须连接到本地 SDP 服务器才能注册服务。但是“sdp_connect(BDADDR_ANY, BDADDR_LOCAL, SDP_RETRY_IF_BUSY)”在这里返回 NULL,显然,所有与蓝牙相关的服务都在我的 Fedora 上运行,没有任何问题。每当我尝试通过命令“sdptool browse local”获取有关 SDP 本地服务器的信息时,我都会收到以下消息:“无法连接到 FF:FF:FF:00:00:00 上的 SDP 服务器:连接被拒绝”。一些用户说有必要让 sdpd 运行才能使用 sdp_connect,这里没有名为 sdpd 的二进制包,但我认为 sdpd 现在是 Fedora 上 bluetoothd 的一部分,所以当 sdp_connect 尝试时应该运行 sdp 服务器连接。为什么 sdp_connect 不起作用?
最佳答案
您必须使用 --compat 标志启动 bluetoothd。我不知道这是否是“Fedora 方式”,但我编辑了/usr/lib/systemd/system/bluetooth.service 并将标志包含在 ExecStart 选项中。
ExecStart=/usr/libexec/bluetooth/bluetoothd --compat
然后
$ systemctl daemon-reload
$ systemctl restart bluetooth.service
关于linux - 在 Fedora 20 上使用 bluez 注册一个 sdp 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22739906/