Comment basculer entre les écouteurs et les haut-parleurs sans débrancher les écouteurs

23

Lorsque je branche mes écouteurs, le périphérique de sortie audio passe aux écouteurs à partir de mes haut-parleurs.

Plutôt que de brancher / débrancher les écouteurs tout le temps, ce qui finira par épuiser mon cordon / prise, je voudrais simplement utiliser un commutateur logiciel.

Lorsque j'ouvre Paramètres audio et que je passe de "Casque -> Audio intégré" à "Sortie ligne -> Audio intégré", aucun son ne sort de mon haut-parleur ou de mon casque.

J'ai ouvert alsamixer pour voir ce qui se passe lorsque je branche / débranche le casque.

Casque dans: Casque en

Sortie casque: Sortie casque

Avec les écouteurs branchés, j'ai modifié manuellement tous les paramètres pour qu'ils correspondent aux paramètres lorsque les écouteurs sont sortis et n'a toujours pas reçu de son via le haut-parleur.

En remarque, changer le périphérique de sortie audio via les "Paramètres audio" provoque les mêmes changements dans alsamixer.

user276318
la source
1
Pour autant que je sache, c'est un commutateur matériel à l'intérieur de la prise casque qui ne permettra pas de basculer. Une fois le commutateur enclenché, les haut-parleurs sont désactivés. Avez-vous pensé à utiliser des écouteurs Bluetooth?
Terrance
Merci @Terrance, j'avais l'impression que ça pourrait être quelque chose comme ça, j'ai même vérifié le BIOS pour voir s'il y avait quelque chose dedans. Je suis juste un peu surpris qu'ils aient une solution matérielle pour ce qui devrait être un problème logiciel.
user276318
1
Gardez à l'esprit que la carte son peut ne pas être capable de produire plusieurs appareils - certaines cartes son sont codées en dur au niveau matériel pour désactiver la sortie des haut-parleurs lorsqu'une connexion casque est établie, et cela ne peut pas être annulé ...
Thomas Ward
@Terrance J'ai commencé une prime, peut-être voulez-vous approfondir et écrire une réponse?
dessert
@dessert voir la réponse de GoodGuyNick ci - dessous - cela peut ne pas fonctionner sur tout le matériel, et d'après mon expérience, cela ne sépare pas les sorties (ce qui vous permettrait d'envoyer l'audio de programA aux haut-parleurs et de programB's aux écouteurs en même temps), mais si il suffit de désactiver le commutateur automatique, c'est la première chose à essayer.
Don Quichotte

Réponses:

9

Brancher les haut-parleurs et les écouteurs et activer le logiciel à la volée

De par sa conception, Pulseaudio désactive automatiquement la sortie de ligne lorsque le casque est branché et utilise le curseur Casque à la place. Vous pouvez observer ce comportement dans alsamixer. Ce que nous voulons, c'est que les curseurs Casque et Ligne de sortie fonctionnent séparément et en même temps. Ceci est extrêmement utile si vous souhaitez remapper les prises de Realtek pour avoir, par exemple, Rear Green pour les écouteurs et Blue pour les haut-parleurs (à l'aide de hdajackretask de alsa-tools).

Pour ce faire, vous devez modifier directement la configuration du mixeur Pulseaudio.

1. Nous disons à pulseaudio que les écouteurs sont toujours branchés.

Éditer:

/usr/share/pulseaudio/alsa-mixer/paths/analog-output-lineout.conf

Trouver:

[Jack Headphone]
state.plugged = no
state.unplugged = unknown

Remplacez nopar yes.

Si vous utilisez les prises à l'avant du boîtier de votre ordinateur, changez-les à la [Jack Front Headphone]place.

2. Par défaut, le volume de la sortie de ligne est contrôlé uniquement par Master et non par le curseur de sortie de ligne lui-même.

Nous voulons fusionner Line Out avec Master. Ajoutez cet extrait à la fin du fichier:

[Element Line Out]
switch = mute
volume = merge

3. Nous devons couper complètement la sortie de ligne lorsque nous utilisons des écouteurs.

Éditer:

