Unified Remote: Bluetooth: Nie można połączyć się z SDP

11

Zainstalowałem dziś Unified Remote z nadzieją, że będę mógł go używać z adapterem Bluetooth do sterowania komputerem za pomocą telefonu. Ale kiedy zainstalowałem Unified Remote i załadowałem interfejs WWW, dostałem ten błąd:

Bluetooth: Nie można połączyć się z SDP

Google nie ma absolutnie nic pomocnego w tym błędzie, więc jest to jedna z moich jedynych szans.

niektóre wyjścia:

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)

Uruchomienie Bluetoothd z argumentem --compat nie rozwiąże problemu.

Co mogę zrobić?

/ edit: Rozwiązałem ten problem, uruchamiając zunifikowany serwer zdalny jako sudo. Czy to naprawdę jedyna opcja, którą mam?

Noneatme
źródło

Odpowiedzi:

20

Aby uruchomić przestarzałe interfejsy wiersza poleceń, należy uruchomić demona bluetooth w trybie zgodności. Używasz Bluez5 i potrzebujesz niektórych funkcji Bluez4. Możesz to zrobić, edytując ten plik

/etc/systemd/system/dbus-org.bluez.service i zmieniając tę ​​linię

ExecStart=/usr/lib/bluetooth/bluetoothd do tego

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

a następnie ponownie uruchamiając bluetooth w ten sposób

sudo systemctl daemon-reload
sudo systemctl restart bluetooth

i będziesz musiał zmienić uprawnienia do /var/run/sdp

sudo chmod 777 /var/run/sdp

i wreszcie zrestartuj ujednolicony zdalny serwer

Leo Pedraza
źródło
Dziękuję za pomoc Czy możesz również dać mi znać, w jaki sposób uczynisz zezwolenie stałym? W momencie ponownego uruchamiania komputera uprawnienia są tracone. Dzięki
Adrian
Przepraszam, że wpadłem, chcę też wiedzieć, jak ustawić zezwolenie na stałe, ponieważ mam ten sam problem. Powyższa poprawka działała, ale chcę, aby była automatyczna przy każdym uruchomieniu.
wjrochester,
Jestem na Debianie i nie mam tego pliku = /
Dimitri Kopriwa
3

Inne rozwiązanie:

Edytuj /etc/systemd/system/dbus-org.bluez.service:

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

Ponieważ uprawnienia do / var / run / sdp wydają się resetować przy każdym ponownym uruchomieniu.

Esa Nikulainen
źródło
Jestem na Debianie i nie mam tego pliku = /
Dimitri Kopriwa
1

Udało mi się go uruchomić, tworząc nową systemdusługę.

  1. Utwórz plik konfiguracji o nazwie /etc/systemd/system/urserver.servicez zawartością:

    [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. Ustaw uprawnienia do pliku:

    sudo chmod a+x /etc/systemd/system/urserver.service
    
  3. Przeładuj systemddemona:

    sudo systemctl daemon-reload
    
  4. Uruchom rzeczywistą usługę:

    sudo systemctl start urserver
    

Należy wyłączyć opcję „Automatycznie uruchom serwer po uruchomieniu systemu operacyjnego”. z Unified Remote Settings (interfejs WWW), ponieważ systemdusługa uruchomi się automatycznie. systemdponownie uruchomi usługę, jeśli z jakiegoś powodu ulegnie awarii.

Edytowano: Środowisko i plik PID, dzięki Niklas

Esa Nikulainen
źródło
Chciałbym zaproponować ulepszenie powyższej konfiguracji. urserver-startteraz działa jako root i próbuje utworzyć plik pidfile, katalog .config i katalog .remotes w katalogu głównym systemu. Jeśli ustawisz, aby działał jako inny użytkownik, wówczas modyfikowanie uprawnień w katalogu / var / run / sdp nie powiedzie się. To, co zrobiłem, to zmiana środowiska urserver-startpoprzez dodanie Environment="HOME=/opt/urserver"i zmianę PIDFile=/opt/urserver/.urserver/urserver.pidpod [Service]. Teraz zaczyna się bez błędów i zbłąkanych lub brakujących katalogów.
Niklas
Ta odpowiedź, wraz z dodaniem --compatdo usługi bluetooth, powinna naprawdę być odpowiedzią akceptowaną, ponieważ jest trwałym rozwiązaniem na wiele restartów.
Niklas
Uprawnienia do wykonywania nie powinny być potrzebne dla plików usługi systemowej, ponieważ nie są to skrypty. Proszę usunąć chmod.
Phillip -Zyan K Lee- Stockmann
Aby włączyć automatyczne uruchamianie przy rozruchu, systemctl enable urserver.servicemożna uruchomić.
Phillip -Zyan K Lee- Stockmann
0

Połączyłem pozostałe odpowiedzi, aby to zadziałało i sprawiło, że będzie się utrzymywało poprzez ponowne uruchomienie. Oto przewodnik krok po kroku, jak to działa:

Odznacz opcję „Automatycznie uruchom serwer po uruchomieniu systemu operacyjnego”. pole w graficznym interfejsie użytkownika ustawień Unified Remote.

Przestań urserver. Możesz to zrobić za pomocą:

    user@machine:~$ sudo killall urserver

Następnie, jak powiedział Leo Pedraza , edytuj /etc/systemd/system/dbus-org.bluez.service i zmień ten wiersz

    ExecStart=/usr/lib/bluetooth/bluetoothd 

do tego

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

Następnie postępuj zgodnie z sugestiami Esa Nikulainen i Niklas i utwórz nową usługę systemową w następujący sposób:

Utwórz plik konfiguracyjny o nazwie /etc/systemd/system/urserver.service z zawartością:

    [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

Przeładuj demona systemd:

    user@machine:~$ sudo systemctl daemon-reload

Uruchom ponownie Bluetooth w ten sposób:

    user@machine:~$ sudo systemctl restart bluetooth

Uruchom nową usługę:

    user@machine:~$ sudo systemctl start urserver

Włącz nową usługę, aby działała podczas uruchamiania:

    user@machine:~$ sudo systemctl enable urserver

DZIĘKUJEMY Leo Pedraza , Esa Nikulainen i Niklas za zrozumienie wszystkich elementów!

andyanderso
źródło
To tak naprawdę nie odpowiada na pytanie. Jeśli masz inne pytanie, możesz je zadać, klikając Zadaj pytanie . Możesz także dodać nagrodę za zwrócenie większej uwagi na to pytanie, gdy będziesz mieć wystarczającą reputację . - Z recenzji
Phillip -Zyan K Lee- Stockmann
Zmieniłem swój post, aby podać rzeczywistą odpowiedź, która łączy inne odpowiedzi w bardziej obszerny przewodnik krok po kroku.
andyanderso
Posiadanie uprawnień do wykonywania nie powinno być potrzebne w usłudze systemd. Sugerowałbym usunięcie chmod.
Phillip -Zyan K Lee- Stockmann