統合リモート: Bluetooth: SDP に接続できませんでした

統合リモート: Bluetooth: SDP に接続できませんでした

今日、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

  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
    

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

ありがとうレオ・ペドラザエサ・ニクライネン、 そしてニクラスすべてのピースを解明してくれてありがとう!

関連情報