Playing with HDA Intel codecs

When debugging a problem with the snd-hda-intel module on a machine that has an unsupported codec model, I’ve spent some time studying the Intel HDA specification, and noticed that we can get very interesting information from the hardware. You can do many interesting things even if the driver never saw an specific model of the audio codec, because the HDA architecture allows you to ask lots of information and control many aspects of the codecs.

I’ve written a small script that generate a graphviz graph from the information on /proc/asound/card\*/codec#\*. I’ve generated the graph for a bunch of different machines that have HDA Intel. They are interesting to see if you want to know what the hardware you have can do, and to find out the correct NID and commands supposed to be used by the alsa drivers. Here they are:

A Realtek ALC660 on an Asus W5F notebook

A Realtek ALC861 codec, found somewhere on the web

A SigmaTel STAC9200 on a Dell Latitude 120L notebook

A Realtek ALC880 on a LG LW20 Express notebook

A SigmaTel STAC9200 on a Dell Latitude D-something notebook

A Realtek ALC86x on a HP DX2200 machine

The script is on a GIT repository. You can clone it with:
git clone

What I would really like to see in the end is the ability to change the way the nodes are associated to alsa streams and mixers from user-space. Then this could be configurable using a GUI where the user would change the input connection settings and associate nodes with mixers and streams, while seeing the graph. Then instead of waiting somebody to change the Alsa driver to do what you want regarding the mixer and streams, you could simply change the codec settings on a GUI and everybody would be happy. :)

3 thoughts on “Playing with HDA Intel codecs

  1. This is super cool!, even if I almost understand nothing ;)

    In the end you’re proposing something very flexible I hope someone helps to materialize. I like something like that for the SoundBlaster.

    Cheers !


  2. Pingback: Hell Labs » HDA codec graphing

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>