Ubuntu 16.04 change de périphérique audio après une suspension, comment y remédier?

17

Donc, ma configuration utilise actuellement un moniteur branché sur mon ordinateur portable via HDMI et utilise les haut-parleurs pour l'audio et non les ordinateurs portables intégrés. Lorsque la machine démarre, elle utilise HDMI par défaut, mais je suspend souvent l'ordinateur portable tout au long de la journée et chaque fois qu'elle reprend, elle passe le périphérique audio aux haut-parleurs intégrés.

Ce n'est pas un gros problème comme vous pouvez l'imaginer, mais c'est ennuyeux, je me demande s'il y a un script que je pourrais utiliser pour le forcer à resélectionner HDMI après la reprise ou désactiver les haut-parleurs intégrés, ou définir par défaut un peu. Pour info les deux haut-parleurs intégrés sont sur la même «carte son» mais sont deux appareils différents

Merci pour toute aide!

MattJC
la source
Quelle est votre carte vidéo? Utilisez-vous un pilote propriétaire?
Marcos Silveira

Réponses:

17

Si vous ne voulez pas redémarrer, redémarrez simplement pulseaudio:

pulseaudio --kill; pulseaudio --start
rubo77
la source
1
cela ne fonctionne pas pour moi
Elliott
1
Cela a aidé sans la deuxième commande de démarrage déjà. J'ai dû attendre quelques secondes et j'ai dû réactiver la sortie .
try-catch-finally
CETTE PREMIÈRE COMMANDE FONCTIONNE !!!! BOOM c'est de retour!
markackerman8-gmail.com
7

J'ai eu le même problème sur Ubuntu 17.10. Après la suspension, ou même après la gradation de l'affichage, cela changerait toujours ma sortie audio de la sortie numérique (souhaitée) en HDMI même si mon écran n'a pas de haut-parleurs. Commenter la ligne

load-module module-switch-on-port-available

a /etc/pulse/default.pafait l'affaire comme décrit dans Désactiver le son via HDMI de façon permanente .

Notez que la définition des récepteurs par défaut comme indiqué ci-dessus n'a pas changé le comportement. En outre, le script fourni ci-dessus pour définir le profil de la carte audio après la suspension est spécifique à l'utilisateur.

sambura
la source
1
Je sais que c'est assez vieux, mais cette commutation automatique désactivée lors de la connexion d'un casque sur mon système.
AmbientCyan
3

J'ai résolu ce problème en définissant le profil d'impulsion fixe sur la sortie: hdmi-stereo à la reprise.

Pour obtenir une liste des profils d'impulsion: pacmd list-cards. Pour changer le profil impulsion , par exemple: pacmd set-card-profile 0 output:hdmi-stereo.

À propos de l'exécution du script après la suspension: exécuter le script au réveil?

A propos de l'exécution de pacmd en tant que root: [Résolu] Contrôlez pulseaudio avec le script shell via les forums pacmd / Newbie Corner / Arch Linux:

Grzegorz
la source
2

Courir:

$ pacmd list-cards

Pour afficher l'index de vos cartes. Par exemple, ma carte son pci est à l'index 2. Le profil sonore pour la sortie analogique (à nouveau comme exemple) est appelé output:analog-stereo.

Alors:

$ pacmd set-card-profile 2 output:analog-stereo

Pour définir cela comme sortie (essayez-le). Pour le rendre permanent, modifiez /etc/pulse/default.paet ajoutez:

set-card-profile 2  output:analog-stereo
set-default-sink 2

Redémarrez pulseaudio ou redémarrez pour vérifier la persistance.

Jonathan Deal
la source
L'audio HDMI était toujours persistant par défaut au redémarrage, il ne change que pour les haut-parleurs intégrés après une reprise de veille. Faire ce que vous dites de faire n'empêche pas le HDMI de changer en haut-parleurs intégrés après le réveil. Existe-t-il un moyen d'exécuter la commande set-card-profile lorsque le système sort du mode veille?
MattJC
2

Ce problème peut être lié à un problème avec Pulseaudio, version 8, comme indiqué dans ce (long) fil de bogue sur freedesktop.org .

Fondamentalement, Pulseaudio redirige le son lorsqu'il perd le contact avec HDMI et ne le renvoie pas après que HDMI est reconnecté. Il est corrigé dans la version 9.

Afin de ramener la version 8 au comportement des versions précédentes, suivez ces instructions et redémarrez.

