HDMI-Audio stoppt nach dem Ausschalten des Fernsehgeräts


10

Nach dem 12.04 Update funktioniert mein HDMI-Audio nicht mehr, wenn ich meinen 2. Monitor (Plasma-TV) ausschalte. Die Grafikkarte ist eine Radeon 6800 mit DVI-Ausgang zum ersten Monitor und HDMI-Ausgang zum Empfänger, über den der Fernseher Audio / Video empfängt. Audio ist immer über meinen Receiver-Sound.

Die Dinge funktionieren einwandfrei, solange der Fernseher und der Receiver eingeschaltet sind. Schalten Sie den Fernseher aus und das HDMI-Audio von BART wird ausgeblendet, und die HDMI-Option verschwindet aus dem Soundmenü. Ich hatte gelegentlich ein HDMI-Problem mit 11.10, aber das Ein- und Ausschalten des Fernsehgeräts konnte den Ton beheben. Wie kann ich Dinge fest codieren, damit HDMI immer ohne Audio verwendet wird? Ich vermute, der Fernseher sendet ein Signal, auf das 12.04 jetzt wartet. Durch erneutes Einschalten des Fernsehgeräts wird dies NICHT behoben, und ich würde vorschlagen, diese neue "Funktion" über das Soundmenü überschreiben zu können.



Es gibt einen Fehlerbericht - aber keine Lösung auf dem Launchpad: bugs.launchpad.net/ubuntu/+source/fglrx-installer/+bug/1001842
Hiro-Protagonist

Antworten:


9

Ich habe dieses Problem gehabt. Ich konnte keine anständige Lösung finden, aber ich habe diese Arbeit um mich herum. Beachten Sie, dass es ein schrecklicher Hack ist, aber er erledigt den Job für mich, bis das Grundproblem behoben ist - hoffentlich hilft er jemand anderem. Alle 5 Sekunden prüft es dmesg auf HDMI-Verbindungsfehler und startet die Verbindung neu, wenn es einen findet.

Ich habe dieses Watchdog-Skript erstellt - ersetzen Sie "DFP1" durch den Namen Ihrer Ausgabe (erhalten Sie es von 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)

Wenn jemand einen besseren Weg kennt, um den Fehler zu erkennen (mit Katalysatortreibern), lassen Sie es mich bitte wissen. (Ich denke, mit den OpenSource-Treibern könnten Sie das Rücksetzbit des Codes bei drm acpi-Ereignissen auslösen, wenn Sie Skripte erstellen möchten.)

Ich beginne damit, dass ich dies zu /etc/rc.local hinzufüge: (ändere "xbmc" in den Benutzernamen, unter dem du dich anmeldest)

su xbmc -c 'python /home/USERNAME/src/check_hdmi.py &'

Das Skript funktioniert aber nicht die Automatisierung mit rc.local. Könnten Sie bitte zeigen, wie die rc.local aussehen soll?
ECII

Wäre es in Ordnung, das Skript zu cron hinzuzufügen und es jede Minute oder so ausführen zu lassen?
ECII

Sie könnten in cron setzen. Sie müssten den gesamten while True:Block entfernen und durch einfach ersetzen doTest(). Es kann einige Bastelarbeiten erfordern - stellen Sie sicher, dass es im Cron des angemeldeten Benutzers (nicht im Root) ausgeführt wird.
Vanilla_Brys

Mein rc.local enthält ein paar Dinge. Unten steht: su xbmc -c 'python /home/andy/src/check_hdmi.py &'dann in einer neuen Zeile exit 0. Haben Sie durch xbmcden richtigen Benutzernamen ersetzt?
Vanilla_Brys

Wenn Sie eine normale Desktop-Umgebung verwenden (ich verwende xbmc, also nicht), können Sie das Python-Skript wahrscheinlich einfach zu Ihren Startanwendungen hinzufügen.
Vanilla_Brys

4

In der Zwischenzeit habe ich eine schnelle Tastenkombination bemerkt, die ein paar Kopfschmerzen erspart, während der Fehlerbericht gut läuft.

Ziehen Sie einfach in eine ttyund zurück zu Ihrer GUI:

CTRL+ ALT+ F1 (oder irgendetwas von F1bis F6)

dann

CTRL+ ALT+ F8(Möglicherweise müssen Sie F7stattdessen anstelle von verwenden F8. Einer von ihnen bringt Sie zu Ihrem Desktop zurück, der andere gibt Ihnen einen schwarzen Bildschirm und einen Cursor.)

