携帯電話を使用してPCを制御するためにBluetoothアダプタで使用できるように、今日はUnified Remoteをインストールしました。しかし、Unified RemoteをインストールしてWebインターフェイスをロードすると、次のエラーが発生しました。
Bluetooth:SDPに接続できませんでした
Googleはこのエラーに関して何の役にも立たないので、これはここでの唯一のチャンスの1つです。
いくつかの出力:
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引数を使用してBluetoothdを起動しても、問題は解決しません。
私に何ができる?
/ edit:統合リモートサーバーをSudoとして起動して、この問題を修正しました。これは本当に私が持っている唯一のオプションですか?
非推奨のコマンドラインインターフェイスを提供するには、互換モードでbluetoothデーモンを実行する必要があります。 Bluez5を実行していて、いくつかのBluez4関数が必要です。これを行うには、このファイルを編集します
/etc/systemd/system/dbus-org.bluez.service
およびこの行の変更
ExecStart=/usr/lib/bluetooth/bluetoothd
これ
ExecStart=/usr/lib/bluetooth/bluetoothd --compat
そして、このようにBluetoothを再起動します
Sudo systemctl daemon-reload
Sudo systemctl restart bluetooth
/var/run/sdp
の権限も変更する必要があります
Sudo chmod 777 /var/run/sdp
最後に統合リモートサーバーを再起動します
別の解決策:
/etc/systemd/system/dbus-org.bluez.serviceを編集します。
ExecStart=/usr/lib/bluetooth/bluetoothd --compat
ExecStartPost=/bin/chmod 777 /var/run/sdp
/ var/run/sdpのアクセス許可は、再起動するたびにリセットされるためです。
新しい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
「OSの起動時にサーバーを自動的に起動する」を無効にする必要があります。 systemd
はサービスを自動的に開始するため、Unified Remote Settings(Webインターフェイス)から。 systemd
は、何らかの理由でクラッシュした場合にもサービスを再起動します。
編集:環境とPIDFile、Niklasのおかげ
他の回答を組み合わせてこれを機能させ、再起動しても持続するようにしました。これを機能させるためのステップバイステップガイドがあります。
「OSの起動時にサーバーを自動的に起動する」のチェックを外します。統合リモート設定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 Nikulainen と Niklas を提案して、次のような新しい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
次のようにBluetoothを再起動します。
user@machine:~$ Sudo systemctl restart bluetooth
新しいサービスを開始します。
user@machine:~$ Sudo systemctl start urserver
起動時に実行されるように新しいサービスを有効にします。
user@machine:~$ Sudo systemctl enable urserver
ありがとう Leo Pedraza 、 Esa Nikulainen 、および Niklas すべてのピースを理解してくれた!