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?

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


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.


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


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!


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.