[alsa-devel] NVIDIA HDMI surround sound is broken starting with kernel 2.6.36
The behavior described below started with 2.6.36 and follows through up to the most recent stable kernel, 2.6.37. The last properly working driver is in kernel 2.6.35.9. I should also mention that while the tests below use the static_hdmi_pcm flag recently introduced to alsa git, I also tested with the in-kernel drivers for each stable kernel. The particular device used for testing is an Nvidia GT220 video card connected directly to my receiver via HDMI.
Can someone please look into this?
Tested: cold boot, kernel 2.6.37, alsa snapshot jan.25,2010, static_hdmi_pcm=1, receiver ON
cold boot, kernel 2.6.37, alsa snapshot jan.25,2010, static_hdmi_pcm=1, receiver OFF
cold boot, kernel 2.6.37, alsa snapshot jan.25,2010, static_hdmi_pcm=0, receiver ON
cold boot, kernel 2.6.37, alsa snapshot jan.25,2010, static_hdmi_pcm=0, receiver OFF
In all cases only the front-left and front-right speakers worked. LFE, rear-left, rear-right, and center were missing. ELD correctly reported channels corresponding to receiver ON/OFF. (receiver on=7.1, receiver off=tv stereo).
Also, even though the eld file is removed, the eld info is _not_ updated when stopping alsa & unloading drivers, then reloading. A reboot is required to get the eld info to update. This is why I cold boot the pc for each test.
With kernel 2.6.35.9 drivers, front-left & front-right worked with receiver OFF as expected. I then turn the receiver on and all channels worked. I didn't bother to stop alsa, reboot, or even look at eld info since it works.
Thanks for any & all help, Derek
VDR User wrote at Monday, January 31, 2011 10:39 AM:
... Also, even though the eld file is removed, the eld info is _not_ updated when stopping alsa & unloading drivers, then reloading. A reboot is required to get the eld info to update. This is why I cold boot the pc for each test.
The NVIDIA graphics driver reads the monitor's EDID and passed the ELD information to the audio HW, from whence it is read by the ALSA driver. The EDID is only read when the X server is started, or perhaps when you click the "detect displays" button in the nvidia-settings utility.
Hence, restarting X (e.g. logout/login), or using nvidia-settings, is probably sufficient to update the ELD data; no reboot required.
Hope this helps.
On Mon, Jan 31, 2011 at 9:51 AM, Stephen Warren swarren@nvidia.com wrote:
Also, even though the eld file is removed, the eld info is _not_ updated when stopping alsa & unloading drivers, then reloading. A reboot is required to get the eld info to update. This is why I cold boot the pc for each test.
The NVIDIA graphics driver reads the monitor's EDID and passed the ELD information to the audio HW, from whence it is read by the ALSA driver. The EDID is only read when the X server is started, or perhaps when you click the "detect displays" button in the nvidia-settings utility.
Hence, restarting X (e.g. logout/login), or using nvidia-settings, is probably sufficient to update the ELD data; no reboot required.
That explains why the ELD info isn't updated, although doesn't explain the actual problem of missing channels. I do think it's worthy to rethink that behavior in the Nvidia driver. The reason being that many users, like myself, are using an htpc environment where the audio/video output is connected directly to a tv or home theater receiver. In my case it's a receiver that is turned on/off as needed. There is no keyboard, mouse, or anything other then an IR remote control to navigate the software I'm running. To click "detect displays" would mean digging the box out of its current location and connecting a monitor & mouse to it just to do so. Extremely inconvenient. I would guess that the best solution would be the Nvidia driver having the ability to update the ELD info upon request. There's got to be method of detecting things like receivers being turned on/off.
Maybe another thread should be started regarding that issue since we're getting away from the problem of missing channels.
On Mon, Jan 31, 2011 at 9:38 AM, VDR User user.vdr@gmail.com wrote:
The behavior described below started with 2.6.36 and follows through up to the most recent stable kernel, 2.6.37. The last properly working driver is in kernel 2.6.35.9. I should also mention that while the tests below use the static_hdmi_pcm flag recently introduced to alsa git, I also tested with the in-kernel drivers for each stable kernel. The particular device used for testing is an Nvidia GT220 video card connected directly to my receiver via HDMI.
Can someone please look into this?
Tested: cold boot, kernel 2.6.37, alsa snapshot jan.25,2010, static_hdmi_pcm=1, receiver ON
cold boot, kernel 2.6.37, alsa snapshot jan.25,2010, static_hdmi_pcm=1, receiver OFF
cold boot, kernel 2.6.37, alsa snapshot jan.25,2010, static_hdmi_pcm=0, receiver ON
cold boot, kernel 2.6.37, alsa snapshot jan.25,2010, static_hdmi_pcm=0, receiver OFF
In all cases only the front-left and front-right speakers worked. LFE, rear-left, rear-right, and center were missing. ELD correctly reported channels corresponding to receiver ON/OFF. (receiver on=7.1, receiver off=tv stereo).
Also, even though the eld file is removed, the eld info is _not_ updated when stopping alsa & unloading drivers, then reloading. A reboot is required to get the eld info to update. This is why I cold boot the pc for each test.
With kernel 2.6.35.9 drivers, front-left & front-right worked with receiver OFF as expected. I then turn the receiver on and all channels worked. I didn't bother to stop alsa, reboot, or even look at eld info since it works.
Will someone PLEASE look into this?
participants (2)
-
Stephen Warren
-
VDR User