Telecomando unificato: Bluetooth: impossibile connettersi a SDP


11

Ho installato Unified Remote oggi nella speranza di poterlo utilizzare con il mio adattatore bluetooth per controllare il mio PC tramite il mio telefono. Ma quando ho installato Unified Remote e caricato l'interfaccia web, ho riscontrato questo errore:

Bluetooth: impossibile connettersi a SDP

Google non ha assolutamente nulla di utile su questo errore, quindi questa è una delle mie uniche possibilità qui.

alcune uscite:

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)

L'avvio di Bluetoothd con l'argomento --compat non risolverà il problema.

Cosa posso fare?

/ modifica: ho risolto questo problema avviando il server remoto unificato come sudo. È davvero l'unica opzione che ho?

Risposte:


20

È necessario eseguire il demone bluetooth in modalità compatibilità per fornire interfacce della riga di comando obsolete. Stai eseguendo Bluez5 e hai bisogno di alcune funzioni Bluez4. Puoi farlo modificando questo file

/etc/systemd/system/dbus-org.bluez.service e cambiando questa linea

ExecStart=/usr/lib/bluetooth/bluetoothd a questo

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

e quindi riavviare il bluetooth in questo modo

sudo systemctl daemon-reload
sudo systemctl restart bluetooth

e dovrai anche cambiare le autorizzazioni su /var/run/sdp

sudo chmod 777 /var/run/sdp

e infine riavviare il server remoto unificato


Grazie per l'aiuto. Puoi anche farmi sapere come rendere permanente l'autorizzazione? Al momento quando riavvio il mio pc, l'autorizzazione è persa. Grazie
Adrian il

Scusate il problema, voglio anche sapere come rendere permanente l'autorizzazione perché sto riscontrando lo stesso problema. La correzione di cui sopra ha funzionato ma voglio renderla automatica ogni volta che avvio.
wjrochester,

Sono su Debian e non ho questo file = /
Dimitri Kopriwa il

3

Un'altra soluzione:

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

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

Perché le autorizzazioni di / var / run / sdp sembrano reimpostarsi ad ogni riavvio.


Sono su Debian e non ho questo file = /
Dimitri Kopriwa il

1

Sono riuscito a farlo funzionare creando un nuovo systemdservizio.

  1. Creare un file di configurazione denominato /etc/systemd/system/urserver.servicecon il contenuto di:

    [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. Imposta le autorizzazioni sul file:

    sudo chmod a+x /etc/systemd/system/urserver.service
    
  3. Ricarica systemddemone:

    sudo systemctl daemon-reload
    
  4. Inizia il servizio attuale:

    sudo systemctl start urserver
    

È necessario disabilitare "Avvia automaticamente il server all'avvio del sistema operativo". da Unified Remote Settings (interfaccia web), perché systemdavvierà automaticamente il servizio. systemdriavvia anche il servizio se si blocca per qualche motivo.

A cura di: Environment and PIDFile, grazie a Niklas


Vorrei suggerire un miglioramento alla configurazione sopra. urserver-startora viene eseguito come root e tenta di creare il pidfile, la directory .config e la directory .remotes nella radice del sistema. Se lo si imposta per essere eseguito come un altro utente, la modifica delle autorizzazioni su / var / run / sdp non riesce. Quello che ho fatto è stato cambiare l'ambiente urserver-startaggiungendo Environment="HOME=/opt/urserver"e cambiando PIDFile=/opt/urserver/.urserver/urserver.pidsotto [Service]. Ora inizia senza errori e directory vaganti o mancanti.
Niklas,

Questa risposta, insieme all'aggiunta --compatper il servizio bluetooth, dovrebbe davvero essere la risposta accettata poiché è una soluzione persistente su più riavvii.
Niklas,

Le autorizzazioni di esecuzione non dovrebbero essere necessarie sui file di servizio di systemd, poiché non sono script. Rimuovere il chmod.
Phillip -Zyan K Lee- Stockmann,

Per abilitare l'avvio automatico all'avvio systemctl enable urserver.servicepuò essere eseguito.
Phillip -Zyan K Lee- Stockmann,

0

Ho combinato le altre risposte per farlo funzionare e farlo persistere attraverso i riavvii. Ecco una guida dettagliata per farlo funzionare:

Deseleziona "Avvia automaticamente il server all'avvio del sistema operativo". casella nella GUI delle impostazioni di Unified Remote.

Arresta urserver. Puoi farlo con:

    user@machine:~$ sudo killall urserver

Successivamente, come ha detto Leo Pedraza, modifica /etc/systemd/system/dbus-org.bluez.service e cambia questa riga

    ExecStart=/usr/lib/bluetooth/bluetoothd 

a questo

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

Quindi fai come suggerito da Esa Nikulainen e Niklas e crea un nuovo servizio di sistema come questo:

Creare un file di configurazione denominato /etc/systemd/system/urserver.service con contenuti di:

    [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

Ricarica demone systemd:

    user@machine:~$ sudo systemctl daemon-reload

Riavvia il bluetooth in questo modo:

    user@machine:~$ sudo systemctl restart bluetooth

Inizia il nuovo servizio:

    user@machine:~$ sudo systemctl start urserver

Abilita il nuovo servizio in modo che venga eseguito all'avvio:

    user@machine:~$ sudo systemctl enable urserver

GRAZIE Leo Pedraza , Esa Nikulainen e Niklas per aver capito tutti i pezzi!


Questo non risponde davvero alla domanda. Se hai una domanda diversa, puoi farla facendo clic su Poni domanda . Puoi anche aggiungere una taglia per attirare più attenzione a questa domanda una volta che hai abbastanza reputazione . - Dalla recensione
Phillip -Zyan K Lee- Stockmann

Ho modificato il mio post per fornire una risposta effettiva che combini le altre risposte in una guida dettagliata più completa.
andyanderso,

Avere autorizzazioni di esecuzione non dovrebbe essere necessario su un servizio systemd. Suggerirei di rimuovere il chmod.
Phillip -Zyan K Lee- Stockmann,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.