raisama.netWhen 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 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. :)
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 !
J.
Do you remember what unsupported codec that was? I’m considering implementing a patch for it if specs are available.
[…] It is worth noting that my previous work with HDA fixing the 5.1 sound output of a couple of HP machines and the LG LW20 was made much easier with this very nice tool called codecgraph, which takes /proc/asound/cardX/codec#Y as input and generates a neat-looking graph using graphviz in such a way that you can see how mixers, amplifiers and pins are connected and visually follow the signal flow inside your HDA setup. I’ve even added some stuff to it — mostly new codec samples and other ancillary work since I’m illiterate in Python (yes, I know, I’ve tried but I just can’t like the language). You can clone my repository with git clone http://helllabs.org/git/codecgraph.git, or get the official tree from Boto’s repository. Codec sample contributions are welcome! […]