Bug 23162

Summary: ALSA no longer detects digital microphone on snd_hda_intel
Product: Drivers Reporter: rocko (rockorequin)
Component: Sound(ALSA)Assignee: Takashi Iwai (tiwai)
Status: CLOSED CODE_FIX    
Severity: normal CC: alexandre.f.demers, rjw
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 2.6.37-rc2 Subsystem:
Regression: Yes Bisected commit-id:
Bug Depends on:    
Bug Blocks: 21782    
Attachments: alsa-info.sh output on 2.6.37-rc2
alsa-info.sh output on 2.6.36

Description rocko 2010-11-18 05:27:47 UTC
Created attachment 37382 [details]
alsa-info.sh output on 2.6.37-rc2

I'm running Ubuntu 10.10 on a Dell XPS 1530 with an HDA Intel sound card. Kernel 2.6.36 supplies microphones Digital, Mic, and Front Mic to alsamixer. Selecting Digital on the leftmost input source on the capture tab allows recording from the PC's built-in microphone. This corresponds to selecting Microphone 1 in gnome-volume-control.

However, kernel 2.6.37-rc2 supplies only Mic and Internal to alsamixer, neither of which is the internal microphone. So it is no longer possible to record using 2.6.37-rc2.

One difference that stands out in the alsa-info logs is that amixer and alsactl detect the input sources with different item properties/names (full logs attached separately):

2.6.37-rc2:

Simple mixer control 'Input Source',0
  Capabilities: cenum
  Items: 'Internal Mic' 'Mic' 'Internal Mic 1'
  Item0: 'Internal Mic'
Simple mixer control 'Input Source',1
  Capabilities: cenum
  Items: 'Internal Mic' 'Mic' 'Internal Mic 1'
  Item0: 'Mic'
Simple mixer control 'Input Source',2
  Capabilities: cenum
  Items: 'Internal Mic' 'Mic' 'Internal Mic 1'
  Item0: 'Mic'

2.6.36:

Simple mixer control 'Input Source',0
  Capabilities: cenum
  Items: 'Mic' 'Front Mic' 'Digital Mic'
  Item0: 'Digital Mic'
Simple mixer control 'Input Source',1
  Capabilities: cenum
  Items: 'Mic' 'Front Mic' 'Digital Mic'
  Item0: 'Mic'
Simple mixer control 'Input Source',2
  Capabilities: cenum
  Items: 'Mic' 'Front Mic' 'Digital Mic'
  Item0: 'Mic'
Comment 1 rocko 2010-11-18 05:29:32 UTC
Created attachment 37392 [details]
alsa-info.sh output on 2.6.36
Comment 2 rocko 2010-11-20 05:22:56 UTC
A slight correction: alsamixer shows three, not two, microphones, ie "Internal Mic", "Mic", and "Internal Mic 1", but truncates the name so the two internal mics appear to be the same. Nevertheless, none of the inputs allow recording to work.

I noticed that in 2.6.36, patch_sigmatel.c#stac92xx_auto_create_dmic_input_ctls forces the label for the digital mic to "Digital Mic" if there is only one, or chooses "Digital Mic 1", etc if there are more. I wonder why the new code does not include digital in the label for digital mics? hda_codec.c#hda_get_input_pin_label only offers the choice of "Internal Mic", "Dock Mic", "Mic", "Front Mic" and "Rear Mic".

Out of interest, I forced stac92xx_auto_create_dmic_input_ctls to set the label to "Digital Mic" and got a third microphone option in gnome-volume-control (which is evidently confusing "Internal Mic" and "Internal Mic 1" and thinking they are the same). Of course, recording is still not possible even if I choose "Digital Mic" as the input in alsamixer since all I've done is change the label.
Comment 3 rocko 2010-11-22 07:03:31 UTC
The bug is still present in 2.6.37-rc3.
Comment 4 Takashi Iwai 2010-11-24 05:13:37 UTC
Sorry for the late response, as I've been on vacation for weeks.  (I tried to update yesterday, but bugzilla was broken.)

This is a regression introduced by the commit f41cc2a85d52ac6971299922084ac5ac59dc339d.
I already reverted and now it landed to Linus tree.  So rc4 should work.

Regarding the rename of Digital Mic: it was renamed for improving the usability with PulseAudio & co.  "Digital" doesn't give you much useful information since it can be both built-in and external mics, and it indicates nothing but the internal connection type.
Comment 5 rocko 2010-11-24 06:22:24 UTC
Thanks, I look forward to rc4.

Unfortunately, not including 'Digital' in the name breaks pulseaudio/gnome-volume-manager because it thinks 'Internal Mic' and 'Internal Mic #1' are the same mic, and doesn't let you select the correct one! I'd better log a bug against pulseaudio.
Comment 6 Alexandre Demers 2011-02-09 15:24:08 UTC
The bug says "closed code_fix". I think a part of the problem is still present with 2.6.38-rc4. The reporter pointed two problems in his bug report, but only one was fixed by reverting f41cc2a85d52ac6971299922084ac5ac59dc339d. The first problem was the mux. However, the second explaining that different devices are being seen as the same device is not addressed by reverting the commit, which is the problem still present under 2.6.38-rc4.

Is it supposed to be fixed also or is it solved outside of the kernel?
Comment 7 rocko 2011-02-09 16:06:04 UTC
It should be an external fix. I reported the second problem here: https://bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/680810.

If you're using pulseaudio, you should be able to apply the fix to pulseaudio's (text) configuration file - see comment #4 (https://bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/680810/comments/4).