# No luck with ALSA and nVidia HDA

## shuuhen

I've been trying to get audio working on my laptop (one of the last few things that I need to get working - wireless is next).  I've tried the in kernel ALSA, both compiled as part of the kernel and as kernel modules for both the 2.6.20-gentoo-r7 and 2.6.21-gentoo kernels (neither way worked).  I also tried leaving ALSA out of my kernel config and emerging alsa-driver with the 2.6.21-gentoo kernel (and a few earlier ones).

The best results I've had so far are from the 2.6.20-gentoo-r7 kernel with them built as modules.  I get both the Headphone and Speaker entries in alsamixer (but no PCM).  I checked /proc/asound/card0/pcm0p/sub0/status and it says 'closed'.  At one point I did manage to enable the PCM device in alsamixer, but the best I could get was static from aplay.  Not even static from madplay.

Here's the entry from 'lspci | grep Audio'

00:10.1 Audio device: nVidia Corporation MCP51 High Definition Audio (rev a2)

Here's the output from lsmod 

```
% lsmod                                                                  8:14PM

Module                  Size  Used by

nvidia               5653528  32

snd_seq_oss            32256  0

snd_seq_device          8400  1 snd_seq_oss

snd_seq_midi_event      8896  1 snd_seq_oss

snd_seq                50336  4 snd_seq_oss,snd_seq_midi_event

snd_pcm_oss            41824  0

snd_mixer_oss          16896  2 snd_pcm_oss

snd_hda_intel          19680  1

snd_hda_codec         194560  1 snd_hda_intel

snd_pcm                75272  3 snd_pcm_oss,snd_hda_intel,snd_hda_codec

snd_timer              21448  2 snd_seq,snd_pcm

snd                    52904  9 snd_seq_oss,snd_seq_device,snd_seq,snd_pcm_oss,snd_mixer_oss,snd_hda_intel,snd_hda_codec,snd_pcm,snd_timer

snd_page_alloc          9936  2 snd_hda_intel,snd_pcm
```

Any ideas or suggestions?

----------

## jburns

google for alsa nvidia mcp51 gentoo

The works/fails status seems to depend on the laptop model.

----------

## shuuhen

Hmm... with some of the suggestions from one of the sites I managed to get PCM to show up again.  Unfortunately it still is not working correctly.  From what some of the sites said and from what I saw as the device information in alsamixer, it looks like it's not getting recognized correctly.

I know it's possible to get sound working, because I can play music when I boot from my Knoppix flash drive.  The trick seemse to be getting it to be recognized as the correct device.  Maybe I can figure out a little more with the configuration in Knoppix.

----------

## hcintra

According to the Alsa-Project Soundcard Matrix you should be using intel8X0 for driver:

http://www.alsa-project.org/alsa-doc/index.php?vendor=vendor-Nvidia#matrix

I have a nVidia based onboard card (other chipset) working with that driver.

----------

## shuuhen

I tried that for one of the first kernels I tested with no luck.  What chipset do you have?  My Knoppix flash drive loads the snd-hda-intel driver and sound works there.  Seems odd that my sound doesn't even work with the version of ALSA that the Knoppix drive has when I install that in Gentoo.

----------

## Monkeh

 *hcintra wrote:*   

> According to the Alsa-Project Soundcard Matrix you should be using intel8X0 for driver:
> 
> http://www.alsa-project.org/alsa-doc/index.php?vendor=vendor-Nvidia#matrix
> 
> I have a nVidia based onboard card (other chipset) working with that driver.

 

No, you shouldn't.. MCP51 HDA = hda-intel.

What make and model of laptop is this?

----------

## shuuhen

The laptop is a HP Pavilion dv6000 CTO.

----------

## Monkeh

 *shuuhen wrote:*   

> The laptop is a HP Pavilion dv6000 CTO.

 

Hm. Try using an ~arch version of alsa-driver.

----------

## shuuhen

1.0.14_rc3 was a no go.  I also tried to install the latest stable (1.0.14_rc2) and the testing (1.0.14_rc3) alsa from the portage tree with the latest stable vanilla-sources kernel (2.6.20.6).  With the vanilla kernel, alsaconf didn't even detect the soundcard (both versions tested).

----------

## DaggyStyle

got the same card, works perfectly with gentoo-sources-2.6.20-r7, latest stable alsa-driver.

what system are you running?

try the alsa-guide in gentoo.org

dont forget to enable kernel builtin support.

return here if you've still got an problem.

----------

## shuuhen

