
我今天安裝了 Unified Remote,希望能夠將其與藍牙適配器一起使用,以透過手機控制我的電腦。但當我安裝 Unified Remote 並載入 Web 介面時,出現以下錯誤:
藍牙:無法連線到 SDP
谷歌對這個錯誤絕對沒有任何幫助,所以這是我唯一的機會之一。
一些輸出:
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 參數啟動藍牙無法解決問題。
我能做些什麼?
/編輯:我透過以 sudo 啟動統一遠端伺服器來解決此問題。這真的是我唯一的選擇嗎?
答案1
您需要在相容模式下執行藍牙守護程式才能提供已棄用的命令列介面。您正在執行 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
最後重啟統一遠端伺服器
答案2
另一個解決方案:
編輯/etc/systemd/system/dbus-org.bluez.service:
ExecStart=/usr/lib/bluetooth/bluetoothd --compat
ExecStartPost=/bin/chmod 777 /var/run/sdp
因為 /var/run/sdp 的權限似乎在每次重新啟動時都會重置。
答案3
我設法透過創建一項新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
設定檔案的權限:
sudo chmod a+x /etc/systemd/system/urserver.service
重新載入
systemd
守護程式:sudo systemctl daemon-reload
啟動實際服務:
sudo systemctl start urserver
您應該禁用“作業系統啟動時自動啟動伺服器”。從統一遠端設定(Web 介面),因為systemd
會自動啟動服務。systemd
如果因為某些原因崩潰,也會重新啟動服務。
編輯:環境和 PIDFile,感謝 Niklas
答案4
我結合了其他答案來使其正常工作並使其在重新啟動後持續存在。以下是讓它發揮作用的分步指南:
取消勾選「作業系統啟動時自動啟動伺服器」。統一遠端設定 GUI 中的框。
停止你的伺服器。您可以透過以下方式執行此操作:
user@machine:~$ sudo killall urserver
接下來為利奧·佩德拉薩說編輯 /etc/systemd/system/dbus-org.bluez.service 並更改此行
ExecStart=/usr/lib/bluetooth/bluetoothd
對此
ExecStart=/usr/lib/bluetooth/bluetoothd --compat
然後按照埃薩·尼庫萊寧和尼克拉斯建議並建立一個新的 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