El audio HDMI se detiene después de apagar el televisor

10

Después de la actualización 12.04, mi audio HDMI deja de funcionar cada vez que apago mi segundo monitor (TV de plasma). La tarjeta gráfica es una Radeon 6800 que tiene salida DVI al primer monitor, salida HDMI al receptor que el televisor recibe es Audio / Video. El audio siempre es a través del sonido de mi receptor.

Las cosas funcionan bien siempre que arranquen con el televisor y el receptor encendidos. Apague el televisor y el audio HDMI de BART desaparecerá, y la opción HDMI desaparecerá del menú de sonido. Tuve un problema ocasional de HDMI con 11.10, pero encender / apagar el televisor solucionaría el sonido. ¿Cómo puedo codificar cosas para que siempre use HDMI sin audio? Sospecho que el televisor está enviando una señal de que 12.04 ahora está escuchando. Volver a encender el televisor NO resuelve esto, y sugeriría tener la capacidad de anular esta nueva "función" a través del menú de sonido.

Ryan
fuente
hay un informe de error, pero no hay solución en el launchpad: bugs.launchpad.net/ubuntu/+source/fglrx-installer/+bug/1001842
protagonista de hiro

Respuestas:

9

He estado teniendo este problema No pude encontrar una solución decente, pero tengo esta solución. Tenga en cuenta que es un truco horrible, pero hace el trabajo por mí hasta que se solucione el problema raíz, con suerte ayudará a alguien más. Cada 5 segundos comprueba dmesg en busca de errores de conexión HDMI y, si encuentra uno, reinicia la conexión.

Hice este script de vigilancia: reemplace "DFP1" con el nombre de su salida (consígalo 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 alguien conoce una mejor manera de detectar el error (con controladores de catalizador), hágamelo saber. (Con los controladores de código abierto, creo que podría activar el bit de restablecimiento del código en los eventos drm acpi si quisiera hacer algunos scripts).

Lo comienzo agregando esto a /etc/rc.local: (cambie "xbmc" al nombre de usuario con el que inicia sesión)

su xbmc -c 'python /home/USERNAME/src/check_hdmi.py &'
Vanilla_Brys
fuente
El script funciona pero no la automatización con rc.local. ¿Podría mostrar cómo debería ser el rc.local?
ECII
¿Estaría bien agregar el script a cron y dejar que se ejecute cada minuto más o menos?
ECII
Podrías ponerlo en cron. Tendría que eliminar todo el while True:bloque y reemplazarlo simplemente doTest(). Puede tomar algunos ajustes: asegúrese de que se ejecute en el cron de los usuarios registrados (no en la raíz).
Vanilla_Brys
Mi rc.local contiene algunas cosas. En la parte inferior tiene esto: su xbmc -c 'python /home/andy/src/check_hdmi.py &'luego en una nueva línea exit 0. ¿Ha reemplazado xbmccon el nombre de usuario correcto?
Vanilla_Brys
Si está utilizando un entorno de escritorio normal (estoy usando xbmc, así que no), probablemente podría simplemente agregar el script de Python a sus aplicaciones de inicio.
Vanilla_Brys
4

Mientras tanto, mientras el informe de error se repasa, he notado una combinación rápida de botones que ahorrará algunos dolores de cabeza.

Simplemente desplácese hacia ay ttyvuelva a su GUI:

CTRL+ ALT+ F1 (o cualquier cosa desde F1a F6)

luego

CTRL+ ALT+ F8(es posible que necesite usar en F7lugar de F8. Uno de ellos lo devolverá a su escritorio, el otro le dará una pantalla negra y un cursor)

Parece que la sincronización se restablece al volver a la GUI.

Esto es mucho más rápido que cerrar sesión y volver a iniciarla, y sus programas, etc., permanecen abiertos.

Combinación de botones. Hecho. Sin complicaciones.

Por supuesto, esto no es una solución. Es solo una combinación rápida de teclado para engañar al HDMI para que se vuelva a sincronizar y así recuperar el audio.

Funciona de mi parte.
¿Alguien más quiere apagar su televisor por un segundo y probarlo ellos mismos?

usuario85894
fuente
2

Me di cuenta de que si apaga la salida del televisor y la vuelve a encender, también se restablece el sonido (Radeon HD6670). Los comandos aticonfig configuran la pantalla para llenar la pantalla de mi televisor. Debe encontrar su nombre de salida ejecutando "xrandr -q", cambie "DFP1" a lo que aparece antes de "CONECTADO" en la salida del comando (distingue entre mayúsculas y minúsculas). El único problema con esto en mi configuración es que algunas ventanas saltan parcialmente de la parte superior de la pantalla cuando se ejecuta la parte de encendido / apagado del script (Alt-Arrástrelos hacia abajo si le sucede). Quizás alguien pueda codificar una solución / solución mejor.

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

El mismo problema. La única pista que tengo es después de correrpactl 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

Parece que apagar el monitor deshabilita el fregadero? y no se vuelve a habilitar cuando se vuelve a encender la televisión. hdmi-output-0: HDMI / DisplayPort (prioridad: 5900, no disponible )

" no disponible " debe estar " disponible "

Supongo que está utilizando una tarjeta ATI con fglrx. tratar

aticonfig --acpi-services=off

No estoy seguro si esta configuración es persistente. Si es así, el comando para encender de nuevo es.

aticonfig --acpi-services=on

Dudo que esto funcione. EDITAR> (no lo hizo)

Como usuario53740 publicado. Cerrar sesión / restablecer audio. Encender o apagar el monitor deshabilita el audio HDMI. Si realmente no desea desconectarse, puede quitar hdmi plug un complemento nuevamente y se restaurará el audio hdmi. No lo hagas con demasiada frecuencia. Solo cuando estás desesperado.

Hay un hilo aquí y un informe de error Dodgey aquí

EDITAR> Otra solución es ir a Configuración del sistema> Pantalla. Luego haga clic en aplicar sin cambiar nada.

usuario55138
fuente
1

Vaya a Configuración del sistema → Pantallas

Cambie la resolución, aplique, luego vuelva a cambiarla.

Todas las configuraciones → Sonido → seleccione HDMI

Nicolai
fuente
0

Tener el mismo problema

Por supuesto, los controladores ATI son probablemente la causa de los problemas, nuevamente. El mío es Radeon HD 6xxx.

Cerrar la sesión y volver a iniciarla recupera el sonido, pero supongo que podría haber otra solución más simple.

Xamidovic
fuente
0

Soldados GD resueltos

Tuve el mismo problema, solo mi http con ATI 5770 estaba conectado al receptor y luego a la TV. Resolvió este problema descargando e instalando el último paquete de controladores BETA del sitio web de AMD.

Aquí está el enlace ATI Radeon

Muchas gracias por el enlace al controlador beta Catalyst ™ 12.7. Estuve buscando en Google durante mucho tiempo y nadie tenía una respuesta fácil para este molesto problema.

Pero después de instalar el controlador AMD Catalyst 12.7 Beta Driver para Windows ® 7 y Windows Vista®

¡todo es hunky-dory!

Muy agradecido.:)

John
fuente