web-dev-qa-db-fra.com

Pas d'audio hdmi après suspension

Mon problème est que lorsque je réveille l'ordinateur après une suspension, je n'ai pas d'audio avec HDMI. Bien, il y a "audio" mais c'est comme jouer une chanson et entendre 1 seconde toutes les 10 minutes et très déformé. Quelque chose d'étrange.

Avec les haut-parleurs de l'ordinateur portable, je n'ai pas de problèmes.

J'utilise Ubuntu depuis le 8.04. J'avais 14.04 dans mon ordinateur portable actuel, ThinkPad t450, et il n'y avait aucun problème comme celui-ci jusqu'à ce que je passe à 16.04.

J'ai vu ce fil mais ne fonctionne pas pour moi: pas de son après la suspension/reprise

J'ai aussi essayé d'utiliser un script dans /etc/pm/sleep.d/

#!/bin/sh

# Script to disable hdmi audio before suspend and restart after wake.

case "${1}" in
        suspend|hibernate)
            rmmod snd_hda_codec_hdmi
            rmmod snd
                ;;
        resume|thaw)
            modprobe snd
            modprobe snd_hda_codec_hdmi
                ;;
esac

Ça ne fonctionne toujours pas avec ça, peut-être que je devrais ajouter des choses au script?

lsmod | grep hdmi me donne

snd_hda_codec_hdmi     53248  1
snd_hda_codec         135168  4 snd_hda_codec_realtek,snd_hda_codec_hdmi,snd_hda_codec_generic,snd_hda_intel
snd_hda_core           73728  5 snd_hda_codec_realtek,snd_hda_codec_hdmi,snd_hda_codec_generic,snd_hda_codec,snd_hda_intel
snd_pcm               106496  5 snd_hda_codec_hdmi,snd_hda_codec,snd_hda_intel,snd_hda_core
snd                    81920  35 snd_hda_codec_realtek,snd_hwdep,snd_timer,snd_hda_codec_hdmi,snd_pcm,snd_seq,snd_rawmidi,snd_hda_codec_generic,snd_hda_codec,snd_hda_intel,thinkpad_acpi,snd_seq_device

Merci pour l'aide!

1
arturo.mj

J'ai une Radeon 6570 et la solution xrandr ne fonctionnait pas.

Comme faisant CTRL+ALT+F6 et CTRL+ALT+F7 travaillé, j'ai utilisé la commande chvt.

J'ai donc changé le script de Marcos Silveira comme suit:

/lib/systemd/system-sleep/fixhdmiaudio

#! /bin/sh
case $1/$2 in

    post/*)

        # Vai para o VT + 1 e retorna para o VT atual
        CURRENT_VT=$(fgconsole)
        chvt $((CURRENT_VT + 1)) && chvt $((CURRENT_VT))
        ;;
esac
1
André Berenguel

Je sais à quel point ce problème peut être agaçant. J'avais l'habitude d'installer le pilote propriétaire ATI, mais quand j'ai mis à jour le 16.04, j'ai compris ce problème. J'ai réalisé que le problème était facilement résolu en appuyant sur ctrl + alt + f6 et ctrl + alt + f7 ou changer la résolution avec le xrandr. J'ai donc créé cette solution de contournement suivante.

Ouvrez le terminal et tapez la commande suivante ...

Sudo nano /lib/systemd/system-sleep/fixhdmiaudio

... et coller ceci:

#! /bin/sh

# Bug 1252423 – HDMI Audio seen as 'unplugged' after Suspend
# Created by Marcos Silveira - 2016
# Workaround

case $1/$2 in
        pre/*)
          #sleeping - nothing to do
        who |cut -d " " -f1 | uniq > /tmp/suspend.user
          ;;
        post/*)
          # Waking up
          export DISPLAY=:0
          #perform command  as the current tty user

          su - $(cat /tmp/suspend.user) -c "/usr/bin/xrandr --output HDMI-0 --auto;sleep 1s;/usr/bin/xrandr --output HDMI-0 --mode 1920x1080"
          ;;
esac

Ma résolution par défaut est 1920x1080. Vous pouvez définir toutes les résolutions prises en charge effectuant xrandr. Ma sortie HDMI par défaut est HDMI-0. Cela peut être différent pour vous. Je vous recommande d’effectuer xrandr avant de confirmer votre sortie HDMI par défaut.

Enregistrez, fermez et définissez les autorisations:

Sudo chmod 755 /lib/systemd/system-sleep/fixhdmiaudio

Profitez et bonne chance.

0
Marcos Silveira

Mettre des scripts dans /etc/pm/sleep.d/ ne fonctionnera plus à la suite du passage à systemd à partir de 15.04.

Si vous souhaitez expérimenter de tels scripts, vous pouvez plutôt les insérer dans /lib/systemd/system-sleep/, bien que vous deviez également y apporter quelques modifications mineures car les paramètres transmis sont différents.

De man systemd-sleep:

Le premier argument sera "pre", le second soit "suspendre", "hibernate" ou "hybride-sleep" en fonction de l'action choisie.

Immédiatement après avoir quitté le système, suspendre et/ou mettre en veille prolongée, les mêmes exécutables sont exécutés, mais le premier argument est maintenant "post".

Dans le script que vous avez posté, vous devrez changer suspend|hibernate) en pre) et resume|thaw) en post).

0
Martin Thornton