After a few weeks of fruitless effort, I managed to get sound working today. I thought I would pass on the experience.
Machine: Ubuntu Hardy, AMD64, Gigabyte GA-MA78GM-S2H equipped with a RealTek ALC889A codec. As far as I can tell, I am running a vanilla gnome ALSA setup.
Problem: couldn't get microphone input to work at all, making skype and ekiga use somewhat problematic. In addition, the front panel headphone jack didn't work.
Debugging: ALSA detected my codec as an ALC885. I found several posts that indicated that it would work better as an ALC883. I downloaded the ALSA drivers from realtek (http://www.realtek.com.tw/Downloads/...&GetDown=false). According to the code, the 889A is detected and set to be an ALC882. There is a note in the code that the ALC883 might be a better choice. I compiled and installed this code, but nothing changed. The codec was still thought to be an 885. I installed these drivers, and nothing changed. My codec was still an 885.
Further analysis showed that my 889A has a revision number of 0x100101, where the ALSA driver (alsa-kernel/pci/hda/patch_realtek.c) expects a rev of 0x100103. Apparently there is more than one 889A in the wild.
Steps to fix this problem:
1. Extracted the alsa drivers archive from the realtek tarball.
2. Modified patch_realtek to recognize the 889A with rev 0x100101. I made changes in two places (the lookup table and in patch_alc885), but I think that the lookup table change is enough.
3. Modified the install script supplied in the realtek archive to put the kernel driver modules in the right place (ubuntu/sound/alsa-driver instead of kernel/sound).
4. Modified the install script not to re-extract the alsa drivers tarball and not to delete the alsa drivers directory hierarchy when finished, avoiding the loss my precious changes.
5. Modified the install script to also include USB audio (I have a headset).
6. Ran install. I added the necessary development packages until everything compiled. (I don't remember which ones, sorry.)
Voila. head /proc/asound/card0/codec#0 now produces
Codec: Realtek ALC889A
Vendor Id: 0x10ec0885
Subsystem Id: 0x1458a002
Revision Id: 0x100101
New situation: using 'patch_alc883', my front panel jacks and microphone input work. Sound recorder, skype, and Ekiga all work.
Note: From strings in the kernel alsa drivers, I think that the official ALSA source has (not working) ALC889A changes in it, but I haven't checked.