12.04 更新后,每次我关闭第二台显示器(等离子电视)时,HDMI 音频都会停止工作。显卡是 Radeon 6800,它有 DVI 输出到第一台显示器,HDMI 输出到接收器,电视会从接收器获得音频/视频。音频始终通过我的接收器发出。
只要电视和接收器打开,一切就都正常了。关闭电视,BART 的 HDMI 音频就会消失,HDMI 选项也会从声音菜单中消失。我偶尔会在 11.10 中遇到 HDMI 问题,但打开/关闭电视可以解决声音问题。我如何才能硬编码一些东西,以便它总是使用 HDMI 输出音频?我怀疑电视正在发送 12.04 现在正在监听的信号。重新打开电视并不能解决这个问题,我建议能够通过声音菜单覆盖这个新“功能”。
答案1
我一直有这个问题。我找不到合适的解决方法,但我有这个解决方法。请注意,这是一个可怕的黑客,但它为我完成了工作,直到根本问题得到解决——希望它能帮助其他人。每 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)
如果有人知道更好的检测错误的方法(使用催化剂驱动程序),请告诉我。(使用开源驱动程序,如果您想编写一些脚本,我认为您可以在 drm acpi 事件上触发代码的重置位)。
我通过将其添加到 /etc/rc.local 来启动它:(将“xbmc”更改为您登录的用户名)
su xbmc -c 'python /home/USERNAME/src/check_hdmi.py &'
答案2
与此同时,在错误报告得到很好的处理的同时,我注意到一个快捷按钮组合可以避免一些麻烦。
只需将其拉出来tty
并返回到您的 GUI:
CTRL+ ALT+ F1 (或从F1到 的任何内容F6)
然后
CTRL+ ALT+ F8(您可能需要使用F7而不是F8。其中一个将使您返回到桌面,另一个将使您出现黑屏和光标)
返回 GUI 时似乎重新建立了同步。
这比注销并重新登录要快得多,并且您的程序等仍然保持打开状态。
按钮组合。完成。轻松无忧。
这当然不是解决办法。这只是一个快速的键盘组合,可以欺骗 HDMI 重新同步,从而恢复音频。
在我这边它成功了。
还有谁想关掉电视一会儿自己试试吗?
答案3
我注意到,如果您关闭电视输出然后重新打开,声音也会重置(Radeon HD6670)。aticonfig 命令将显示设置为填满我的电视屏幕。您需要通过运行“xrandr -q”找出输出名称,将“DFP1”更改为命令输出中“CONNECTED”之前列出的名称(区分大小写)。在我的设置中,唯一的问题是,在运行脚本的开/关部分时,某些窗口会跳出屏幕顶部(如果发生这种情况,请按 Alt 键将它们拖回原位)。也许有人可以编写更好的解决方案/解决方法。
#! /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
答案4
进入系统设置 → 显示
更改分辨率,应用,然后将其改回。
所有设置 → 声音 → 选择 HDMI