Control remoto unificado: Bluetooth: no se pudo conectar al SDP

11

Instalé Unified Remote hoy con la esperanza de poder usarlo con mi adaptador bluetooth para controlar mi PC usando mi teléfono. Pero cuando instalé Unified Remote y cargué la interfaz web, recibí este error:

Bluetooth: no se pudo conectar a SDP

Google no tiene absolutamente nada útil sobre este error, por lo que esta es una de mis únicas oportunidades aquí.

algunas salidas:

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)

Iniciar Bluetoothd con el argumento --compat no solucionará el problema.

¿Que puedo hacer?

/ edit: Solucioné este problema iniciando el servidor remoto unificado como sudo. ¿Es esta realmente la única opción que tengo?

Noneatme
fuente

Respuestas:

20

Debe ejecutar el daemon bluetooth en modo de compatibilidad para proporcionar interfaces de línea de comandos en desuso. Está ejecutando Bluez5 y necesita algunas funciones de Bluez4. Puede hacer esto editando este archivo

/etc/systemd/system/dbus-org.bluez.service y cambiando esta línea

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

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

y luego reiniciando bluetooth como este

sudo systemctl daemon-reload
sudo systemctl restart bluetooth

y también tendrás que cambiar los permisos en /var/run/sdp

sudo chmod 777 /var/run/sdp

y finalmente reiniciar el servidor remoto unificado

Leo Pedraza
fuente
Gracias por tu ayuda. ¿También puede decirme cómo haría que el permiso sea permanente? En el momento de reiniciar mi PC, se pierde el permiso. Gracias
Adrian
Perdón por toparme, también quiero saber cómo hacer que el permiso sea permanente porque me encuentro con el mismo problema. La corrección anterior funcionó, pero quiero que sea automática cada vez que arranque.
wjrochester
Estoy en Debian y no tengo este archivo = /
Dimitri Kopriwa
3

Otra solución:

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

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

Porque los permisos de / var / run / sdp parecen restablecerse en cada reinicio.

Esa Nikulainen
fuente
Estoy en Debian y no tengo este archivo = /
Dimitri Kopriwa
1

Logré que funcionara creando un nuevo systemdservicio.

  1. Cree un archivo de configuración /etc/systemd/system/urserver.servicecon el contenido de:

    [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. Establezca los permisos en el archivo:

    sudo chmod a+x /etc/systemd/system/urserver.service
    
  3. Recargar systemddemonio:

    sudo systemctl daemon-reload
    
  4. Comience el servicio real:

    sudo systemctl start urserver
    

Debe deshabilitar "Iniciar automáticamente el servidor cuando se inicia el sistema operativo". desde la Configuración remota unificada (interfaz web), ya systemdque iniciará el servicio automáticamente. systemdtambién reiniciará el servicio si falla por algún motivo.

Editado: Medio ambiente y archivo PID, gracias a Niklas

Esa Nikulainen
fuente
Me gustaría sugerir una mejora a la configuración anterior. urserver-startahora se ejecuta como raíz e intenta crear el archivo pidfile, el directorio .config y el directorio .remotes en la raíz del sistema. Si lo configura para ejecutarse como otro usuario, la modificación de los permisos en / var / run / sdp falla. Lo que hice fue cambiar el entorno urserver-startagregando Environment="HOME=/opt/urserver"y cambiando PIDFile=/opt/urserver/.urserver/urserver.piddebajo [Service]. Ahora comienza sin errores y directorios perdidos o faltantes.
Niklas
Esta respuesta, junto con la adición --compatpara el servicio bluetooth, realmente debería ser la respuesta aceptada, ya que es una solución persistente en múltiples reinicios.
Niklas
Los permisos de ejecución no deberían ser necesarios en los archivos de servicio systemd, ya que no son scripts. Por favor, elimine el chmod.
Phillip -Zyan K Lee- Stockmann
Para habilitar el inicio automático en el arranque systemctl enable urserver.servicese puede ejecutar.
Phillip -Zyan K Lee- Stockmann
0

Combiné las otras respuestas para hacer que esto funcione y hacer que persista durante los reinicios. Aquí hay una guía paso a paso para que funcione:

Desmarque "Iniciar automáticamente el servidor cuando se inicia el sistema operativo". cuadro en la GUI de configuración remota unificada.

Deja de urserver. Puedes hacer esto con:

    user@machine:~$ sudo killall urserver

A continuación, como dijo Leo Pedraza , edite /etc/systemd/system/dbus-org.bluez.service y cambie esta línea.

    ExecStart=/usr/lib/bluetooth/bluetoothd 

a esto

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

Luego haga lo que Esa Nikulainen y Niklas sugirieron y cree un nuevo servicio systemd así:

Cree un archivo de configuración llamado /etc/systemd/system/urserver.service con contenido de:

    [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

Recargar systemd daemon:

    user@machine:~$ sudo systemctl daemon-reload

Reinicie bluetooth así:

    user@machine:~$ sudo systemctl restart bluetooth

Comience el nuevo servicio:

    user@machine:~$ sudo systemctl start urserver

Habilite el nuevo servicio para que se ejecute al inicio:

    user@machine:~$ sudo systemctl enable urserver

¡GRACIAS Leo Pedraza , Esa Nikulainen y Niklas por descubrir todas las piezas!

andyanderso
fuente
Esto realmente no responde la pregunta. Si tiene una pregunta diferente, puede hacerla haciendo clic en Hacer pregunta . También puede agregar una recompensa para llamar más la atención sobre esta pregunta una vez que tenga suficiente reputación . - De la opinión
Phillip -Zyan K Lee- Stockmann
Cambié mi publicación para proporcionar una respuesta real que combine las otras respuestas en una guía paso a paso más completa.
andyanderso
Tener permisos de ejecución no debería ser necesario en un servicio systemd. Sugeriría eliminar el chmod.
Phillip -Zyan K Lee- Stockmann