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


11

今日、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として起動することで、この問題を修正しました。これが本当に唯一の選択肢ですか?

回答:


20

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

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


ご協力ありがとうございました。また、許可を永続的にする方法を教えてください。私のPCを再起動するときに、権限が失われます。ありがとう
エイドリアン

同じ問題が発生しているので、アクセス許可を永続的にする方法も知りたいです。上記の修正は機能しましたが、起動するたびに自動的に修正したいと考えています。
wjrochester、

私はdebianを使用していて、このファイルを持っていません= /
Dimitri Kopriwa

3

別の解決策:

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

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

/ var / run / sdpの権限は、再起動するたびにリセットされるように見えるためです。


私はdebianを使用していて、このファイルを持っていません= /
Dimitri Kopriwa

1

新しい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サービスが自動的に開始されるため、統合リモート設定(Webインターフェース)から。systemd何らかの理由でクラッシュした場合にもサービスを再起動します。

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


上記の構成の改善を提案したいと思います。urserver-start現在はルートとして実行され、システムルートにpidfile、.configディレクトリ、.remotesディレクトリを作成しようとします。別のユーザーとして実行するように設定すると、/ var / run / sdpの権限の変更は失敗します。でurserver-start追加Environment="HOME=/opt/urserver"と変更を行うことPIDFile=/opt/urserver/.urserver/urserver.pidで、環境を変更しました[Service]。これで、エラーなしで開始され、ディレクトリが失われたり欠落したりします。
Niklas

この回答--compatは、bluetoothサービスへの追加と合わせて、複数の再起動にまたがる永続的なソリューションであるため、実際に受け入れられる回答になるはずです。
Niklas

systemdサービスファイルはスクリプトではないため、実行権限は必要ありません。chmodを削除してください。
Phillip -Zyan K Lee- Stockmann

起動時に自動起動を有効にするためsystemctl enable urserver.serviceに実行することができます。
Phillip -Zyan K Lee- Stockmann

0

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

「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

YOU THANK レオペドラザエサNikulainen、およびニクラスのすべてのピースを考え出すために!


これは実際には質問の答えにはなりません。別の質問がある場合は、[ 質問する]をクリックして質問できます。賞金追加して、十分な評判を得たら、この質問にもっと注意を向けることもできます。- 口コミより
フィリップ-Zyan K Lee-ストックマン

他の回答をより包括的なステップバイステップガイドに組み合わせた実際の回答を提供するように投稿を変更しました。
アンディアンデルソ

systemdサービスでは、実行権限を持つ必要はありません。chmodを削除することをお勧めします。
Phillip -Zyan K Lee- Stockmann
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.