Still appears to be a no go.  Tried both in kernel and out of kernel versions of alsa.  I'm running a multilib AMD64 install.  I don't seem to be able to get a PCM device to show up in alsamixer.  I get the feeling that I'm missing something simple...

----------

## DaggyStyle

updated to latest unstable alsa, it works well, did you tried the gentoo-sources

----------

## shuuhen

Yep, I'm using the gentoo-sources.  I also tried with vanilla-sources, but the card wasn't even recognized by alsaconf.

----------

## DaggyStyle

did you used the guide? any strange message under dmesg?

----------

## shuuhen

Yep.  I used the guide.

The dmesg did have 

```
ALSA sound/pci/hda/hda_intel.c:695: codec_mask = 0x1

ALSA sound/pci/hda/hda_generic.c:611: AUD_IN = 1a

ALSA sound/pci/hda/hda_generic.c:233: UNMUTE IN: NID=0x1a IDX=0x0

ALSA sound/pci/hda/hda_generic.c:233: UNMUTE IN: NID=0x14 IDX=0x0

ALSA sound/pci/hda/hda_generic.c:648: [Capture Source] NID=0x1a, #SRC=1

ALSA sound/pci/hda/hda_generic.c:651:   [Mic] IDX=0x1

ALSA sound/pci/hda/hda_generic.c:289: AUD_OUT found 19

ALSA sound/pci/hda/hda_generic.c:251: CONNECT: NID=0x10 IDX=0x0

ALSA sound/pci/hda/hda_generic.c:233: UNMUTE IN: NID=0x10 IDX=0x0

ALSA sound/pci/hda/hda_generic.c:217: UNMUTE OUT: NID=0x10

ALSA sound/pci/hda/hda_generic.c:217: UNMUTE OUT: NID=0x10

ALSA sound/pci/hda/hda_generic.c:289: AUD_OUT found 19

ALSA sound/pci/hda/hda_generic.c:251: CONNECT: NID=0x11 IDX=0x0

ALSA sound/pci/hda/hda_generic.c:233: UNMUTE IN: NID=0x11 IDX=0x0

ALSA sound/pci/hda/hda_generic.c:217: UNMUTE OUT: NID=0x11

ALSA sound/pci/hda/hda_generic.c:217: UNMUTE OUT: NID=0x11

ALSA sound/pci/hda/hda_generic.c:251: CONNECT: NID=0x1a IDX=0x1

ALSA sound/pci/hda/hda_generic.c:706: [Capture Switch] NID=0x1a, DIR=IN, IDX=0x1

ALSA sound/pci/hda/hda_generic.c:726: [Capture Volume] NID=0x1a, DIR=IN, IDX=0x1

ALSA sound/pci/hda/hda_generic.c:713: [Speaker Playback Switch] NID=0x10, DIR=OUT

ALSA sound/pci/hda/hda_generic.c:733: [Speaker Playback Volume] NID=0x10, DIR=OUT

ALSA sound/pci/hda/hda_generic.c:713: [Headphone Playback Switch] NID=0x11, DIR=OUT

ALSA sound/pci/hda/hda_generic.c:733: [Headphone Playback Volume] NID=0x11, DIR=OUT

```

----------

## ynema

I have a related problem I have the same chipset and it shows up in alsamixer as HDA NVidia using the HDA-Intel module for alsa-driver but alas no sound

----------

## shuuhen

Anyone have ideas?  If your audio is working, does alsamixer say you have a Conexant chip?

----------

## Shoikan

The issue with the alsa hda-intel driver seems to be that while the (for instance) NVidia chipset is listed as the multimedia pci device, there's actually another chip doing the grunt work. This may be a realtek chip (for instance the ALC880, or ALC882 or 3, etc.) or one of another manufacturer (whoever was cheaper   :Laughing:  ). So, what happens on a driver level is this: hda-intel is the main driver section, but underneath there are several 'subdrivers' at work, depending on what chip is used. When you compile the alsa drivers (either through the kernel included version or the emerged version), the hda-driver is compiled, and a bunch of patches are tossed onto the hda-intel driver that make sure the various sub-drivers are compiled in. When the hda-intel driver is loaded it will try to work out what subdriver will actually be used.

This is where the brown stuff usually hits the proverbial fan (especially if you are using a laptop with a realtek chip). The realtek chip can be connected to just about anything and everything in various dubious or useful ways (depending on the whim of the laptop designer, if he had a good drink, evening with the missus, a fine on the way to work, or whatever   :Rolling Eyes:  ). This means that there are about as many variations in the internal driver 'wiring' as there are laptops out there, each coming with their own 'model' type that you have to give along in the module config.

