web-dev-qa-db-ja.com

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

携帯電話を使用して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として起動して、この問題を修正しました。これは本当に私が持っている唯一のオプションですか?

9
Noneatme

非推奨のコマンドラインインターフェイスを提供するには、互換モードで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

最後に統合リモートサーバーを再起動します

17
Leo Pedraza

別の解決策:

/etc/systemd/system/dbus-org.bluez.serviceを編集します。

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

/ var/run/sdpのアクセス許可は、再起動するたびにリセットされるためです。

3
Esa Nikulainen

新しい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
    

「OSの起動時にサーバーを自動的に起動する」を無効にする必要があります。 systemdはサービスを自動的に開始するため、Unified Remote Settings(Webインターフェイス)から。 systemdは、何らかの理由でクラッシュした場合にもサービスを再起動します。

編集:環境とPIDFile、Niklasのおかげ

1
Esa Nikulainen

他の回答を組み合わせてこれを機能させ、再起動しても持続するようにしました。これを機能させるためのステップバイステップガイドがあります。

「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 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

次のようにBluetoothを再起動します。

    user@machine:~$ Sudo systemctl restart bluetooth

新しいサービスを開始します。

    user@machine:~$ Sudo systemctl start urserver

起動時に実行されるように新しいサービスを有効にします。

    user@machine:~$ Sudo systemctl enable urserver

ありがとう Leo PedrazaEsa Nikulainen 、および Niklas すべてのピースを理解してくれた!

0
andyanderso