Envoi d'une pause / reprise de la lecture et des commandes Bluetooth de la piste suivante / précédente

10

J'aimerais que mon PC Ubuntu envoie des commandes audio bluetooth (lecture / pause, chanson suivante / précédente et tourner vers le haut / bas) vers un autre appareil diffusant de la musique via bluetooth. En d'autres termes, j'aimerais implémenter mon PC Ubuntu en "faisant semblant" d'être une sorte d'écouteurs bluetooth, qui sont capables de changer de piste, de mettre en pause et de reprendre la musique.

J'ai la configuration suivante illustrée avec les captures d'écran pavucontrol ci-dessous (l' pt2appareil est-il connecté via Bluetooth): entrez la description de l'image ici entrez la description de l'image ici

Dans cette configuration, le streaming fonctionne comme prévu (je peux entendre la musique en streaming pt2), mais je n'ai trouvé aucun moyen de lui envoyer un signal tel que la pause / reprise de la lecture ou le changement de piste.

J'ai déjà découvert qu'il existe de nombreux protocoles Bluetooth permettant des fonctions spécifiques. Si j'ai bien compris les spécifications, ce qui m'intéresse, c'est A2DP, qui est la façon dont les appareils sont connectés maintenant. Mais sous le menu déroulant de profil, j'ai également des options HSP / HFP headset head unit, HSP / HFPheadset gateway et off.

Je vais développer ma propre application en Python qui permettra d'envoyer de telles commandes, donc je suis intéressé à les envoyer via l'API Python ou via les commandes bash.

Je pose cette question parce que je suis intéressé par la façon dont je peux communiquer avec les appareils Bluetooth.

pt12lol
la source
Je n'ai pas l'occasion de tester, mais je suis également intéressé par la solution car je reçois le même problème, dans une discussion ici: ubuntuforums.org/… apparemment, il suffit d'ajouter un module d'entrée à charger, mais les informations ne sont pas un beaucoup dans la poste.
AtomiX84
@ AtomiX84 J'ai l'impression que j'ai un problème plutôt opposé. Je veux que mon PC fasse semblant d'écouteurs, pas d'écouteurs connectés à mon PC.
pt12lol
@kenn J'aimerais voir quelque chose de bien spécifique, tandis que la réponse à laquelle vous liez est assez générique. Pourriez-vous fournir un exemple plus détaillé spécifique à mon cas d'utilisation?
pt12lol
Je ne suis pas un expert dans ce domaine, vous pouvez rechercher github. Jetez également un œil à ce lien stackoverflow.com/questions/48932249/…
kenn

Réponses:

10

Inspiré par @kenn, j'ai décidé d'aller plus loin dans dbuset d-feetoutils. Finalement, j'ai atteint mon objectif en utilisant la commande suivante:

dbus-send --system --print-reply --dest=org.bluez /org/bluez/hci0/dev_44_78_3E_85_9D_6F org.bluez.MediaControl1.Play

ce qui a bien sûr déclenché la lecture de musique sur mon appareil mobile connecté à mon PC via Bluetooth.

De manière générique pour les appareils Bluetooth, cette commande ressemblerait à:

dbus-send --system --print-reply --dest=org.bluez /org/bluez/hci0/dev_<mobile_bluetooth_device_mac_address_with_numbers_underscore_separated> org.bluez.MediaControl1.<command_to_send>

Afin de vérifier l'exécution de l'adresse MAC de vos appareils bt-devices -l. Il répertorie tous les périphériques connus (mais pas nécessairement connectés ou même découverts) avec l'adresse MAC entre parenthèses.

Afin de trouver la liste des commandes autorisées, installez d-feetavec sudo apt install d-feet. Après l'avoir exécuté, appliquez la recherche de bluezrequête sous l' System Busonglet et recherchez l'entrée avec le MAC de vos appareils:

entrez la description de l'image ici

Il existe des méthodes similaires à celles qui utilisent des écouteurs Bluetooth sous org.bluez.MediaControl1. Mais, lorsque vous parcourez ces arbres, vous pouvez trouver A WAY more, cela vaut vraiment votre attention.

dbus-sendest une commande pour envoyer des signaux en utilisant dbus. --systemLe commutateur indique que nous voulons utiliser des éléments de System Busl'onglet d-feet. Je ne l'ai pas encore essayé, mais je suppose que --print-replyc'est uniquement à des fins de débogage et n'est pas obligatoire. --dest=org.blezse réfère à l' Nameen-tête d-pieds. /org/bluez/hci0/dev_<mobile_bluetooth_device_mac_address_with_numbers_underscore_separated>et se org.bluez.MediaControl1.<command>référer aux chemins de l'arborescence d'objets.

pt12lol
la source
C'est bien ! Avez-vous mappé ces dbus-sendcommandes aux boutons multimédias de votre PC ou comment avez-vous l'intention de les utiliser?
Robert Riedl
1
@Robert Riedl Je voulais attraper les événements des boutons de ma manette de jeu et les mapper avec des commandes spécifiques envoyées à un appareil mobile qui diffuse de la musique sur mon ordinateur. La motivation de ce projet était mon fils qui aime être directeur musical, mais je ne voulais pas qu'il passe trop de temps devant l'écran. J'ai donc décidé de lui fournir un autre type d'UX;)
pt12lol