/usr/share/pulseaudio/alsa-mixer/paths/analog-output-headphones.conf

Ajoutez cet extrait à la fin du fichier:

[Element Line Out]
switch = off
volume = off

Sur certains systèmes, vous devrez peut-être également désactiver Front en ajoutant cet extrait:

[Element Front]
switch = off
volume = off

4. Comme Pulseaudio, Alsa coupe elle-même les haut-parleurs lorsque le casque est branché.

Ouvrez alsamixer: alsamixer -c0oualsamixer -c1

Utilisez / en mode Auto-Mute. Désactivez le mode Auto-Mute avec . Fermez alsamixer avec Esc.

Enregistrez vos modifications avec: alsactl store

5. Redémarrez Pulseaudio

$ pulseaudio -k
$ pulseaudio --start

Maintenant, vous avez deux ports distincts sur le même récepteur dans pulseaudio. Ils se coupent mutuellement, vous pouvez donc passer aux écouteurs et cela coupera la sortie de ligne, et vice versa. Pour basculer entre les ports, vous pouvez utiliser le mixeur de sons Gnome ou Plasma ou installer l'extension de bureau appropriée.


La source

WinEunuuchs2Unix
la source
2
Vous ne devez pas modifier les fichiers directement dans /usr/share. Si pulseaudio reçoit une mise à jour (par exemple pour corriger des bugs), vos modifications seront effacées. Habituellement, il existe un mécanisme pour fournir des fichiers de substitution dans /etcou similaire, mais je ne connais pas spécifiquement pulseaudio.
Robie Basak
@RobieBasak La source de ces informations est le site Web Arch Linux. Malheureusement, je ne suis pas un utilisateur d'Arch Linux, je ne peux donc pas republier votre commentaire sur leur site. J'espère que l'un des utilisateurs d'Arch Linux flottant ici lit votre commentaire et le dépose là.
WinEunuuchs2Unix
1
@RobieBasak, eh bien, on pourrait écrire un script wrapper qui fait cela et l'invoquer après la connexion
Robert Riedl
1
Malheureusement, cela n'a pas fonctionné pour moi, mais merci pour votre réponse!
dessert
1
@dessert Mon plaisir. C'était intéressant de faire des recherches dans ce domaine. J'espère que vous trouverez ce que vous cherchez.
WinEunuuchs2Unix
9

Pour permettre de basculer entre les haut-parleurs et les écouteurs, procédez comme suit:

  1. Courez alsamixer.
  2. Si nécessaire, sélectionnez votre carte son avec F6.
  3. Accédez à «Auto-Mute» avec la flèche droite .
  4. Désactivez-le avec la flèche vers le bas .
  5. Appuyez Escpour quitter.

Ou vous pouvez effectuer toutes ces étapes avec une seule commande:

  1. Terminal ouvert
  2. courir amixer -c 1 set 'Auto-Mute Mode' Disabled

Vous pouvez maintenant basculer entre les haut-parleurs et les écouteurs dans le contrôle du volume PulseAudio.

Après avoir appliqué ces instructions, vous pouvez vous faciliter la vie en utilisant le Sound Switcher Indicator pour basculer rapidement entre les écouteurs et les haut-parleurs.

GoodGuyNick
la source
2
Je ne pense pas que cela fonctionnera pour toutes les combinaisons matérielles - certains systèmes (comme le mien) semblent utiliser un commutateur matériel d'une certaine variété, ce qui n'est pas inconnu. Par exemple, si vous branchez un casque à un ampli de guitare, les haut-parleurs de cet ampli seront généralement éteints - et il n'y a pas d'ordinateur dans ces appareils ....
Charles Green
Cela a fonctionné pour moi sur un Realtek ALC887-VD
Paul Praet
Merci. Ça a marché pour moi. Existe-t-il un moyen de l'accomplir via un script bash?
ka3ak
1
@ ka3ak J'ai mis à jour la réponse pour vous
GoodGuyNick
4

hdajackretask est un outil pour réaffecter la fonction de vos prises pour différentes entrées, sorties ou désactivées - par exemple, transformez votre prise micro en un casque supplémentaire, ou pourquoi ne pas en faire les deux sorties de ligne et les connecter à votre récepteur surround?

