This sound device does not have any controls

I have no sound, on my recent gentoo install.

LXQT Mixer wouldn't open. I don't even get any error/warning messages. This is not good.

So I try alsamixer.

$ alsamixer
...
This sound device does not have any controls.

This is not good either, but better than nothing. We now have something to work with.

It seems I have a sound device, but alsa can not connect to any controls.

We need to check all the controllers.

$ lspci | grep -i audio
00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio Controller (rev 03)
$ lspci -knnv -s 00:1b.0
00:1b.0 Audio device [0403]: Intel Corporation 82801I (ICH9 Family) HD Audio Controller [8086:293e] (rev 03)
        Subsystem: Toshiba America Info Systems 82801I (ICH9 Family) HD Audio Controller [1179:ff1e]
        Flags: bus master, fast devsel, latency 0, IRQ 22
        Memory at d6900000 (64-bit, non-prefetchable) [size=16K]
        Capabilities: 
        Kernel driver in use: snd_hda_intel
        Kernel modules: snd_hda_intel

$ lsmod | grep snd
snd_hda_codec_hdmi     32710  1
snd_hda_intel          15445  1
snd_hda_controller     15342  1 snd_hda_intel
snd_hda_codec          59032  3 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_controller
snd_hda_core           16671  3 snd_hda_codec_hdmi,snd_hda_codec,snd_hda_controller
snd_pcm                59428  4 snd_hda_codec_hdmi,snd_hda_codec,snd_hda_intel,snd_hda_controller
snd_timer              14813  1 snd_pcm
snd                    38556  7 snd_timer,snd_hda_codec_hdmi,snd_pcm,snd_hda_codec,snd_hda_intel
soundcore                656  1 snd

This looks good. It seems like the drivers have been detected, and modules loaded correctly.

What about the sound codecs?

$ lsmod | grep codec
snd_hda_codec_hdmi     32710  1
snd_hda_codec          59032  3 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_controller
snd_hda_core           16671  3 snd_hda_codec_hdmi,snd_hda_codec,snd_hda_controller
snd_pcm                59428  4 snd_hda_codec_hdmi,snd_hda_codec,snd_hda_intel,snd_hda_controller
snd                    38556  7 snd_timer,snd_hda_codec_hdmi,snd_pcm,snd_hda_codec,snd_hda_intel

It looks like the hda codecs have been loaded. But are they the right ones?

$ cat /proc/asound/card*/codec* | grep -i codec
Codec: Realtek ID 268
Codec: Motorola ID 3055

This sound card has two codes, as detected above. And they are..

Aha, we found the problem. Intel HDA Audio doesn't want Intel HDA Codecs. The required HDA Codecs are Realtek and Motorola.. hmm??

$ /sbin/modprobe -c | grep -i realtek
nothing!

$ /sbin/modprobe -c | grep -i motorola
nothing!

Hmm.. my kernel config may be suspect. We need to check.

$ cat /boot/config-`uname -r` | grep -i "codec.*realtek"
# CONFIG_SND_HDA_CODEC_REALTEK is not set

Our required RealTek codec is unset. It has not been compiled.

We need to select SND_HDA_CODEC_REALTEK, and rebuild kernel.

What about Motorola codec?

$ cat /boot/config-`uname -r` | grep -i "codec.*motorola"
nothing!

The kernel doesn't even know about the Motorola codec. I guess, there is nothing much we can do here.

Let's hope the RealTek codec might be sufficient for now.. We may be able to ignore the Motorola codec.

So, we config & rebuild our gentoo kernel..
ref: Gentoo Kernel compile

$ cd /usr/src/linux
$ make nconfig

> Device Drivers > Sound card support > Advanced Linux Sound Architecture > HD-Audio > SND_HDA_CODEC_REALTEK

Now we compile + install our kernel, modules and initramfs.

ref: gentoo kernel compile

# make && make modules_install && make install
# genkernel --install --no-ramdisk-modules --disklabel initramfs

Verify the new kernel & initramfs are in /boot.

$ ls -lh /boot/
yes!

Depending on your bootloader, you may need to regenerate (grub2) or reinstall (lilo). Check, and reboot.

System boots up.. I login and check sound. Yes, it works!

Now we can enjoy that sweet sound :)

No comments:

Post a Comment

most viewed