Télécommande unifiée: Bluetooth: impossible de se connecter au SDP

11

J'ai installé Unified Remote aujourd'hui dans l'espoir de pouvoir l'utiliser avec mon adaptateur Bluetooth pour contrôler mon PC à l'aide de mon téléphone. Mais en installant Unified Remote et en chargeant l'interface Web, j'ai eu cette erreur:

Bluetooth: impossible de se connecter au SDP

Google n'a absolument rien d'utile à propos de cette erreur, c'est donc l'une de mes seules chances ici.

quelques sorties:

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)

Le démarrage de Bluetoothd avec l'argument --compat ne résoudra pas le problème.

Que puis-je faire?

/ edit: J'ai résolu ce problème en démarrant le serveur distant unifié en tant que sudo. Est-ce vraiment la seule option que j'ai?

Noneatme
la source

Réponses:

20

Vous devez exécuter le démon bluetooth en mode de compatibilité pour fournir des interfaces de ligne de commande obsolètes. Vous utilisez Bluez5 et vous avez besoin de certaines fonctions Bluez4. Vous pouvez le faire en modifiant ce fichier

/etc/systemd/system/dbus-org.bluez.service et changer cette ligne

ExecStart=/usr/lib/bluetooth/bluetoothd pour ça

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

puis redémarrer le bluetooth comme celui-ci

sudo systemctl daemon-reload
sudo systemctl restart bluetooth

et vous devrez également modifier les autorisations sur /var/run/sdp

sudo chmod 777 /var/run/sdp

et enfin redémarrer le serveur distant unifié

Leo Pedraza
la source
Merci de votre aide. Pouvez-vous également me faire savoir comment rendre cette autorisation permanente? Au moment du redémarrage de mon PC, l'autorisation est perdue. Merci
Adrian
Désolé de bump, je veux aussi savoir comment rendre l'autorisation permanente car je rencontre le même problème. Le correctif ci-dessus a fonctionné mais je veux le rendre automatique chaque fois que je démarre.
wjrochester
Je suis sur Debian et je n'ai pas ce fichier = /
Dimitri Kopriwa
3

Une autre solution:

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

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

Parce que les autorisations de / var / run / sdp semblent se réinitialiser à chaque redémarrage.

Esa Nikulainen
la source
Je suis sur Debian et je n'ai pas ce fichier = /
Dimitri Kopriwa
1

J'ai réussi à le faire fonctionner en créant un nouveau systemdservice.

  1. Créez un fichier de configuration nommé /etc/systemd/system/urserver.serviceavec le contenu 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. Définissez les autorisations sur le fichier:

    sudo chmod a+x /etc/systemd/system/urserver.service
    
  3. Recharger le systemddémon:

    sudo systemctl daemon-reload
    
  4. Démarrez le service réel:

    sudo systemctl start urserver
    

Vous devez désactiver "Démarrer automatiquement le serveur au démarrage du système d'exploitation". à partir des paramètres distants unifiés (interface Web), car systemddémarrera le service automatiquement. systemdredémarrera également le service s'il se bloque pour une raison quelconque.

Édité: Environnement et PIDFile, grâce à Niklas

Esa Nikulainen
la source
Je voudrais suggérer une amélioration de la configuration ci-dessus. urserver-starts'exécute maintenant en tant que root et tente de créer le répertoire pidfile, .config et .remotes à la racine du système. Si vous le définissez pour s'exécuter en tant qu'un autre utilisateur, la modification des autorisations sur / var / run / sdp échoue. Ce que j'ai fait, c'est de changer l'environnement urserver-starten ajoutant Environment="HOME=/opt/urserver"et en changeant PIDFile=/opt/urserver/.urserver/urserver.pidsous [Service]. Maintenant, il démarre sans erreurs et répertoires errants ou manquants.
Niklas
Cette réponse, ainsi que l'ajout --compatpour le service Bluetooth, devrait vraiment être la réponse acceptée car il s'agit d'une solution persistante sur plusieurs redémarrages.
Niklas
Les autorisations d'exécution ne devraient pas être nécessaires sur les fichiers de service systemd, car il ne s'agit pas de scripts. Veuillez retirer le chmod.
Phillip -Zyan K Lee- Stockmann
Pour activer le démarrage automatique au démarrage systemctl enable urserver.servicepeut être exécuté.
Phillip -Zyan K Lee- Stockmann
0

J'ai combiné les autres réponses pour que cela fonctionne et le faire persister lors des redémarrages. Voici un guide étape par étape pour le faire fonctionner:

Décochez la case "Démarrer automatiquement le serveur au démarrage du système d'exploitation". dans l'interface graphique des paramètres de la télécommande unifiée.

Arrêtez urserver. Vous pouvez le faire avec:

    user@machine:~$ sudo killall urserver

Ensuite, comme Leo Pedraza l'a dit, éditez /etc/systemd/system/dbus-org.bluez.service et changez cette ligne

    ExecStart=/usr/lib/bluetooth/bluetoothd 

pour ça

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

Ensuite, faites comme Esa Nikulainen et Niklas l'ont suggéré et créez un nouveau service systemd comme ceci:

Créez un fichier de configuration nommé /etc/systemd/system/urserver.service avec le contenu 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

Recharger le démon systemd:

    user@machine:~$ sudo systemctl daemon-reload

Redémarrez le bluetooth comme ceci:

    user@machine:~$ sudo systemctl restart bluetooth

Démarrez le nouveau service:

    user@machine:~$ sudo systemctl start urserver

Activez le nouveau service pour qu'il s'exécute au démarrage:

    user@machine:~$ sudo systemctl enable urserver

MERCI Leo Pedraza , Esa Nikulainen et Niklas d' avoir compris toutes les pièces!

andyanderso
la source
Cela ne répond pas vraiment à la question. Si vous avez une autre question, vous pouvez la poser en cliquant sur Poser une question . Vous pouvez également ajouter une prime pour attirer davantage l'attention sur cette question une fois que vous avez suffisamment de réputation . - De l'avis
Phillip -Zyan K Lee- Stockmann
J'ai modifié mon message pour fournir une réponse réelle qui combine les autres réponses en un guide étape par étape plus complet.
andyanderso
Avoir des autorisations d'exécution ne devrait pas être nécessaire sur un service systemd. Je suggère de retirer le chmod.
Phillip -Zyan K Lee- Stockmann