Howto: working GT2XX HDMI audio out with alsa

  Thread Rating:
  • 1 Votes - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Post Reply
moep Offline
Junior Member
Posts: 22
Joined: Mar 2004
Reputation: 0
Location: Austria
Wink  Howto: working GT2XX HDMI audio out with alsa Post: #1
I finally got the Nvidia HDMI audio fully working with the help of very kind and patient nvidia engineer who helped me solve the issue over the course of 2 days. Rolleyes

UPDATE: This post is now outdated. Please check the xbmc wiki article for the complete and correct instructions.

This is with Arch-2.6.32, alsa-driver-1.0.22.1, nvidia 190.53. My card is a GT210 but I’m 99% sure this works with any GT2xx card.

TLDR: The key is setting the probe_mask for the HDMI card to 0xfff2, else alsa will use the card’s Realtek codec instead of the Nvidia codec it should be using.

Make sure your system is up-to-date and has the latest version of alsa (1.0.22.1) installed and running.
This will only work if alsamixer already recognizes your HDMI audio device with four (defunct) SPDIF outputs!

aplay -l should show you something similar to this, depending on how many sound devices you have in your system:

Code:
**** List of PLAYBACK Hardware Devices ****
card 0: Intel [HDA Intel], device 0: ALC888 Analog [ALC888 Analog]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 3: NVIDIA HDMI [NVIDIA HDMI]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Card 1 is the Nvidia card in this example.
open /etc/modprobe.d/sound.conf and add this line:

Code:
options snd-hda-intel probe_mask=0xffff,0xfff2

If aplay -l shows Nvidia HDMI as card 0 you'll have to use this line:

Code:
options snd-hda-intel probe_mask=0xfff2

or for card 2:

Code:
options snd-hda-intel probe_mask=0xffff,0xffff,0xfff2

and so on.

Reboot and your HDMI audio out should work now.
You can test it with aplay -D plughw:1,3 aplay -D plughw:1,3 /usr/share/sounds/alsa/Noise.wav

where 1,3 obviously stands for card,device.

Go to the XBMC settings and set audio out and passthrough to HDA NVidia hdmi. Enjoy. Nod

Update: If you can’t get your card to show up in alsamixer and aplay -l at all I suggest you take a look at paoleary’s patch for snd-hda-codec-hdmi.

Update 2: This GT220 owner found that these cards require an additional option in the alsa config: options snd-hda-intel enable_msi=0 probe_mask=0xffff,0xfff2
(This post was last modified: 2010-03-21 14:49 by moep.)
find quote
fr1day Offline
Junior Member
Posts: 12
Joined: Jan 2010
Reputation: 0
Post: #2
Wow that seems much easier than what I've been reading so far, going to try it this evening many thanks.
find quote
sensei73 Offline
Senior Member
Posts: 104
Joined: May 2008
Reputation: 0
Post: #3
works for ubuntu base system?

edit: not working for me, I havae ubuntu karmic 64bits, nvidia 190.53 and alsa 1.0.22.1

aplay -l gives me:

**** Liste des PLAYBACK périphériques ****
carte 0: Intel [HDA Intel], périphérique 0 : ALC889A Analog [ALC889A Analog]
Sous-périphériques: 1/1
Sous-périphérique: #0: subdevice #0
carte 0: Intel [HDA Intel], périphérique 1 : ALC889A Digital [ALC889A Digital]
Sous-périphériques: 0/1
Sous-périphérique: #0: subdevice #0

XBMC SVN (updated every week) ubuntu Karmic 64bits
Intel E5200/ 3 Go Ram / Nvidia GT220 1Go / 6To (1.5To x 4 Raid 5)
(This post was last modified: 2010-02-05 20:16 by sensei73.)
find quote
moep Offline
Junior Member
Posts: 22
Joined: Mar 2004
Reputation: 0
Location: Austria
Post: #4
sensei73 Wrote:works for ubuntu base system?

edit: not working for me, I havae ubuntu karmic 64bits, nvidia 190.53 and alsa 1.0.22.1

can you see the card in alsamixer (press F6 in its gui)?
also, is snd-hda-codec-nvhdmi loaded? (lsmod)
find quote
TycoonX Offline
Junior Member
Posts: 6
Joined: Feb 2010
Reputation: 0
Post: #5
moep Wrote:can you see the card in alsamixer (press F6 in its gui)?
also, is snd-hda-codec-nvhdmi loaded? (lsmod)

I have the same problem

aplay -l doesn't show the device (GeForce 210)

lspci does show it as an audio device
alsa-mixer sees HDA Nvidia but shows: "This sound device does not have any controls".

Please advise
find quote
moep Offline
Junior Member
Posts: 22
Joined: Mar 2004
Reputation: 0
Location: Austria
Post: #6
do you see snd-hda-codec-nvhdmi listed when you enter lsmod in the console?
It seems like the module doesn’t get loaded by default for some. Odd, I had my HDMI audio in alsamixer from the very first boot — it just didn’t work. (archlinux, as mentioned before)
find quote
TycoonX Offline
Junior Member
Posts: 6
Joined: Feb 2010
Reputation: 0
Post: #7
moep Wrote:do you see snd-hda-codec-nvhdmi listed when you enter lsmod in the console?
It seems like the module doesn’t get loaded by default for some. Odd, I had my HDMI audio in alsamixer from the very first boot — it just didn’t work. (archlinux, as mentioned before)

I didn't see it, used insmod, now:

lsmod | grep hdmi
snd_hda_codec_nvhdmi 5084 0
snd_hda_codec 84960 2 snd_hda_codec_nvhdmi,snd_hda_intel
find quote
moep Offline
Junior Member
Posts: 22
Joined: Mar 2004
Reputation: 0
Location: Austria
Post: #8
TycoonX Wrote:I didn't see it, used insmod, now:

lsmod | grep hdmi
snd_hda_codec_nvhdmi 5084 0
snd_hda_codec 84960 2 snd_hda_codec_nvhdmi,snd_hda_intel

Can you run a quick md5sum on your snd-hda-codec-nvhdmi.ko and snd-hda-intel.ko and post the results here?
find quote
TycoonX Offline
Junior Member
Posts: 6
Joined: Feb 2010
Reputation: 0
Post: #9
my /lib/modules/2.6.31-17-generic/kernel/sound/pci/hda just went empty,
weird

perhaps i should update my kernel or re-compile
find quote
moep Offline
Junior Member
Posts: 22
Joined: Mar 2004
Reputation: 0
Location: Austria
Post: #10
If you absolutely can’t get your card to show up you could try the HD_AUDIO-9.10.tar.gz driver package. Google the filename and you’ll find it.

before compiling:

patch_nvhdmi.c: replace all occurrences of 10de000d with 10de000b
hda_intel.c: replace 0x0d97 with 0x0be3
(these are for the GT210 only).

make, make install, reboot.

It’s a long shot but maybe that will help you get the card to show up in alsamixer.
find quote
Post Reply