Installez alsa-tools-gui

sudo apt-get update
sudo apt-get install alsa-tools-gui

Exécuter hdajackretaskensuite Pour remplacer l'un de vos jacks:

  1. Sélectionnez un codec
  2. Cliquez sur la case "Remplacer" pour cette broche et sélectionnez la nouvelle fonction souhaitée
  3. Cliquez sur "Appliquer maintenant"

    Remarque: Si la prise casque possède un commutateur matériel intégré qui réachemine l'audio, vous êtes SOL (Désolé, pas de chance). Cependant, si le système d'exploitation détecte lorsqu'une ligne est branchée dans la prise casque, l'audio n'est probablement pas commuté mécaniquement.

J'ai trouvé que remplacer les écouteurs et les haut-parleurs en même temps fonctionnait mieux.


Capture d'écran hdajackretask pour basculer le casque sur les haut-parleurs:

entrez la description de l'image ici


Après avoir cliqué sur «Appliquer maintenant», un script shell est créé pour effectuer les modifications et vous invite à exécuter le mot de passe superutilisateur. Le script est également enregistré dans /tmplequel peut être copié puis exécuté avec sudo à partir de la ligne de commande.

entrez la description de l'image ici

Exécution en ligne de commande

Comme mentionné précédemment, hdajackretaskcrée un script, script.shdans /tmpsimilaire à /tmp/hda-jack-retask-QW1EEZ/des fonctions de prise que vous désirez:

#!/bin/sh
echo "0x12 0x90a60140" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x14 0x90170150" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x17 0x40000000" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x18 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x19 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x1a 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x1b 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x1d 0x40700001" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x1e 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo "0x21 0x40f000f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log
echo 1 | tee /sys/class/sound/hwC0D0/reconfig 2>>/tmp/hda-jack-retask-WFEIEZ/errors.log


Copiez ce script ailleurs sur votre système (autre que / tmp)

cd /tmp/hda-jack-retask-QW1EEZ
cp script.sh ~username/speaker.sh

Modifiez ensuite speaker.sh

cd ~username
nano speaker.sh

Ajoutez la ligne killall pulseaudio &en haut du fichier. Cela est nécessaire car la fonction jack ne peut pas être modifiée pendant l' pulseaudioexécution. Par défaut pulseaudio, réapparaîtra. Modifiez également le chemin du errors.logfichier vers /tmpou où vous le souhaitez:

#!/bin/sh
killall pulseaudio &
echo "0x12 0x90a60140" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x14 0x90170150" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x17 0x40000000" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x18 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x19 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x1a 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x1b 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x1d 0x40700001" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x1e 0x411111f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo "0x21 0x40f000f0" | tee /sys/class/sound/hwC0D0/user_pin_configs 2>>/tmp/errors.log
echo 1 | tee /sys/class/sound/hwC0D0/reconfig 2>>/tmp/errors.log


Pour exécuter le script:

sudo ./speaker.sh



À partir de la documentation alsa-tools-1.1.5 / hdajackretask / README :

Documentation pour hdajackretask

La plupart des cartes son HDA Intel sont dans une certaine mesure refaçonnables, c'est-à-dire qu'elles peuvent être utilisées pour plus d'une chose. Cet outil est une interface graphique pour faciliter le reconditionnement de vos prises - par exemple, transformer votre prise micro en un casque supplémentaire, ou pourquoi ne pas les faire à la fois des sorties de ligne et les connecter à votre récepteur surround?

Démarrage rapide

Démarrez l'application "hdajackretask" à partir de la ligne de commande. Sélectionnez un codec dans la barre supérieure; certaines personnes n'en ont qu'un - si vous en avez plusieurs, l'un est le "principal" et les autres sont probablement des codecs HDMI.

Toutes les prises (et autres entrées / sorties) sont affichées sous "Configuration des broches". Pour remplacer l'une de vos prises, cliquez sur la case "Remplacer" pour cette broche et sélectionnez la fonction souhaitée. Remarque: Si vous sélectionnez un remplacement de "Sortie de ligne (arrière)", vous devez également avoir un remplacement de "Sortie de ligne (avant)". Un remplacement de "Line out (Center / LFE)" ne fonctionnera qu'avec les deux précédents remplacements, et ainsi de suite.

