28 Nov 2006 boto   » (Journeyer)

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 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 http://git.raisama.net/hda-tools.git.

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. :)

Syndicated 2006-11-28 17:47:44 from Eduardo Habkost / diary

Latest blog entries     Older blog entries

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!