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, je voudrais 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 par les captures d'écran pavucontrol ci-dessous (pt2
l'appareil est-il connecté via Bluetooth):
Dans cette configuration, le streaming fonctionne comme prévu (je peux entendre la musique diffusée depuis pt2
), mais je n'ai trouvé aucun moyen de lui envoyer un signal tel qu'une pause/reprise de la lecture ou un 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 l'A2DP, qui est la façon dont les appareils sont connectés maintenant. Mais sous la liste déroulante de profil, j'ai également des options HSP/HFP headset head unit, HSP/HFPheadset gateway and 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 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.
Inspiré par @kenn, j'ai décidé d'aller plus loin dans dbus
et d-feet
outils. 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'adresse MAC de vos appareils, exécutez bt-devices -l
. Il répertoriera 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-feet
avec Sudo apt install d-feet
. Après l'avoir exécuté, appliquez la recherche de la requête bluez
sous System Bus
onglet et recherchez l'entrée avec le MAC de vos appareils:
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 mérite vraiment votre attention.
dbus-send
est une commande pour envoyer des signaux à l'aide de dbus
. --system
switch indique que nous voulons utiliser des éléments de System Bus
Onglet d-feet. Je ne l'ai pas encore essayé, mais je suppose que --print-reply
est uniquement à des fins de débogage et n'est pas obligatoire. --dest=org.blez
fait référence à Name
dans l'en-tête d-feet. /org/bluez/hci0/dev_<mobile_bluetooth_device_mac_address_with_numbers_underscore_separated>
et org.bluez.MediaControl1.<command>
fait référence aux chemins de l'arborescence des objets.