
今日、Bluetooth アダプターを使用して携帯電話から PC を制御できるようにするために、Unified Remote をインストールしました。しかし、Unified Remote をインストールして Web インターフェイスをロードすると、次のエラーが発生しました。
Bluetooth: 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 引数を指定して Bluetoothd を起動しても問題は解決しません。
私に何ができる?
/edit: 統合リモート サーバーを sudo として起動することでこの問題を解決しました。これが本当に唯一の選択肢でしょうか?
答え1
非推奨のコマンドラインインターフェースを提供するには、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
最後に統合リモートサーバーを再起動します
答え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
systemd
はサービスを自動的に起動するため、Unified Remote Settings (Web インターフェイス) から「OS 起動時にサーバーを自動的に起動する」を無効にする必要があります。systemd
また、何らかの理由でクラッシュした場合にもサービスを再起動します。
編集: 環境と PIDFile、Niklas に感謝します
答え4
他の回答を組み合わせて、これを機能させ、再起動後も持続するようにしました。これを機能させるためのステップバイステップのガイドは次のとおりです。
Unified Remote 設定 GUI で、「OS 起動時にサーバーを自動的に起動する」ボックスのチェックを外します。
urserver を停止します。これは次のように実行できます。
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
次のように Bluetooth を再起動します。
user@machine:~$ sudo systemctl restart bluetooth
新しいサービスを開始します。
user@machine:~$ sudo systemctl start urserver
新しいサービスを有効にして、起動時に実行されるようにします。
user@machine:~$ sudo systemctl enable urserver