Vous pouvez essayer votre nouvelle configuration en cliquant sur "Appliquer maintenant". Pour faire de votre nouvelle configuration la valeur par défaut de démarrage, cliquez sur "Installer le remplacement de démarrage". Pour effectuer l'une de ces opérations, vous devez disposer des privilèges root, il vous sera donc probablement demandé votre mot de passe.

Quickend

Tu as foiré? Cliquez sur le bouton "Supprimer le remplacement de démarrage", et une fois le processus terminé, arrêtez votre ordinateur, attendez un peu et rallumez-le. Vous devriez maintenant être de retour là où vous avez commencé.

Cela a-t-il fonctionné?

Si c'est le cas, soyez heureux, partagez votre joie, faites quelque chose de bien!

Si ce n'est pas le cas, voici quelques choses à essayer:

  • Allez dans alsamixer et voyez s'il y a de nouveaux contrôles de volume, et voyez s'ils sont non muets et réglés sur une valeur raisonnable.

  • Parfois, le pilote ne ferme pas les broches non connectées (si elles ne sont pas connectées, pourquoi s'inquiéter?). Vous pourrez peut-être résoudre ce problème en éteignant complètement votre ordinateur pendant un petit moment.

  • Voir l'option "model = auto" ci-dessous

Si cela n'aide pas, il y a de fortes chances que vous rencontriez un pilote ou une limitation matérielle. Vous pourriez rencontrer des bogues de pilote (peut-être que personne n'a jamais testé quatre écouteurs auparavant!). Si vous le faites, n'hésitez pas à les signaler sur la liste de diffusion alsa-devel: cependant, en raison du manque de main-d'œuvre, il y a des chances que cela soit traité avec une très faible priorité plus important que de supporter des configurations étranges). Cependant, si vous êtes un pirate du noyau et que vous proposez un correctif qui résout votre problème sans gâcher quoi que ce soit d'autre, les chances sont assez élevées qu'il sera fusionné.

Si vous pensez que le problème vient de cette application graphique plutôt que du pilote du noyau, n'hésitez pas à m'écrire un e-mail (et si vous le souhaitez, ajoutez un patch!). Si oui, écrivez à [email protected].

Les options

  • Afficher les broches non connectées Votre BIOS est responsable de la configuration des broches du codec qui sont réellement connectées à quelque chose et lesquelles ne le sont pas. Parfois, le BIOS est bogué et n'affiche pas toutes vos prises. Si vous avez une prise que votre BIOS ne dit pas, vous pouvez essayer d'activer des broches aléatoires et voir si cela fonctionne.

  • Définir le modèle = auto Certains codecs, en particulier les plus anciens et les noyaux 3.8 et inférieurs, sont codés en dur pour utiliser un modèle spécifique et ne se soucient donc pas de vos remplacements. Dans de nombreux cas et avec un noyau raisonnablement nouveau, l'analyseur automatique fonctionne désormais bien pour ces codecs également. Vous pouvez forcer l'utilisation de l'analyseur automatique en cochant cette case. Dans certains cas, cependant, le modèle explicite est là pour une raison, si c'est le cas, vous êtes coincé.

  • Priorité avancée Ceci est réservé aux experts. Il vous permet de sélectionner chaque champ de configuration individuellement, au lieu de quelques valeurs prédéfinies qui ont du sens. Notez que la plupart des combinaisons ici ne sont pas valides d'une manière ou d'une autre, vous ne devriez donc probablement pas jouer avec cela à moins d'avoir lu et compris la section "Configuration par défaut" de la spécification HD Audio. (Qui, au moment de la rédaction de cet article, est disponible ici: http://www.intel.com/content/dam/www/public/us/en/documents/product-specifications/high-definition-audio-specification. pdf )

  • Conseils de l'analyseur Cela vous permet d'envoyer des "conseils" spéciaux au pilote qui font que l'analyse se comporte différemment. Laissez-les sur le paramètre "par défaut" sauf si vous avez lu la documentation du pilote. (Qui, au moment d'écrire ces lignes, est disponible ici: https://www.kernel.org/doc/Documentation/sound/alsa/HD-Audio.txt - voir la section "Chaînes d'indices".)