Es scheint, dass die Synchronisierung wiederhergestellt wird, wenn Sie zur GUI zurückkehren.

Dies ist viel schneller als das Abmelden und Wiederanmelden, und Ihre Programme usw. bleiben geöffnet.

Tastenkombination. Erledigt. Problemlos.

Dies ist natürlich keine Lösung. Es ist nur eine schnelle Tastaturkombination, um das HDMI zur erneuten Synchronisierung zu verleiten und so den Ton wieder herzustellen.

Es funktioniert an meinem Ende.
Möchte noch jemand seinen Fernseher für eine Sekunde ausschalten und es selbst versuchen?


2

Ich habe festgestellt, dass beim Ausschalten und erneuten Einschalten des Fernsehgeräts auch der Ton zurückgesetzt wird (Radeon HD6670). Mit den aticonfig-Befehlen wird die Anzeige so eingestellt, dass sie den Bildschirm meines Fernsehgeräts ausfüllt. Sie müssen Ihren Ausgabenamen herausfinden, indem Sie "xrandr -q" ausführen und "DFP1" in den Wert ändern, der in der Ausgabe des Befehls vor "CONNECTED" aufgeführt ist (Groß- und Kleinschreibung wird berücksichtigt). Das einzige Problem bei meinem Setup ist, dass einige Fenster beim Ausführen des Ein / Aus-Teils des Skripts teilweise vom oberen Bildschirmrand springen (Alt-Ziehen Sie sie nach unten, wenn es Ihnen passiert). Vielleicht kann jemand eine bessere Lösung / Problemumgehung codieren.

#! /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

1

Gleiches Problem. Der einzige Hinweis, den ich habe, ist nach dem Laufenpactl 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

Es scheint, Monitor auszuschalten deaktiviert Senke? und wird nicht wieder aktiviert, wenn der Fernseher wieder eingeschaltet wird. HDMI-Ausgang-0: HDMI / DisplayPort (Priorität: 5900, nicht verfügbar )

" nicht verfügbar " sollte " verfügbar " sein

Ich gehe davon aus, dass Sie eine ATI-Karte mit fglrx verwenden. Versuchen

aticonfig --acpi-services=off

Ich bin mir nicht sicher, ob diese Einstellung dauerhaft ist. Wenn ja, lautet der Befehl zum erneuten Einschalten.

aticonfig --acpi-services=on

Ich bezweifle, dass dies funktionieren wird. BEARBEITEN> (nicht)

Als user53740 gepostet. Abmelden / Einstellen stellt Audio wieder her. Durch Ein- und Ausschalten des Monitors wird HDMI-Audio deaktiviert. Wenn Sie sich wirklich nicht abmelden möchten, können Sie das HDMI-Plug-In wieder entfernen und das HDMI-Audio wird wiederhergestellt. Mach es nicht zu oft. Nur wenn du verzweifelt bist.

Es ist ein Thread hier ond ein dodgey Fehlerbericht hier

BEARBEITEN> Eine weitere Problemumgehung ist Systemeinstellungen> Anzeigen. Klicken Sie dann auf Übernehmen, ohne etwas zu ändern.


1

Gehen Sie zu Systemeinstellungen → Anzeigen

Ändern Sie die Auflösung, wenden Sie sie an und ändern Sie sie dann wieder.

Alle Einstellungen → Ton → HDMI auswählen


0

Das gleiche Problem haben.

Natürlich sind ATI-Treiber wahrscheinlich wieder die Ursache für Probleme. Meins ist Radeon HD 6xxx.

Wenn Sie sich abmelden und wieder anmelden, wird der Sound wieder hergestellt, aber ich denke, dass es eine andere einfachere Lösung geben könnte.


0

Gelöste GD Herren

Hatte das gleiche Problem nur mein http mit ATI 5770 war mit dem Empfänger und dann mit dem Fernseher verbunden. Dieses Problem wurde behoben, indem das neueste BETA-Treiberpaket von der AMD-Website heruntergeladen und installiert wurde.

Hier ist der Link ATI Radeon

Vielen Dank für den Link zum Catalyst ™ 12.7 Beta-Treiber. Ich habe lange nach Google gesucht und niemand hatte eine einfache Antwort auf dieses nervige Problem.

Nach der Installation des AMD Catalyst 12.7 Beta-Treibers für Windows ® 7 und Windows Vista®

alles ist hunky-dory!

Herzlichen Dank.:)


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.