Remoto unificado: Bluetooth: não foi possível conectar ao SDP

11

Instalei o Unified Remote hoje, na esperança de poder usá-lo com meu adaptador bluetooth para controlar meu PC usando meu telefone. Mas, quando instalei o Unified Remote e carreguei a interface da Web, recebi este erro:

Bluetooth: Não foi possível conectar ao SDP

O Google não tem absolutamente nada de útil sobre esse erro, portanto essa é uma das minhas únicas chances aqui.

algumas saídas:

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 o Bluetoothd com o argumento --compat não solucionará o problema.

O que eu posso fazer?

/ edit: Corrigi esse problema iniciando o servidor remoto unificado como sudo. Esta é realmente a única opção que tenho?

Noneatme
fonte

Respostas:

20

Você precisa executar o daemon bluetooth no modo de compatibilidade para fornecer interfaces de linha de comando obsoletas. Você está executando o Bluez5 e precisa de algumas funções do Bluez4. Você pode fazer isso editando este arquivo

/etc/systemd/system/dbus-org.bluez.service e mudando essa linha

ExecStart=/usr/lib/bluetooth/bluetoothd para isso

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

e depois reiniciar o bluetooth assim

sudo systemctl daemon-reload
sudo systemctl restart bluetooth

e você também terá que alterar as permissões em /var/run/sdp

sudo chmod 777 /var/run/sdp

e, finalmente, reinicie o servidor remoto unificado

Leo Pedraza
fonte
Obrigado pela ajuda. Você também pode me informar como você tornaria a permissão permanente? No momento em que reiniciar o meu PC, a permissão é perdida. Graças
Adrian
Desculpe, mas também quero saber como tornar a permissão permanente porque estou com o mesmo problema. A correção acima funcionou, mas quero torná-la automática sempre que inicializar.
Wjrochester #
Estou no debian e não tenho este arquivo = /
Dimitri Kopriwa
3

Outra solução:

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

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

Porque as permissões de / var / run / sdp parecem redefinir a cada reinicialização.

Esa Nikulainen
fonte
Estou no debian e não tenho este arquivo = /
Dimitri Kopriwa
1

Consegui fazê-lo funcionar criando um novo systemdserviço.

  1. Crie um arquivo de configuração nomeado /etc/systemd/system/urserver.servicecom o conteúdo 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. Defina as permissões no arquivo:

    sudo chmod a+x /etc/systemd/system/urserver.service
    
  3. Atualizar systemddaemon:

    sudo systemctl daemon-reload
    
  4. Inicie o serviço real:

    sudo systemctl start urserver
    

Você deve desativar "Iniciar automaticamente o servidor quando o SO iniciar". nas Configurações remotas unificadas (interface da web), porque systemdiniciará o serviço automaticamente. systemdtambém reiniciará o serviço se ele travar por algum motivo.

Editado: Environment e PIDFile, graças a Niklas

Esa Nikulainen
fonte
Eu gostaria de sugerir uma melhoria na configuração acima. urserver-startagora é executado como raiz e tenta criar o diretório pidfile, .config e .remotes na raiz do sistema. Se você configurá-lo para ser executado como outro usuário, a modificação das permissões em / var / run / sdp falhará. O que eu fiz foi mudar o ambiente urserver-startadicionando Environment="HOME=/opt/urserver"e alterando PIDFile=/opt/urserver/.urserver/urserver.pidabaixo [Service]. Agora ele começa sem erros e diretórios perdidos ou perdidos.
Niklas
Esta resposta, juntamente com a adição --compatdo serviço bluetooth, deve ser realmente a resposta aceita, pois é uma solução persistente em várias reinicializações.
Niklas
As permissões de execução não devem ser necessárias nos arquivos de serviço do systemd, pois não são scripts. Por favor, remova o chmod.
Phillip -Zyan K Lee- Stockmann
Para ativar o início automático na inicialização, systemctl enable urserver.servicepode ser executado.
Phillip -Zyan K Lee- Stockmann
0

Combinei as outras respostas para fazer isso funcionar e persistir durante as reinicializações. Aqui está um guia passo a passo para fazê-lo funcionar:

Desmarque a opção "Iniciar automaticamente o servidor quando o sistema operacional for inicializado". caixa na GUI de configurações remotas unificadas.

Pare o servidor. Você pode fazer isso com:

    user@machine:~$ sudo killall urserver

Em seguida, como Leo Pedraza disse, edite o /etc/systemd/system/dbus-org.bluez.service e altere esta linha

    ExecStart=/usr/lib/bluetooth/bluetoothd 

para isso

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

Em seguida, faça o que Esa Nikulainen e Niklas sugeriram e crie um novo serviço systemd como este:

Crie um arquivo de configuração chamado /etc/systemd/system/urserver.service com o conteúdo 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

Recarregue o daemon systemd:

    user@machine:~$ sudo systemctl daemon-reload

Reinicie o bluetooth assim:

    user@machine:~$ sudo systemctl restart bluetooth

Inicie o novo serviço:

    user@machine:~$ sudo systemctl start urserver

Habilite o novo serviço para que ele seja executado na inicialização:

    user@machine:~$ sudo systemctl enable urserver

OBRIGADO Leo Pedraza , Esa Nikulainen e Niklas por descobrir todas as peças!

andyanderso
fonte
Isso realmente não responde à pergunta. Se você tiver uma pergunta diferente, faça-a clicando em Fazer pergunta . Você também pode adicionar uma recompensa para chamar mais atenção para essa pergunta quando tiver reputação suficiente . - Do comentário
Phillip -Zyan K Lee- Stockmann
Alterei minha postagem para fornecer uma resposta real que combine as outras respostas em um guia passo a passo mais abrangente.
andyanderso 01/05/19
Ter permissões de execução não deve ser necessário em um serviço systemd. Eu sugiro remover o chmod.
Phillip -Zyan K Lee- Stockmann