stumblebee
la source
1
Malheureusement, cela n'a pas fonctionné pour moi, mais merci pour votre réponse! Comme le vôtre est très proche de ce que j'espérais et semble fournir le meilleur moyen d'atteindre l'objectif (si possible), vous recevez la prime - félicitations! :)
dessert
3

Dans KDE, cela peut être fait:

paramètres système -> multimédia -> paramètres audio et vidéo -> onglet de configuration du matériel audio> sélectionnez la carte son appropriée> sous Connecteur, vous verrez l'option casque et haut-parleurs.

les paramètres du système

haytham-med haytham
la source
3
Je n'utilise pas kde mais Unity a un "Sound Settings" similaire. Changer le périphérique de sortie audio du casque en haut-parleur ne fera que couper le casque. Il semble que ce soit un interrupteur matériel lorsque le casque est branché.
user276318
1

Gnome-Shell Extension Audio-Output-Switcher

la manière la plus simple consiste simplement à installer l'extension du commutateur de sortie audio

ou vous pouvez cloner directement avec git:

git clone https://github.com/adaxi/audio-output-switcher.git ~/.local/share/gnome-shell/extensions/audio-output-switcher@anduchs

capture d'écran

Cette extension ajoute une petite entrée au menu d'état qui montre le périphérique de sortie audio à impulsions actuellement sélectionné. Cliquer dessus ouvrira un sous-menu avec tous les périphériques de sortie disponibles et vous permettra de choisir lequel utiliser.

Jastria Rahmat
la source
Malheureusement, cela n'a pas fonctionné pour moi, mais merci pour votre réponse!
dessert
0

Vous pouvez utiliser le Sound Switcher Indicator , si cela ne vous dérange pas d'ajouter un PPA.

Cela vous donnera un indicateur dans la barre d'état système sur lequel vous pouvez cliquer pour changer les sources audio d'entrée ou de sortie. Vous pouvez en savoir plus sur http://yktoo.com/en/software/indicator-sound-switcher .

Méthode du terminal

Pour installer, à l'aide d'un terminal, entrez les informations suivantes.

sudo add-apt-repository ppa:yktooo/ppa
sudo apt-get update
sudo apt-get install indicator-sound-switcher

Méthode GUI

Pour installer, à l'aide de l'interface graphique, procédez comme suit:

  1. Lancez l'application Software & Updates depuis Unity Dash.

  2. Cliquez sur l'onglet "Autres logiciels". Ajoutez ensuite la nouvelle source suivante:

    deb http://ppa.launchpad.net/yktooo/ppa/ubuntu vivid main
    

    (N'oubliez pas de remplacer "vivid" par votre version d'Ubuntu. Les versions prises en charge sont répertoriées sur http://ppa.launchpad.net/yktooo/ppa/ubuntu/dists/ ).

  3. Lancez Ubuntu Software Center depuis Unity Dash.

  4. Recherchez «Indicateur de sélection d'entrée / sortie audio» et installez-le.

Remarque: Cette solution ne fonctionnera pas si votre système a un commutateur matériel à l'intérieur de la prise casque, comme Terrance l'a suggéré ci-dessus.

PJ Singh
la source
En fait, je l'avais déjà installé. Comme dans votre note, il semble qu'il y ait un commutateur matériel.
user276318
0

J'ai créé ce script pour ce problème:

https://github.com/biplobsd/Fixing-front-panel-audio

Exécutez simplement les commandes fournies dans le fichier README du référentiel de votre terminal. Cela télécharge et exécute le script.

Ces commandes sont:

git clone https://github.com/biplobsd/Fixing-front-panel-audio.git
cd Fixing-front-panel-audio
chmod +x Fixing-front-panel-audio.sh
./Fixing-front-panel-audio.sh
Biplob SD
la source