web-dev-qa-db-fra.com

Basculer automatiquement le périphérique de sortie audio sur le casque Bluetooth et forcer sur le profil A2DP lors de la connexion

Mon oreillette Bluetooth (Plantronics Backbeat Go2) est parfaitement connectée à mon système, mais je dois suivre plusieurs étapes manuelles pour effectuer ce travail que j'aimerais beaucoup automatiser:

  1. Après chaque redémarrage, je dois exécuter le module bluetooth-découverte de pactl load-module dans le terminal pour que le périphérique se connecte. J'ai essayé de mettre cela dans un script Shell pour qu'il s'exécute au démarrage, mais pas de dés :(
  2. Mon casque se connecte automatiquement sans aucun problème, mais il utilise toujours Telephony Duplex ou même Off au lieu de A2DP. J'ai essayé et échoué avec plusieurs stratégies différentes pour forcer A2DP :(
  3. Forcer le casque BT à être le périphérique de sortie par défaut. J'ai essayé plusieurs stratégies ici aussi ... malheureusement, chaque fois que je connecte le casque, l'index de pacmd semble changer, aussi je ne peux pas forcer une valeur par défaut dans le fichier de configuration PA set-default-sink de cette façon. Et utiliser le nom indiqué ne semble pas non plus fonctionner - si le casque n'est pas présent, il bascule vers les haut-parleurs et ne revient pas si le casque se connecte :(

Merci pour tout conseil que vous pourriez avoir sur la résolution de ces problèmes!

10
Logos

Cela a fonctionné pour moi: https://sandalov.org/blog/2146/

Instructions copiées ici pour la postérité:

Add to /etc/Pulse/default.pa to automatically switch pulseaudio sink to Bluez:

.ifexists module-bluetooth-discover.so
load-module module-bluetooth-discover
load-module module-switch-on-connect  # Add this
.endif

Modify/Create /etc/bluetooth/audio.conf to auto select A2DP profile (instead of HSP/HFP):

[General]
Disable=Headset # Add this

Apply changes:

pulseaudio -k # Restarts pulseaudio

# You may need to turn your bluetooth headphones off, then back on
5
Harvey

Ce n’est pas seulement après un redémarrage, mais aussi après la déconnexion et la reconnexion d’un périphérique capable de profil HSP et A2DP que Bluez le connecte toujours en mode HSP (tête).

Je ne peux pas expliquer en détail ce qui se passe sous le capot (Bluetooth a quelques défauts), mais je soupçonne que nous connectons un nouvel appareil en tant que Casque plutôt que comme un Audio ou AudioSink périphérique via dbus.

Il semble n'y avoir aucun paramètre par lequel nous pouvons contrôler cela. Je ne suis au courant d'aucun paramètre que nous pouvons définir par défaut pour un périphérique Bluetooth sur A2DP lors de la connexion (mais je ne peux pas exclure que j'ai oublié une documentation quelque part). Cela peut être considéré comme un bug.

À un moment donné, j'ai écrit un script pour établir des connexions Bluetooth en utilisant le profil Audio . Ce script était inclus dans une petite interface graphique Python application ( bt-autoconnect sur le tableau de bord ou via mon ppa: takkat-nebuk/takkat ) qui, parmi d’autres réglages, fait exactement cela, mais c’est plus un bidouillage que une solution définitive. Malheureusement, il ne fonctionne pas avec tous les adaptateurs existants, mais il connectera d’abord mon casque Philips en mode A2DP (même bien que les paramètres sonores prétendent toujours que c’est HFP, mais c’est un autre problème).

2
Takkat