L'audio HDMI si interrompe dopo lo spegnimento della TV


10

Dopo l'aggiornamento 12.04 il mio audio HDMI smette di funzionare ogni volta che spengo il mio secondo monitor (TV al plasma). La scheda grafica è una Radeon 6800 con uscita DVI al 1 ° monitor, uscita HDMI al ricevitore che la TV ottiene audio / video. L'audio è sempre tramite l'audio del mio ricevitore.

Le cose funzionano bene finché si avviano con la TV e il ricevitore accesi. Spegni la TV e l'audio HDMI di BART scompare e l'opzione HDMI scompare dal menu audio. Ho avuto un problema HDMI occasionale con 11.10 ma accendere / spegnere la TV avrebbe risolto il suono. Come posso codificare le cose in modo che utilizzi sempre l'audio HDMI fuori? Ho il sospetto che la TV stia inviando un segnale che 12.04 sta ascoltando. Riaccendere la TV NON risolve questo problema e suggerirei di avere la possibilità di sostituire questa nuova "funzione" tramite il menu audio.



c'è una segnalazione di bug - ma nessuna soluzione sul launchpad: bugs.launchpad.net/ubuntu/+source/fglrx-installer/+bug/1001842
protagonista hiro

Risposte:


9

Ho avuto questo problema. Non sono riuscito a trovare una soluzione decente, ma ho questo lavoro in giro. Nota che è un trucco orribile, ma fa il lavoro per me fino a quando il problema di root non viene risolto - si spera che possa aiutare qualcun altro. Ogni 5 secondi controlla dmesg per errori di connessione HDMI e se ne trova uno riavvia la connessione.

Ho creato questo script di watchdog: sostituisci "DFP1" con il nome del tuo output (prendilo da 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)

Se qualcuno conosce un modo migliore per rilevare l'errore (con i driver catalyst), per favore fatemelo sapere. (Con i driver opensource penso che potresti attivare il bit di reset del codice sugli eventi drm acpi se volessi fare degli script).

Lo avvio aggiungendo questo a /etc/rc.local: (cambia "xbmc" con il nome utente che accedi come)

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

Lo script funziona ma non l'automazione con rc.local. Potresti mostrare come dovrebbe apparire rc.local?
ECII,

Sarebbe OK aggiungere lo script a cron e lasciarlo eseguire ogni minuto?
ECII

Potresti metterlo in cron. Dovresti rimuovere l'intero while True:blocco e sostituirlo con semplicemente doTest(). Potrebbero essere necessari alcuni aggiustamenti: assicurati che venga eseguito nel cron degli utenti connessi (non root).
Vanilla_Brys,

Il mio rc.local contiene alcune cose. In fondo ha questo: su xbmc -c 'python /home/andy/src/check_hdmi.py &'quindi su una nuova riga exit 0. Hai sostituito xbmccon il nome utente corretto?
Vanilla_Brys,

Se stai usando un normale ambiente desktop (sto usando xbmc, quindi non lo sono), probabilmente potresti semplicemente aggiungere lo script python alle tue applicazioni di avvio.
Vanilla_Brys,

4

Nel frattempo, mentre il bug report procede bene, ho notato una rapida combinazione di pulsanti che farà risparmiare qualche mal di testa.

Basta estrarre in a ttye tornare alla tua GUI:

CTRL+ ALT+ F1 (o qualsiasi altra cosa da F1a F6)

poi

CTRL+ ALT+ F8(potrebbe essere necessario utilizzare F7invece di F8. Uno di essi ti riporterà sul desktop, l'altro ti darà una schermata nera e un cursore)

Sembra che la sincronizzazione venga ristabilita quando si ritorna alla GUI.

Questo è molto più veloce di disconnettersi e riconnettersi, e i tuoi programmi ecc. Rimangono aperti.

Combinazione di pulsanti. Fatto. Senza fastidi.

Questo ovviamente non è una soluzione. È solo una rapida combinazione di tasti per ingannare l'HDMI per la risincronizzazione e quindi ripristinare l'audio.

Funziona dalla mia parte.
Qualcun altro vuole spegnere la TV per un secondo e provarlo da soli?


2

Ho notato che se si spegne l'uscita della TV e la si riaccende, ripristina anche il suono (Radeon HD6670). I comandi aticonfig impostano il display per riempire lo schermo sulla mia TV. È necessario scoprire il nome dell'output eseguendo "xrandr -q" modificare "DFP1" in ciò che è elencato prima di "CONNECTED" nell'output del comando (è sensibile al maiuscolo / minuscolo). L'unico problema con questo sulla mia configurazione è che alcune finestre saltano parzialmente dalla parte superiore dello schermo quando si esegue la parte di attivazione / disattivazione dello script (Alt-trascinarle verso il basso se succede a te). Forse qualcuno può programmare una soluzione / soluzione alternativa migliore.

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

Stesso problema. L'unico suggerimento che ho è dopo aver corsopactl 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

Sembra che lo spegnimento del monitor disabiliti il ​​lavandino? e non si riattiva quando si riaccende la TV. hdmi-output-0: HDMI / DisplayPort (priorità: 5900, non disponibile )

" non disponibile " dovrebbe essere " disponibile "

Presumo che tu stia utilizzando una scheda ATI con fglrx. provare

aticonfig --acpi-services=off

Non sono sicuro che questa impostazione sia persistente. In tal caso, il comando per riaccenderlo è.

aticonfig --acpi-services=on

Dubito che funzionerà. EDIT> (non ha funzionato)

Come utente53740 pubblicato. Logout / in ripristina l'audio. L'accensione o lo spegnimento del monitor disabilita l'audio HDMI. Se davvero non vuoi disconnetterti, puoi rimuovere di nuovo un plug hdmi e l'audio hdmi verrà ripristinato. Non farlo troppo spesso. Solo quando sei disperato.

C'è un thread qui e un bug report schivato qui

MODIFICA> Un'altra soluzione alternativa è andare su Impostazioni di sistema> Schermo. Quindi fare clic su applica senza modificare nulla.


1

Vai a Impostazioni di sistema → Display

Cambia risoluzione, applica, quindi ripristina.

Tutte le impostazioni → Suono → selezionare HDMI


0

Avere lo stesso problema.

Naturalmente, i driver ATI sono probabilmente la causa dei problemi, ancora una volta. Il mio è Radeon HD 6xxx.

Disconnettersi e riconnettersi ripristina il suono, ma immagino che potrebbe esserci un'altra soluzione più semplice.


0

Risolti GD Gents

Aveva lo stesso problema solo il mio http con ATI 5770 era collegato al ricevitore e quindi alla TV. Risolto questo problema scaricando e installando l'ultimo pacchetto di driver BETA dal sito Web AMD.

Ecco il link ATI Radeon

Grazie mille per il link al Catalyst ™ 12.7 Beta Driver che cercavo da molto tempo su Google e nessuno aveva una risposta facile per questo fastidioso problema.

Ma dopo aver installato il driver AMD Catalyst 12.7 Beta per Windows ® 7 e Windows Vista®

tutto è hunky-dory!

Molto obbligato.:)


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.