통합 원격: Bluetooth: SDP에 연결할 수 없습니다.

통합 원격: Bluetooth: SDP에 연결할 수 없습니다.

Bluetooth 어댑터와 함께 사용하여 휴대폰으로 PC를 제어할 수 있기를 바라며 오늘 통합 원격을 설치했습니다. 하지만 통합 원격을 설치하고 웹 인터페이스를 로드할 때 다음 오류가 발생했습니다.

블루투스: 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

더 이상 사용되지 않는 명령줄 인터페이스를 제공하려면 호환 모드에서 블루투스 데몬을 실행해야 합니다. Bluez5를 실행 중이고 일부 Bluez4 기능이 필요합니다. 이 파일을 편집하면 됩니다.

/etc/systemd/system/dbus-org.bluez.service 그리고 이 줄을 바꾸면

ExecStart=/usr/lib/bluetooth/bluetoothd 이에

ExecStart=/usr/lib/bluetooth/bluetoothd --compat

그런 다음 이렇게 블루투스를 다시 시작하세요.

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
    

"OS 시작 시 자동으로 서버 시작"을 비활성화해야 합니다. 통합 원격 설정(웹 인터페이스)에서 systemd서비스가 자동으로 시작되기 때문입니다. systemd어떤 이유로든 서비스가 중단되는 경우에도 서비스를 다시 시작합니다.

편집됨: Niklas 덕분에 환경 및 PIDFile

답변4

이 작업을 수행하고 재부팅을 통해 지속되도록 하기 위해 다른 답변을 결합했습니다. 다음은 작동을 위한 단계별 가이드입니다.

"OS 시작 시 자동으로 서버 시작"을 선택 취소합니다. 통합 원격 설정 GUI의 상자.

서버를 중지하세요. 다음을 사용하여 이 작업을 수행할 수 있습니다.

    user@machine:~$ sudo killall urserver

다음으로레오 페드라자/etc/systemd/system/dbus-org.bluez.service를 편집하고 이 줄을 변경했다고 말했습니다.

    ExecStart=/usr/lib/bluetooth/bluetoothd 

이에

    ExecStart=/usr/lib/bluetooth/bluetoothd --compat

그런 다음 다음과 같이하십시오에사 니쿨라이넨그리고니클라스다음과 같이 새로운 시스템 서비스를 제안하고 생성합니다.

다음 내용으로 /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

다음과 같이 블루투스를 다시 시작하세요.

    user@machine:~$ sudo systemctl restart bluetooth

새 서비스를 시작합니다.

    user@machine:~$ sudo systemctl start urserver

시작 시 실행되도록 새 서비스를 활성화합니다.

    user@machine:~$ sudo systemctl enable urserver

감사합니다레오 페드라자,에사 니쿨라이넨, 그리고니클라스모든 부분을 알아내기 위해!

관련 정보