L'audio HDMI s'arrête une fois le téléviseur éteint

10

Après la mise à jour 12.04, mon audio HDMI cesse de fonctionner à chaque fois que j'éteins mon deuxième moniteur (téléviseur plasma). La carte graphique est une Radeon 6800 qui a une sortie DVI vers le 1er moniteur, une sortie HDMI vers le récepteur dont le téléviseur reçoit son audio / vidéo. L'audio est toujours via le son de mon récepteur.

Les choses fonctionnent bien tant qu'il démarre avec le téléviseur et le récepteur allumés. Éteignez le téléviseur et l'audio HDMI de BART disparaîtra et l'option HDMI disparaîtra du menu audio. J'ai eu un problème HDMI occasionnel avec 11.10 mais allumer / éteindre le téléviseur résoudrait le son. Comment puis-je coder en dur des choses pour qu'il utilise toujours HDMI hors audio? Je soupçonne que le téléviseur envoie un signal lorsque le 12.04 écoute maintenant. Rallumer le téléviseur ne résout PAS ce problème, et je suggère d'avoir la possibilité de remplacer cette nouvelle "fonctionnalité" via le menu audio.

Ryan
la source
il y a un rapport de bug - mais aucune solution sur le tableau de bord: bugs.launchpad.net/ubuntu/+source/fglrx-installer/+bug/1001842
hiro protagoniste

Réponses:

9

J'ai eu ce problème. Je n'ai pas pu trouver de solution décente, mais j'ai ce travail autour. Notez que c'est un hack horrible mais il fait le travail jusqu'à ce que le problème racine soit résolu - j'espère que cela aidera quelqu'un d'autre. Toutes les 5 secondes, il vérifie que dmesg ne présente pas d'erreurs de connexion HDMI et s'il en trouve une, il redémarre la connexion.

J'ai fait ce script de surveillance - remplacez "DFP1" par le nom de votre sortie (obtenez-le de xrandr).

#!/usr/bin/env python
import os
import time

valid = "ELD_Valid=1"
invalid = "ELD_Valid=0"

def executeCommand(the_command):
    temp_list = os.popen(the_command).read()
    return temp_list

def getDMESG():
    return executeCommand("dmesg | grep -i hdmi | tail -n 10")

def needsRefresh():
    list = getDMESG();
    valid_index = list.rfind(valid)
    invalid_index = list.rfind(invalid)
    if invalid_index > valid_index:
        return True
    else:
        return False

def doTest():
    if needsRefresh() == True:
        os.popen("xrandr -display :0 --output DFP1 --off; xrandr -display :0 --output DFP1 --auto").read()

while True:
    doTest()
    time.sleep(5)

Si quelqu'un connaît une meilleure façon de détecter l'erreur (avec les pilotes de catalyseur), faites-le moi savoir. (Avec les pilotes open source, je pense que vous pourriez déclencher le bit de réinitialisation du code sur les événements drm acpi si vous vouliez faire du script).

