![HDMI 声音消失了,不知道如何重新打开](https://linux22.com/image/1104050/HDMI%20%E5%A3%B0%E9%9F%B3%E6%B6%88%E5%A4%B1%E4%BA%86%EF%BC%8C%E4%B8%8D%E7%9F%A5%E9%81%93%E5%A6%82%E4%BD%95%E9%87%8D%E6%96%B0%E6%89%93%E5%BC%80.png)
我有一台 Acer Revo 盒子作为媒体中心已有一段时间了。我最近在上面安装了 Ubuntu Server (10.10),并使用nodm
(启动 X 会话的最简单方法之一)对其进行了完善,并安装了boxee
。它已经运行了一个多月,一切正常。
它只是运行 ALSA。我之前在使用 PulseAudio/Boxee/HDMI 时遇到过问题,所以我想保持简单。而且这很有效。它完美地通过 HDMI 推送了 PCM 和数字(AAC 和各种杜比编解码器)。
但是前几天我调整了一些nfs
配置后重新启动了它,现在没有任何声音。
硬件是 ION 芯片组。Nvidia 9400M 显卡,带 Nvidia MCP79/7A 音频。
我注意到的一件事是似乎没有任何IEC958
设备的迹象。过去对新安装的传统修复方法是加载alsamixer
,找到 IEC 设备,然后切换静音但我不能。我肯定这曾经代表 HDMI 输出。它似乎不再存在,除非我在运行sudo alsa-utils restart
时运行boxee
,然后我在错误消息中看到它:
* Shutting down ALSA... [ OK ]
* Setting up ALSA...
* warning: 'alsactl restore' failed with error message 'alsactl: set_control:1388: Cannot write control '2:0:0:IEC958 Playback Default:0' : Operation not permitted'...
...done.
当nodm
(以及 boxee)没有运行时,我没有看到此错误,但alsamixer
仍然没有显示 IEC 通道。
aplay -l
给出:
card 0: NVidia [HDA NVidia], device 0: ALC662 rev1 Analog [ALC662 rev1 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0]
Subdevices: 0/1
Subdevice #0: subdevice #0
其章节内容lshw
如下:
*-multimedia
description: Audio device
product: MCP79 High Definition Audio
vendor: nVidia Corporation
physical id: 8
bus info: pci@0000:00:08.0
version: b1
width: 32 bits
clock: 66MHz
capabilities: pm bus_master cap_list
configuration: driver=HDA Intel latency=0 maxlatency=5 mingnt=2
resources: irq:22 memory:fae78000-fae7bfff
我之前使用的是原装 PAE 内核,但现在使用的是 2.6.37.1。我进行了升级,想看看是否能解决问题;但并没有。
我正在考虑重新安装,但我讨厌这样做,因为 a) 让 X 和 Boxee 在启动时启动需要一些自定义配置,并且 b) 我不知道问题是什么。如果这次我重新安装,我最终会这样做每一个声音中断的时间。我喜欢 Ubuntu,但我不想每个月安装一次。
有没有办法强制重置所有alsa
设置并从头开始(无需重新安装)?还有其他建议吗?
如果您需要更多信息,请直接询问。
调试信息:http://www.alsa-project.org/db/?f=e615af490271aa6c67cfdba23d14c757012aecd9
答案1
已修复。结果发现我观察到的几乎所有内容都是完全的障眼法。Boxee 在启动时会获取声音设备,然后不允许其视频播放器使用它。
这个修复方法有点老套,但确实有效。这是一个简单的诱饵转换。你编写一个脚本来编辑 boxee 配置,这样声音就故意不起作用了,然后启动 boxe(它试图抓取一张假想的卡,但失败了),几秒钟后,脚本将音频配置恢复到应有的状态,允许视频播放声音。
您不需要直接运行 boxee 二进制文件,只需调用脚本即可。