O áudio HDMI para depois que a TV é desligada

10

Após a atualização 12.04, meu áudio HDMI para de funcionar a qualquer momento que eu desligo o meu segundo monitor (TV de plasma). A placa gráfica é uma Radeon 6800 que possui saída DVI para o 1º monitor e saída HDMI para o receptor que a TV obtém em áudio / vídeo. O áudio é sempre através do som do meu receptor.

As coisas funcionam bem desde que sejam inicializadas com a TV e o receptor. Desligue a TV e o áudio HDMI do BART desaparecerá e a opção HDMI desaparecerá do menu de som. Ocorreu um problema ocasional no HDMI com a 11.10, mas ligar / desligar a TV corrigia o som. Como codificar as coisas para que elas sempre usem HDMI sem áudio? Suspeito que a TV esteja enviando um sinal de que o 12.04 está ouvindo. Ligar a TV novamente NÃO resolve isso, e eu sugiro que você possa substituir esse novo "recurso" pelo menu de som.

Ryan
fonte
possível duplicata de 12,04 Sem áudio de HDMI após troca Monitor Off / On
Javier Rivera
há um relatório de bug - mas nenhuma solução no Launchpad: bugs.launchpad.net/ubuntu/+source/fglrx-installer/+bug/1001842
hiro protagonista

Respostas:

9

Eu estou tendo esse problema. Não consegui encontrar uma solução decente, mas tenho esse trabalho por aí. Observe que é um hack horrível, mas ele faz o trabalho para mim até que o problema raiz seja resolvido - espero que ajude outra pessoa. A cada 5 segundos, verifica o dmesg quanto a erros de conexão HDMI e, se encontrar, reinicia a conexão.

Eu criei esse script de watchdog - substitua "DFP1" pelo nome da sua saída (obtenha-o no 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 alguém souber uma maneira melhor de detectar o erro (com drivers catalisadores), entre em contato. (Com os drivers de código-fonte aberto, acho que você pode disparar o bit de redefinição do código nos eventos drm acpi, se quiser fazer algum script).

Eu o inicio adicionando isso ao /etc/rc.local: (altere "xbmc" para o nome de usuário no qual você faz login)

su xbmc -c 'python /home/USERNAME/src/check_hdmi.py &'
Vanilla_Brys
fonte
O script funciona, mas não a automação com rc.local. Você poderia mostrar como deve ser o rc.local?
ECII
Seria bom adicionar o script ao cron e deixá-lo executar a cada minuto ou mais?
ECII
Você pode colocar no cron. Você teria que remover o while True:bloco inteiro e substituí-lo simplesmente doTest(). Pode levar alguns ajustes - certifique-se de que seja executado no cron de usuários logados (não raiz).
Vanilla_Brys #
Meu rc.local contém algumas coisas. No fundo, tem o seguinte: su xbmc -c 'python /home/andy/src/check_hdmi.py &'então em uma nova linha exit 0. Você substituiu xbmcpelo nome de usuário correto?
Vanilla_Brys
Se você estiver usando um ambiente de área de trabalho normal (estou usando xbmc, por isso não estou), provavelmente poderá adicionar o script python aos seus aplicativos de inicialização.
Vanilla_Brys
4

Enquanto isso, enquanto o relatório de erros passa por uma boa revisão, notei uma combinação rápida de botões que salvará algumas dores de cabeça.

Simplesmente entre em ttye retorne à sua GUI:

CTRL+ ALT+ F1 (ou qualquer coisa de F1a F6)

então

CTRL+ ALT+ F8(talvez você precise usar em F7vez de F8. Um deles retornará à sua área de trabalho, o outro exibirá uma tela preta e um cursor)

Parece que a sincronização é restabelecida ao retornar à GUI.

Isso é muito mais rápido do que sair e entrar novamente, e seus programas etc. permanecem abertos.

Combinação de botões. Feito. Sem complicações.

Claro que isso não é uma solução. É apenas uma combinação rápida de teclado para enganar o HDMI para sincronizar novamente e, assim, recuperar o áudio.

Isso funciona do meu lado.
Alguém mais quer desligar a TV por um segundo e experimentá-la?

user85894
fonte
2

Notei que, se você desligar a saída da TV e ligá-la novamente, também redefinirá o som (Radeon HD6670). Os comandos aticonfig configuram a tela para preencher a tela da minha TV. Você precisa descobrir seu nome de saída executando "xrandr -q", altere "DFP1" para o que está listado antes de "CONNECTED" na saída do comando (é sensível a maiúsculas e minúsculas). O único problema com isso na minha configuração é que algumas janelas saltam parcialmente da parte superior da tela ao executar a parte on / off do script (arraste-as com a tecla Alt pressionada novamente, se isso acontecer com você). Talvez alguém possa codificar uma solução / solução alternativa melhor.

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

Mesmo problema. A única dica que tenho é depois de executarpactl 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 desligar o monitor desativa afundar? e não reativa quando a TV é ligada novamente. hdmi-output-0: HDMI / DisplayPort (prioridade: 5900, não disponível )

" não disponível " deve estar " disponível "

Presumo que você esteja usando uma placa ATI com fglrx. experimentar

aticonfig --acpi-services=off

Não tenho certeza se essa configuração é persistente. Nesse caso, o comando para ativar novamente é.

aticonfig --acpi-services=on

Duvido que isso funcione. EDITAR> (Não funcionou)

Como user53740 publicado. Logout / in restaura o áudio. Ligar ou desligar o monitor desativa o áudio HDMI. Se você realmente não deseja sair, você pode remover o hdmi, conecte um plug-in novamente e o áudio hdmi será restaurado. Não faça isso com muita frequência. Somente quando você está desesperado.

Há um tópico aqui e um relatório de erro esquivo aqui

EDITAR> Outra solução alternativa é ir para Configurações do sistema> Vídeo. Em seguida, clique em Aplicar sem alterar nada.

user55138
fonte
1

Vá para Configurações do sistema → Monitores

Altere a resolução, aplique e altere-a novamente.

Todas as configurações → Som → selecione HDMI

Nicolai
fonte
0

Tendo o mesmo problema.

Obviamente, os drivers da ATI provavelmente são a causa de problemas novamente. A minha é a Radeon HD 6xxx.

Ao sair e voltar, o som é recuperado, mas acho que poderia haver outra solução mais simples.

Xamidovic
fonte
0

GD Gents resolvido

Teve o mesmo problema, apenas o meu http com ATI 5770 foi conectado ao receptor e depois à TV. Resolvido esse problema baixando e instalando o pacote de drivers BETA mais recente no site da AMD.

Aqui está o link ATI Radeon

Muito obrigado pelo link para o Catalyst ™ 12.7 Beta Driver. Eu pesquisava no Google há muito tempo e ninguém tinha uma resposta fácil para esse problema irritante.

Porém, após a instalação do driver AMD Catalyst 12.7 Beta para Windows ® 7 e Windows Vista®

tudo é bonitinho!

Muito grato.:)

John
fonte
0

Isso funciona para mim (placa gráfica Intel HD): killall pulseaudio

(encontrado aqui: /ubuntu//a/176276/45779 )

Eugen Labun
fonte