modifier /etc/pulse/default.papour mettre en commentaire (ajouter #au début de) la ligne:

#load-module module-switch-on-port-available

Ensuite, définissez la sortie audio dans les paramètres audio et vérifiez qu'elle persiste en suspendant / reprenant ou en masquant l'écran. Cela a fonctionné pour moi.

Paul H.
la source
@PaulH. , @Toilal Comment avez-vous modifié le /etc/pulse/default.pafichier? sudo geditne fonctionne pas pour moi.
Py-ser du
utilisationgksu gedit /etc/pulse/default.pa
rubo77
Il a déjà été commenté - SNIF! mais la commande .... pulseaudio --kill ..... fonctionne bien!
markackerman8-gmail.com
1

La même chose se produit pour moi, mais uniquement si le moniteur HDMI n'est pas "réveillé" lorsque le système d'exploitation démarre ou reprend: la liste des périphériques dans Paramètres> Son n'affiche même plus HMDI / DisplayPort - Audio intégré .

La solution pour moi est de suspendre la session, de s'assurer que le moniteur HDMI est allumé, de reprendre la session.

Suspendre dans Ubuntu 18.04 LTS est quelque peu incroyablement caché derrière le bouton PowerOff dans le menu déroulant: maintenez la souris dessus ou appuyez sur Altpour convertir le bouton PowerOff en Suspend. Parlez de navigation cachée!

mr0
la source
+1, et merci d'avoir décrit comment trouver la suspension cachée! Certains (qui ont peut-être un terminal ouvert peut-être) préféreront peut-être exécuter la commande à la systemctl suspendplace!
Zanna
Désolé, je dois voter contre mon propre commentaire car il semble complètement aléatoire: si HDMI Audio apparaît ou non dans la liste des périphériques audio :(
mr0
1

Correction de PulseAudio désactivant le son HDMI lors de la suspension

Cette "fonctionnalité non documentée" est apparue avec Ubuntu 16.04 et la nouvelle version de PulseAudio 8.

Créez un nouveau fichier /lib/systemd/system-sleep/tv-soundet copiez-le dans:

#!/bin/sh

case $1/$2 in
  pre/*)
    echo "Going to $2..."
    # Place your pre suspend commands here, or `exit 0`
    # if no pre suspend action required
    sleep 1
    ;;
  post/*)
    echo "Waking up from $2..."
    # Place your post suspend (resume) commands here, or `exit 0` 
    # if no post suspend action required
    sleep 2
    export PULSE_RUNTIME_PATH="/run/user/1000/pulse/"
    sudo -u rick -E pacmd set-card-profile 0 output:hdmi-stereo
    ;;
esac

REMARQUE: remplacez le nom d'utilisateur rick(troisième ligne à partir du bas) par votre nom d'utilisateur.

Ensuite, marquez-le exécutable avec la commande:

sudo chmod +x /lib/systemd/system-sleep/tv-sound

Une étape supplémentaire peut être nécessaire si output:hdmi-stereo(l'appareil pour la plupart des gens) est différent sur votre système.

WinEunuuchs2Unix
la source
désolé, mais cela n'a pas résolu le problème. Dois-je faire plus que cela? redémarrer quoi que ce soit? (Je ne veux pas redémarrer, car cela résout le problème sur mon système de toute façon)
rubo77
@ rubo77 Avez-vous changé rickvotre ID utilisateur en votre propre ID utilisateur?
WinEunuuchs2Unix
Sûr. Comme vous l'avez dit rub
rubo77
0

J'ai eu ce problème depuis Ubuntu 9.04. Cela n'a jamais fonctionné et maintenant que les enfants qui viennent de recevoir HDMI ou Ubuntu pensent que le problème est quelque chose de nouveau, les gens qui essaient de regarder les derniers changements dans la configuration sont induits en erreur. Permettez-moi donc d'être clair: ce problème a toujours existé et personne n'y travaille. J'ai passé au moins 20 heures à rechercher ce problème. Donc, ce que j'ai fait dans le passé:

  1. Redémarrer
  2. En allumant le téléviseur (cible HDMI), si je bouge la souris au bon moment, cela restaure le son peut-être 50% du temps. Il s'agit d'un problème de synchronisation / de négociation.
  3. Dans Ubuntu 14, je changerais la résolution d'écran en quelque chose de différent, puis de nouveau. Cela ne semble pas fonctionner avec Ubuntu 16
  4. Ne le laissez pas hiberner. Une alternative est simplement de faire un arrêt programmé. Plus tard, vous démarrez simplement votre ordinateur plutôt que de redémarrer. Rappelez-vous que c'est un problème de timing, donc je suppose que toutes les idées ici peuvent fonctionner si le timing arrive pour faire fonctionner votre système correctement.
Client
la source