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

11

Mon casque Bluetooth (Plantronics Backbeat Go2) est très bien connecté à mon système, mais il y a plusieurs étapes manuelles que je dois suivre pour faire ce travail que j'aimerais beaucoup automatiser:

  1. Après chaque redémarrage, je dois exécuter pactl load-module module-bluetooth-discovery dans le terminal pour que l'appareil se connecte. J'ai essayé de mettre cela dans un script shell à exécuter au démarrage, mais pas de dés :(
  2. Mon casque se connecte automatiquement sans aucun problème, mais il est toujours réglé par défaut sur Téléphonie duplex ou même sur Arrêt au lieu d'A2DP; J'ai essayé et échoué avec plusieurs stratégies différentes pour forcer A2DP :(
  3. Forcez 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, donc je ne peux pas forcer une valeur par défaut dans le fichier PA conf set-default-sink de cette façon. Et l'utilisation du nom répertorié ne semble pas fonctionner non plus - si le casque n'est pas présent, il passe aux 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!

Logos
la source

Réponses:

8

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
Harvey
la source
1
Remarque: Le commentaire "ajouter ceci" est important, car la ligne " .ifexists module-bluetooth-discover.so" existe déjà. J'ai essayé d'ajouter les quatre lignes entières à la fin au début et cela n'a pas fonctionné. L'ajout d'une seule ligne au bon endroit fonctionne.
Fabian Röling
2
sur Ubuntu Bionic j'ai défini AutoConnect=trueplutôt que Disable = Headset
develCuy
Veuillez noter qu'après PulseAudio version 11, auto_switch a été converti en un entier, il a donc besoin d'une valeur comme 0, 1, 2 selon la fonctionnalité de commutation automatique dont vous avez besoin: freedesktop.org/wiki/Software/PulseAudio/Notes/11.0
mitsos1os
2

Ce n'est pas seulement après un redémarrage mais aussi après avoir déconnecté et reconnecté un appareil capable à la fois de profil HSP et A2DP que Bluez le connecte toujours en mode HSP (tête).

Je ne peux pas en détail dire ce qui se passe sous le capot (Bluetooth a pas mal de bizarreries) mais je soupçonne que nous connectons un nouvel appareil en tant que casque plutôt qu'en tant qu'appareil Audio ou AudioSink via dbus.

Il semble qu'il n'y ait aucun paramètre permettant de contrôler cela. Je ne suis au courant d'aucun paramètre que nous pouvons effectuer pour définir par défaut un périphérique Bluetooth sur A2DP lors de la connexion (mais je ne peux pas exclure que j'ai manqué un élément de 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 a été inclus dans une petite application GUI Python ( bt-autoconnect sur le tableau de bord ou via mon ppa: takkat-nebuk / takkat ) qui, entre autres réglages, fait exactement cela, mais c'est plus un hack qu'une solution définitive, et malheureusement, c'est le cas ne fonctionne pas avec tous les adaptateurs mais il connectera d'abord mon casque Philips en mode A2DP (même si les paramètres sonores prétendent toujours que c'était HFP mais c'est un autre problème).

Takkat
la source
Merci pour l'entrée Takkat ... Je pense que je suis entouré, et ça va être un processus manuel :(
Logos