电视关闭后 HDMI 音频停止

Rya*_*yan 11 sound hdmi radeon 12.04

在 12.04 更新后,只要我关闭第二台显示器(等离子电视),我的 HDMI 音频就会停止工作。显卡是 Radeon 6800,它有 DVI 输出到第一台显示器,HDMI 输出到接收器,电视接收它的音频/视频。音频总是通过我的接收器声音。

只要它在电视和接收器打开的情况下启动,事情就可以正常工作。关闭电视,BART 的 HDMI 音频将消失,并且 HDMI 选项从声音菜单中消失。我在 11.10 上偶尔会遇到 HDMI 问题,但打开/关闭电视会修复声音。我怎样才能硬编码东西,以便它总是使用 HDMI 音频?我怀疑电视正在发送 12.04 现在正在收听的信号。重新打开电视并不能解决这个问题,我建议能够通过声音菜单覆盖这个新的“功能”。

小智 9

我一直有这个问题。我找不到像样的修复,但我有这个解决办法。请注意,这是一个可怕的黑客攻击,但在解决根本问题之前它对我有用——希望它会帮助其他人。它每 5 秒检查 dmesg 是否存在 HDMI 连接错误,如果发现错误,则重新启动连接。

我制作了这个看门狗脚本——用你的输出名称替换“DFP1”(从 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)
Run Code Online (Sandbox Code Playgroud)

如果有人知道检测错误的更好方法(使用催化剂驱动程序),请告诉我。(对于开源驱动程序,我认为如果您想编写一些脚本,您可以在 drm acpi 事件上触发代码的重置位)。

我通过将其添加到 /etc/rc.local 来启动它:(将“xbmc”更改为您登录的用户名)

su xbmc -c 'python /home/USERNAME/src/check_hdmi.py &'
Run Code Online (Sandbox Code Playgroud)


小智 6

与此同时,虽然错误报告得到了很好的处理,但我注意到一个快速按钮组合可以省去一些麻烦。

只需拉出 atty并返回到您的 GUI:

CTRL+ ALT+ F1 (或从任何F1F6

然后

CTRL+ ALT+ F8(您可能需要使用F7而不是F8。其中一个将使您返回到桌面,另一个将给您一个黑屏和一个光标)

返回 GUI 时似乎重新建立了同步。

这比注销并重新登录要快得多,并且您的程序等保持打开状态。

按钮组合。完毕。无忧无虑。

这当然不是修复。这只是一个快速的键盘组合来欺骗 HDMI 重新同步,从而恢复音频。

它对我有用。
还有其他人想关闭电视并自己尝试一下吗?


use*_*138 1

同样的问题。我得到的唯一提示是跑步后pactl 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
Run Code Online (Sandbox Code Playgroud)

关闭显示器似乎会禁用接收器?并且当电视再次打开时不会重新启用。hdmi-output-0:HDMI / DisplayPort(优先级:5900,不可用

不可用”应为“可用

我假设您使用的是带有 fglrx 的 ATI 卡。尝试

aticonfig --acpi-services=off
Run Code Online (Sandbox Code Playgroud)

不确定此设置是否持续存在。如果是这样,则再次打开的命令是。

aticonfig --acpi-services=on
Run Code Online (Sandbox Code Playgroud)

我怀疑这会起作用。编辑>(没有)

正如用户53740 所发布的。注销/登录恢复音频。打开或关闭显示器会禁用 HDMI 音频。如果您确实不想注销,可以再次删除 hdmi 插头插件,hdmi 音频将恢复。不要太频繁地这样做。只有当你绝望的时候。

这里有一个线程,这里有一个狡猾的错误报告

编辑>另一种解决方法是转到“系统设置”>“显示”。然后单击“应用”,无需更改任何内容。


Xam*_*vic 0

有同样的问题。

当然,ATI 驱动程序也可能是问题的根源。我的是 Radeon HD 6xxx 。

注销并重新登录可以恢复声音,但我想可能还有另一个更简单的解决方案。