统一远程:蓝牙:无法连接到SDP


11

我今天安装了Unified Remote,希望可以将其与蓝牙适配器一起使用以通过手机控制PC。但是,当我安装Unified Remote并加载Web界面时,出现此错误:

蓝牙:无法连接到SDP

Google对此错误毫无帮助,因此这是我唯一的机会之一。

一些输出:

noneatme@noneatme-desktop:/etc/bluetooth$ sudo sdptool browse local
Failed to connect to SDP server on FF:FF:FF:00:00:00: Connection refused

Ubuntu 16.04

noneatme@noneatme-desktop:/etc/bluetooth$ uname -a
Linux noneatme-desktop 4.4.0-22-generic #40-Ubuntu SMP Thu May 12 22:03:46 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

noneatme@noneatme-desktop:/etc/bluetooth$ /usr/lib/bluetooth/bluetoothd -C
D-Bus setup failed: Connection ":1.129" is not allowed to own the service "org.bluez" due to security policies in the configuration file
(it works with sudo)

使用--compat参数启动蓝牙无法解决问题。

我能做什么?

/ edit:我通过以sudo启动统一远程服务器来解决此问题。这真的是我唯一的选择吗?

Answers:


20

您需要在兼容模式下运行蓝牙守护程序,以提供已弃用的命令行界面。您正在运行Bluez5,并且需要一些Bluez4函数。您可以通过编辑此文件来实现

/etc/systemd/system/dbus-org.bluez.service 并改变这条线

ExecStart=/usr/lib/bluetooth/bluetoothd 对此

ExecStart=/usr/lib/bluetooth/bluetoothd --compat

然后像这样重启蓝牙

sudo systemctl daemon-reload
sudo systemctl restart bluetooth

而且您还必须更改对 /var/run/sdp

sudo chmod 777 /var/run/sdp

最后重启统一远程服务器


感谢您的帮助。您还可以让我知道如何将许可永久化吗?在重启我的电脑时,权限丢失。谢谢
阿德里安

抱歉,我也想知道如何使该权限永久生效,因为我遇到了同样的问题。上面的修复程序有效,但是我想在每次启动时使其自动运行。
wjrochester

我正在使用debian,但我没有此文件= /
Dimitri Kopriwa '19

3

另一个解决方案:

编辑/etc/systemd/system/dbus-org.bluez.service:

ExecStart=/usr/lib/bluetooth/bluetoothd --compat
ExecStartPost=/bin/chmod 777 /var/run/sdp

因为/ var / run / sdp的权限似乎在每次重新启动时都会重置。


我正在使用debian,但我没有此文件= /
Dimitri Kopriwa '19

1

我设法通过创建新systemd服务使其工作。

  1. 创建一个配置文件,其名称/etc/systemd/system/urserver.service为:

    [Unit]
    Description=Unified Remote Server
    After=syslog.target network.target
    
    [Service]
    Environment="HOME=/opt/urserver"
    Type=forking
    PIDFile=/opt/urserver/.urserver/urserver.pid
    ExecStartPre=/bin/chmod 777 /var/run/sdp
    ExecStart=/opt/urserver/urserver-start --no-manager --no-notify
    ExecStop=/opt/urserver/urserver-stop
    
    RemainAfterExit=no
    Restart=on-failure
    RestartSec=5s
    
    [Install]
    WantedBy=default.target
    
  2. 在文件上设置权限:

    sudo chmod a+x /etc/systemd/system/urserver.service
    
  3. 重新加载systemd守护进程:

    sudo systemctl daemon-reload
    
  4. 启动实际服务:

    sudo systemctl start urserver
    

您应该禁用“操作系统启动时自动启动服务器”。从Unified Remote Settings(Web界面),因为systemd它将自动启动服务。systemd如果由于某种原因而崩溃,它也会重新启动服务。

编辑:环境和PIDFile,感谢Niklas


我想建议对上述配置进行改进。urserver-start现在以root身份运行,并尝试在系统根目录中创建pidfile,.config目录和.remotes目录。如果将其设置为以其他用户身份运行,则修改/ var / run / sdp的权限将失败。我所做的是改变环境,urserver-start通过增加Environment="HOME=/opt/urserver"和改变PIDFile=/opt/urserver/.urserver/urserver.pid[Service]。现在,它开始时不会出现错误,目录混乱或丢失。
尼古拉斯

这个答案,加上--compat为蓝牙服务添加的,实际上应该是公认的答案,因为它是多次重启后的持久解决方案。
尼克拉斯,

systemd服务文件不需要执行权限,因为它们不是脚本。请删除chmod。
菲利普-Zyan K Lee- Stockmann,

要启用启动时自动启动,systemctl enable urserver.service可能会运行。
菲利普-Zyan K Lee- Stockmann,

0

我结合了其他答案来使它正常工作,并使其在重新启动后仍然存在。这是逐步操作的指南:

取消选中“操作系统启动时自动启动服务器”。统一远程设置GUI中的“框”。

停止urserver。您可以执行以下操作:

    user@machine:~$ sudo killall urserver

接下来,如Leo Pedraza所说,编辑/etc/systemd/system/dbus-org.bluez.service并更改此行

    ExecStart=/usr/lib/bluetooth/bluetoothd 

对此

    ExecStart=/usr/lib/bluetooth/bluetoothd --compat

然后按照Esa NikulainenNiklas的建议进行操作,并创建一个新的systemd服务,如下所示:

创建一个名为/etc/systemd/system/urserver.service的配置文件,其内容为:

    [Unit]
    Description=Unified Remote Server
    After=syslog.target network.target

    [Service]
    Environment="HOME=/opt/urserver"
    Type=forking
    PIDFile=/opt/urserver/.urserver/urserver.pid
    ExecStartPre=/bin/chmod 777 /var/run/sdp
    ExecStart=/opt/urserver/urserver-start --no-manager --no-notify
    ExecStop=/opt/urserver/urserver-stop

    RemainAfterExit=no
    Restart=on-failure
    RestartSec=5s

    [Install]
    WantedBy=default.target

重新加载systemd守护程序:

    user@machine:~$ sudo systemctl daemon-reload

重新启动蓝牙,如下所示:

    user@machine:~$ sudo systemctl restart bluetooth

启动新服务:

    user@machine:~$ sudo systemctl start urserver

启用新服务,使其在启动时运行:

    user@machine:~$ sudo systemctl enable urserver

谢谢Leo PedrazaEsa NikulainenNiklas弄清楚了所有内容!


这并不能真正回答问题。如果您有其他问题,可以点击提问。一旦您拥有足够的声誉,您还可以悬赏以吸引更多对此问题的关注。- 来自评论
Phillip -Zyan K Lee-Stockmann

我更改了帖子,以提供一个实际的答案,将其他答案组合成更全面的分步指南。
andyanderso

在systemd服务上不需要执行权限。我建议删除chmod。
菲利普-Zyan K Lee- Stockmann,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.