Je le démarre en ajoutant ceci à /etc/rc.local: (changez "xbmc" en nom d'utilisateur sous lequel vous vous connectez)

su xbmc -c 'python /home/USERNAME/src/check_hdmi.py &'
Vanilla_Brys
la source
Le script fonctionne mais pas l'automatisation avec rc.local. Pourriez-vous s'il vous plaît montrer à quoi devrait ressembler le rc.local?
ECII
Serait-il correct d'ajouter le script à cron et de le laisser s'exécuter toutes les minutes environ?
ECII
Vous pouvez mettre en cron. Vous devez supprimer le while True:bloc entier et le remplacer simplement doTest(). Cela peut prendre un peu de bricolage - assurez-vous qu'il est exécuté dans le cron des utilisateurs connectés (pas root).
Vanilla_Brys
Mon rc.local contient quelques éléments. En bas, il a ceci: su xbmc -c 'python /home/andy/src/check_hdmi.py &'puis sur une nouvelle ligne exit 0. Avez-vous remplacé xbmcpar le nom d'utilisateur correct?
Vanilla_Brys
Si vous utilisez un environnement de bureau normal (j'utilise xbmc, donc je ne le suis pas), vous pouvez probablement simplement ajouter le script python à vos applications de démarrage.
Vanilla_Brys
4

En attendant, alors que le rapport de bogue se passe bien, j'ai remarqué une combinaison de boutons rapide qui évitera quelques maux de tête.

Tirez simplement dans un ttyet revenez à votre interface graphique:

CTRL+ ALT+ F1 (ou quoi que ce soit de F1à F6)

puis

CTRL+ ALT+ F8(vous devrez peut-être utiliser à la F7place de F8. L'un d'eux vous ramènera sur votre bureau, l'autre vous donnera un écran noir et un curseur)

Il semble que la synchronisation soit rétablie lors du retour à l'interface graphique.

C'est beaucoup plus rapide que de vous déconnecter puis de vous reconnecter, et vos programmes, etc. restent ouverts.

Combinaison de boutons. Terminé. Sans tracas.

Bien sûr, ce n'est pas une solution. C'est juste une combinaison de clavier rapide pour tromper le HDMI pour qu'il se resynchronise et récupère ainsi l'audio.

Cela fonctionne de mon côté.
Quelqu'un d'autre veut éteindre son téléviseur pendant une seconde et l'essayer lui-même?

user85894
la source
2

J'ai remarqué que si vous désactivez la sortie du téléviseur et que vous la rallumez, elle réinitialise également le son (Radeon HD6670). Les commandes aticonfig configurent l'affichage pour remplir l'écran de mon téléviseur. Vous devez trouver votre nom de sortie en exécutant "xrandr -q" changer "DFP1" en ce qui est répertorié avant "CONNECTED" dans la sortie de la commande (il est sensible à la casse). Le seul problème avec cela dans ma configuration est que certaines fenêtres sautent à mi-chemin du haut de l'écran lors de l'exécution de la partie marche / arrêt du script (faites-les glisser vers le bas si cela vous arrive). Peut-être que quelqu'un peut coder une meilleure solution / solution de contournement.

#! /bin/bash

# Turn off the DFP1 Output
xrandr --output DFP1 --off
# Turn DFP1 back on
xrandr --auto 

# Set Screen to fit TV
aticonfig --set-dispattrib=dfp1,positionX:0
aticonfig --set-dispattrib=dfp1,positionY:0
aticonfig --set-dispattrib=dfp1,sizeX:1920
aticonfig --set-dispattrib=dfp1,sizeY:1080
Viper2
la source
1

Même problème. Le seul indice que j'ai, c'est après avoir courupactl list

Sink #0
    State: SUSPENDED
    Name: alsa_output.pci-0000_01_00.1.hdmi-stereo
    Description: Turks HDMI Audio [Radeon HD 6000 Series] Digital Stereo (HDMI)
    Driver: module-alsa-card.c
    Sample Specification: s16le 2ch 44100Hz
    Channel Map: front-left,front-right
    Owner Module: 4
    Mute: no
    Volume: 0: 100% 1: 100%
            0: 0.00 dB 1: 0.00 dB
            balance 0.00
    Base Volume: 100%
                 0.00 dB
    Monitor Source: alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor
    Latency: 0 usec, configured 0 usec
    Flags: HARDWARE DECIBEL_VOLUME LATENCY SET_FORMATS 
    Properties:
        alsa.resolution_bits = "16"
        device.api = "alsa"
        device.class = "sound"
        alsa.class = "generic"
        alsa.subclass = "generic-mix"
        alsa.name = "HDMI 0"
        alsa.id = "HDMI 0"
        alsa.subdevice = "0"
        alsa.subdevice_name = "subdevice #0"
        alsa.device = "3"
        alsa.card = "1"
        alsa.card_name = "HD-Audio Generic"
        alsa.long_card_name = "HD-Audio Generic at 0xfddfc000 irq 48"
        alsa.driver_name = "snd_hda_intel"
        device.bus_path = "pci-0000:01:00.1"
        sysfs.path = "/devices/pci0000:00/0000:00:02.0/0000:01:00.1/sound/card1"
        device.bus = "pci"
        device.vendor.id = "1002"
        device.vendor.name = "Advanced Micro Devices [AMD] nee ATI"
        device.product.name = "Turks HDMI Audio [Radeon HD 6000 Series]"
        device.string = "hdmi:1"
        device.buffering.buffer_size = "65536"
        device.buffering.fragment_size = "32768"
        device.access_mode = "mmap+timer"
        device.profile.name = "hdmi-stereo"
        device.profile.description = "Digital Stereo (HDMI)"
        device.description = "Turks HDMI Audio [Radeon HD 6000 Series] Digital Stereo (HDMI)"
        alsa.mixer_name = "ATI R6xx HDMI"
        alsa.components = "HDA:1002aa01,00aa0100,00100200"
        module-udev-detect.discovered = "1"
        device.icon_name = "audio-card-pci"
    Ports:
        hdmi-output-0: HDMI / DisplayPort (priority: 5900, not available)
    Active Port: hdmi-output-0
    Formats:
        pcm

Il semble éteindre le moniteur désactive l'évier? et ne se réactive pas lorsque le téléviseur est rallumé. sortie HDMI-0: HDMI / DisplayPort (priorité: 5900, non disponible )

" non disponible " devrait être " disponible "

Je suppose que vous utilisez une carte ATI avec fglrx. essayer

aticonfig --acpi-services=off

Pas sûr que ce paramètre soit persistant. Si c'est le cas, la commande de réactivation est.

aticonfig --acpi-services=on

Je doute que cela fonctionne. EDIT> (Ce n'est pas le cas)

Comme l'a signalé user53740. Logout / in restaure l'audio. L'activation ou la désactivation du moniteur désactive l'audio HDMI. Si vous ne voulez vraiment pas vous déconnecter, vous pouvez supprimer à nouveau le plug-in HDMI et le son HDMI sera restauré. Ne le faites pas trop souvent. Seulement quand tu es désespéré.

Il y a un fil ici et un rapport de bug esquivant ici

MODIFIER> Une autre solution consiste à aller dans Paramètres système> Affichage. Cliquez ensuite sur Appliquer sans rien changer.

user55138
la source
1

Allez dans Paramètres système → Écrans

Modifiez la résolution, appliquez, puis modifiez-la.

Tous les paramètres → Son → sélectionnez HDMI

Nicolai
la source
0

Ayant le même problème.

Bien sûr, les pilotes ATI sont probablement à l'origine de problèmes. Le mien est Radeon HD 6xxx.

La déconnexion et la reconnexion récupèrent le son, mais je suppose qu'il pourrait y avoir une autre solution plus simple.

Xamidovic
la source
0

GD Gents résolus

A eu le même problème que mon http avec ATI 5770 était connecté au récepteur puis au téléviseur. Résolu ce problème en téléchargeant et en installant le dernier pack de pilotes BETA depuis le site Web d'AMD.

Voici le lien ATI Radeon

Merci beaucoup pour le lien vers le pilote Catalyst ™ 12.7 Beta que je cherchais sur Google depuis longtemps et personne n'avait de réponse facile à ce problème ennuyeux.

Mais après avoir installé le pilote AMD Catalyst 12.7 Beta pour Windows ® 7 et Windows Vista®

tout est beau-doris!

Infiniment reconnaissant.:)

John
la source
0

Cela fonctionne pour moi (carte graphique Intel HD): killall pulseaudio

(trouvé ici: /ubuntu//a/176276/45779 )

Eugen Labun
la source