So, where does this leave you? It leaves you manually loading the hda-intel driver a couple of times, reading the logs to see if the driver seems to succesfully identify what chip you have, and then what model that goes with the chip. Usually id-ing the chip works fine, but it goes wrong with the 'model'. If it does not seem to work, go into the <alsa-driver source root>/alsa-kernel/pci/hda-intel directory and dig through the appropriate <chipvendor>.c file and see what flavors of 'model' it knows and try them out. If you're lucky, you'll get it to work. I am stuck waiting for the developpers to succesfully incorporate my model of ALC882 still   :Crying or Very sad: 

----------

## krlloyd

I am having the same difficulties as you with this chipset.  I am not sure what driver i should be using. I tried the snd-hda-intel and the snd-intel8x0 driver. When i run alsamixer i cannot adjust the headset volume and i get no sounds.  This happens with both drivers. alsaconf reports:

```

hda-intel      nVidia Corporation MCP61 High Definition Audio (rev a2)

```

When i try to use that card, alsaconf wants to load the snd-hda-intel driver. I let it load that driver and i also manually changed the alsa file to use the snd-intel8x0 file.  Either way, i get no sound and the alsamixer is all fudged up.  I can adjust PCM, Front Mic, Line, CD. But Center, LFE, Side, IEC958 are set at 00 and i cannot change them. 

System Information:

AMD64 X2 3600+

2GB Ram

MotherBoard:   Mach Speed Venom MSA2-6100V NVIDIA Socket AM2 MicroATX Motherboard 

Audio Chipset: Realtek ALC861

OS: gentoo-2.6.20-r8 amd64

dmesg:

```

Freeing unused kernel memory: 308k freed

nvidia: module license 'NVIDIA' taints kernel.

ACPI: PCI Interrupt Link [AIGP] enabled at IRQ 23

ACPI: PCI Interrupt 0000:00:0d.0[A] -> Link [AIGP] -> GSI 23 (level, low) -> IR$

PCI: Setting latency timer of device 0000:00:0d.0 to 64

NVRM: loading NVIDIA Linux x86_64 Kernel Module  1.0-8776  Mon Oct 16 21:53:43 $

ACPI: PCI Interrupt Link [AAZA] enabled at IRQ 22

ACPI: PCI Interrupt 0000:00:05.0[B] -> Link [AAZA] -> GSI 22 (level, low) -> IR$

PCI: Setting latency timer of device 0000:00:05.0 to 64

hda_codec: Unknown model for ALC861, trying auto-probe from BIOS...

EXT3 FS on sda3, internal journal

Adding 2008116k swap on /dev/sda2.  Priority:-1 extents:1 across:2008116k

eth0: no IPv6 routers present

eth0: no IPv6 routers present

eth0: no IPv6 routers present

ACPI: PCI Interrupt 0000:00:05.0[B] -> Link [AAZA] -> GSI 22 (level, low) -> IR$

PCI: Setting latency timer of device 0000:00:05.0 to 64

hda_codec: Unknown model for ALC861, trying auto-probe from BIOS...

```

/etc/modules.d/alsa:

```

 cat alsa

# Alsa kernel modules' configuration file.

# ALSA portion

# OSS/Free portion

##

## IMPORTANT:

## You need to customise this section for your specific sound card(s)

## and then run `update-modules' command.

## Read alsa-driver's INSTALL file in /usr/share/doc for more info.

##

##  ALSA portion

## alias snd-card-0 snd-interwave

## alias snd-card-1 snd-ens1371

##  OSS/Free portion

## alias sound-slot-0 snd-card-0

## alias sound-slot-1 snd-card-1

##

# OSS/Free portion - card #1

##  OSS/Free portion - card #2

## alias sound-service-1-0 snd-mixer-oss

## alias sound-service-1-3 snd-pcm-oss

## alias sound-service-1-12 snd-pcm-oss

alias /dev/mixer snd-mixer-oss

alias /dev/dsp snd-pcm-oss

alias /dev/midi snd-seq-oss

# Set this to the correct number of cards.

# --- BEGIN: Generated by ALSACONF, do not edit. ---

# --- ALSACONF version 1.0.14rc2 ---

alias snd-card-0 snd-intel8x0

alias sound-slot-0 snd-intel8x0

# --- END: Generated by ALSACONF, do not edit. ---

```

----------

