Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Re: Microphone not working on PCI ID 8086:3b56

30 views
Skip to first unread message

Takashi Iwai

unread,
Sep 30, 2010, 9:20:02 AM9/30/10
to
At Thu, 30 Sep 2010 21:11:07 +0800 (SGT),
Jeff Chua wrote:
>
>
>
> On Tue, Sep 28, 2010 at 9:42 PM, Takashi Iwai <ti...@suse.de> wrote:
> > Enable all CONFIG_SND_HDA_*.
>
> Done that. Still no mic.
>
>
> On Tue, Sep 28, 2010 at 9:42 PM, Wu Fengguang <fenggu...@intel.com>
> wrote:
> > It's easier to enable all of them. They are small modules.
>
> Tried just about everything, still no mic. Sounds works in all cases.

Check /sys/modules/snd_hda_intel/parameters/model whether you really
passed the correct value.

> I found that with SND_HDA_CODEC_INTELHDMI selected, SND_DYNAMIC_MINORS
> will be enabled by default which won't work in my case as I'm not using
> udev. Here's a patch to take away the default so non-udev will still
> works.

Wow, what's a conservative system :)

> Do I really need udev to get mic to work?

No, in your case, simply disable CONFIG_SND_CODEC_INTELHDMI.


Takashi

> Thanks,
> Jeff
>
>
>
>
> --- lx/sound/pci/hda/Kconfig.org 2010-09-14 16:34:52.000000000 +0800
> +++ lx/sound/pci/hda/Kconfig 2010-09-14 16:35:09.000000000 +0800
> @@ -145,7 +145,6 @@
>
> config SND_HDA_CODEC_INTELHDMI
> bool "Build INTEL HDMI HD-audio codec support"
> - select SND_DYNAMIC_MINORS
> default y
> help
> Say Y here to include INTEL HDMI HD-audio codec support in
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majo...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

Jeff Chua

unread,
Sep 30, 2010, 9:20:02 AM9/30/10
to

On Tue, Sep 28, 2010 at 9:42 PM, Takashi Iwai <ti...@suse.de> wrote:
> Enable all CONFIG_SND_HDA_*.

Done that. Still no mic.


On Tue, Sep 28, 2010 at 9:42 PM, Wu Fengguang <fenggu...@intel.com>
wrote:
> It's easier to enable all of them. They are small modules.

Tried just about everything, still no mic. Sounds works in all cases.

I found that with SND_HDA_CODEC_INTELHDMI selected, SND_DYNAMIC_MINORS
will be enabled by default which won't work in my case as I'm not using
udev. Here's a patch to take away the default so non-udev will still
works.

Do I really need udev to get mic to work?

Thanks,

Wu Fengguang

unread,
Sep 30, 2010, 9:40:02 AM9/30/10
to
On Thu, Sep 30, 2010 at 09:11:07PM +0800, Jeff Chua wrote:
>
>
> On Tue, Sep 28, 2010 at 9:42 PM, Takashi Iwai <ti...@suse.de> wrote:
> > Enable all CONFIG_SND_HDA_*.
>
> Done that. Still no mic.
>
>
> On Tue, Sep 28, 2010 at 9:42 PM, Wu Fengguang <fenggu...@intel.com>
> wrote:
> > It's easier to enable all of them. They are small modules.
>
> Tried just about everything, still no mic. Sounds works in all cases.
>
>
> I found that with SND_HDA_CODEC_INTELHDMI selected, SND_DYNAMIC_MINORS
> will be enabled by default which won't work in my case as I'm not using
> udev. Here's a patch to take away the default so non-udev will still
> works.

Intel HDMI audio selects SND_DYNAMIC_MINORS because it runs out of the
static minor numbers. I initially proposed an extended static
allocation scheme here:
http://comments.gmane.org/gmane.linux.alsa.devel/72916 however the
idea was rejected.

> Do I really need udev to get mic to work?

You can disable SND_HDA_CODEC_INTELHDMI for now. You don't need it.

Thanks,
Fengguang

Jeff Chua

unread,
Sep 30, 2010, 11:40:02 AM9/30/10
to
On Thu, Sep 30, 2010 at 9:14 PM, Takashi Iwai <ti...@suse.de> wrote:

> Check /sys/modules/snd_hda_intel/parameters/model whether you really
> passed the correct value.

# cat /sys/module/snd_hda_intel/parameters/model
lenovo-x200,(null),(null),(null),(null),(null),(null),(null)

>> in my case as I'm not using udev. Here's a patch to take away the default so non-udev will still
>> works.
>
> Wow, what's a conservative system :)

Keeping things simple :) and my / root filesystem is mounted read-only.

Thanks,
Jeff

Wu Fengguang

unread,
Sep 30, 2010, 11:40:02 AM9/30/10
to
On Thu, Sep 30, 2010 at 11:29:45PM +0800, Jeff Chua wrote:
> On Thu, Sep 30, 2010 at 9:14 PM, Takashi Iwai <ti...@suse.de> wrote:
>
> > Check /sys/modules/snd_hda_intel/parameters/model whether you really
> > passed the correct value.
>
> # cat /sys/module/snd_hda_intel/parameters/model
> lenovo-x200,(null),(null),(null),(null),(null),(null),(null)

Would you run http://www.alsa-project.org/alsa-info.sh and show us the
collected info?

> >> in my case as I'm not using udev. Here's a patch to take away the default so non-udev will still
> >> works.
> >
> > Wow, what's a conservative system :)
>
> Keeping things simple :) and my / root filesystem is mounted read-only.

Sounds more like "sophisticated immune" than "simple" :)

Thanks,
Fengguang

Takashi Iwai

unread,
Sep 30, 2010, 11:40:02 AM9/30/10
to
At Thu, 30 Sep 2010 23:29:45 +0800,

Jeff Chua wrote:
>
> On Thu, Sep 30, 2010 at 9:14 PM, Takashi Iwai <ti...@suse.de> wrote:
>
> > Check /sys/modules/snd_hda_intel/parameters/model whether you really
> > passed the correct value.
>
> # cat /sys/module/snd_hda_intel/parameters/model
> lenovo-x200,(null),(null),(null),(null),(null),(null),(null)

OK, and did you get the corresponding kernel message?

> >> in my case as I'm not using udev. Here's a patch to take away the default so non-udev will still
> >> works.
> >
> > Wow, what's a conservative system :)
>
> Keeping things simple :) and my / root filesystem is mounted read-only.

Nowadays /dev is mostly tmpfs or its variant.


Takashi

Jeff Chua

unread,
Sep 30, 2010, 11:40:02 AM9/30/10
to
On Thu, Sep 30, 2010 at 9:29 PM, Wu Fengguang <fenggu...@intel.com> wrote:

> Intel HDMI audio selects SND_DYNAMIC_MINORS because it runs out of the
> static minor numbers. I initially proposed an extended static
> allocation scheme here:
> http://comments.gmane.org/gmane.linux.alsa.devel/72916 however the
> idea was rejected.
>
>> Do I really need udev to get mic to work?
>
> You can disable SND_HDA_CODEC_INTELHDMI for now. You don't need it.

Does not make sense to force everyone to use udev. Any chance to make
it work without udev?

Thanks,
Jeff

Takashi Iwai

unread,
Sep 30, 2010, 11:50:02 AM9/30/10
to
At Thu, 30 Sep 2010 23:34:44 +0800,

Jeff Chua wrote:
>
> On Thu, Sep 30, 2010 at 9:29 PM, Wu Fengguang <fenggu...@intel.com> wrote:
>
> > Intel HDMI audio selects SND_DYNAMIC_MINORS because it runs out of the
> > static minor numbers. I initially proposed an extended static
> > allocation scheme here:
> > http://comments.gmane.org/gmane.linux.alsa.devel/72916 however the
> > idea was rejected.
> >
> >> Do I really need udev to get mic to work?
> >
> > You can disable SND_HDA_CODEC_INTELHDMI for now. You don't need it.
>
> Does not make sense to force everyone to use udev.

Otherwise you can't handle enough PCM devices.

> Any chance to make it work without udev?

The minor numbers are almost static as long as you don't change the
configuration. So, you can recreate /dev/snd/* files appropriately,
if needed. Or just simply patch as you did :)


Takashi

Wu Fengguang

unread,
Sep 30, 2010, 11:50:02 AM9/30/10
to
On Thu, Sep 30, 2010 at 11:39:40PM +0800, Takashi Iwai wrote:
> At Thu, 30 Sep 2010 23:29:45 +0800,
> Jeff Chua wrote:
> >
> > On Thu, Sep 30, 2010 at 9:14 PM, Takashi Iwai <ti...@suse.de> wrote:
> >
> > > Check /sys/modules/snd_hda_intel/parameters/model whether you really
> > > passed the correct value.
> >
> > # cat /sys/module/snd_hda_intel/parameters/model
> > lenovo-x200,(null),(null),(null),(null),(null),(null),(null)
>
> OK, and did you get the corresponding kernel message?

As a kindly reminder, these verbose options are pretty useful:

CONFIG_SND_VERBOSE_PROCFS=y
CONFIG_SND_VERBOSE_PRINTK=y
CONFIG_SND_DEBUG=y
CONFIG_SND_DEBUG_VERBOSE=y

Thanks,
Fengguang

Jeff Chua

unread,
Sep 30, 2010, 1:40:02 PM9/30/10
to
On Thu, Sep 30, 2010 at 11:39 PM, Takashi Iwai <ti...@suse.de> wrote:

>> # cat /sys/module/snd_hda_intel/parameters/model
>> lenovo-x200,(null),(null),(null),(null),(null),(null),(null)
>
> OK, and did you get the corresponding kernel message?

HDA Intel 0000:00:1b.0: PCI INT B -> GSI 17 (level, low) -> IRQ 17
HDA Intel 0000:00:1b.0: irq 45 for MSI/MSI-X
HDA Intel 0000:00:1b.0: setting latency timer to 64
ALSA device list:
#0: HDA Intel at 0xf2520000 irq 45


Thanks,
Jeff.

Wu Fengguang

unread,
Sep 30, 2010, 10:20:01 PM9/30/10
to
On Fri, Oct 01, 2010 at 02:08:09AM +0800, Jeff Chua wrote:

> On Thu, Sep 30, 2010 at 11:45 PM, Wu Fengguang <fenggu...@intel.com> wrote:
>
> > As a kindly reminder, these verbose options are pretty useful:
> >
> > CONFIG_SND_VERBOSE_PROCFS=y
> > CONFIG_SND_VERBOSE_PRINTK=y
> > CONFIG_SND_DEBUG=y
> > CONFIG_SND_DEBUG_VERBOSE=y
>
> Attached alsa log and dmesg with above enabled.

Jeff, this should make your mic work.

Thanks,
Fengguang

diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
index a6c68cb..c0c2b33 100644
--- a/sound/pci/hda/patch_conexant.c
+++ b/sound/pci/hda/patch_conexant.c
@@ -3110,6 +3110,7 @@ static struct snd_pci_quirk cxt5066_cfg_tbl[] = {
SND_PCI_QUIRK(0x17aa, 0x21b2, "Thinkpad X100e", CXT5066_IDEAPAD),
SND_PCI_QUIRK(0x17aa, 0x21b3, "Thinkpad Edge 13 (197)", CXT5066_IDEAPAD),
SND_PCI_QUIRK(0x17aa, 0x21b4, "Thinkpad Edge", CXT5066_IDEAPAD),
+ SND_PCI_QUIRK(0x17aa, 0x2156, "Lenovo X201s", CXT5066_THINKPAD),
SND_PCI_QUIRK(0x17aa, 0x215e, "Lenovo Thinkpad", CXT5066_THINKPAD),
SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo G series", CXT5066_IDEAPAD),
SND_PCI_QUIRK(0x17aa, 0x390a, "Lenovo S10-3t", CXT5066_IDEAPAD),

Takashi Iwai

unread,
Oct 1, 2010, 6:20:01 AM10/1/10
to
At Fri, 1 Oct 2010 18:15:32 +0800,
Jeff Chua wrote:

>
> On Fri, Oct 1, 2010 at 10:15 AM, Wu Fengguang <fenggu...@intel.com> wrote:
>
> > Jeff, this should make your mic work.
> >
> > diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
> > index a6c68cb..c0c2b33 100644
> > --- a/sound/pci/hda/patch_conexant.c
> > +++ b/sound/pci/hda/patch_conexant.c
> > @@ -3110,6 +3110,7 @@ static struct snd_pci_quirk cxt5066_cfg_tbl[] = {
> >        SND_PCI_QUIRK(0x17aa, 0x21b2, "Thinkpad X100e", CXT5066_IDEAPAD),
> >        SND_PCI_QUIRK(0x17aa, 0x21b3, "Thinkpad Edge 13 (197)", CXT5066_IDEAPAD),
> >        SND_PCI_QUIRK(0x17aa, 0x21b4, "Thinkpad Edge", CXT5066_IDEAPAD),
> > +       SND_PCI_QUIRK(0x17aa, 0x2156, "Lenovo X201s", CXT5066_THINKPAD),
> >        SND_PCI_QUIRK(0x17aa, 0x215e, "Lenovo Thinkpad", CXT5066_THINKPAD),
> >        SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo G series", CXT5066_IDEAPAD),
> >        SND_PCI_QUIRK(0x17aa, 0x390a, "Lenovo S10-3t", CXT5066_IDEAPAD),
>
>
> Getting closer, but mic still not working.

Jeff, give always alsa-info.sh output when you want someone else
looking into your HD-audio problem. Without it, it's very hard to
follow what is wrong.

> HDA Intel 0000:00:1b.0: PCI INT B -> GSI 17 (level, low) -> IRQ 17

> HDA Intel 0000:00:1b.0: irq 42 for MSI/MSI-X


> HDA Intel 0000:00:1b.0: setting latency timer to 64

> ALSA sound/pci/hda/hda_intel.c:2518: chipset global capabilities = 0x4401
> ALSA sound/pci/hda/hda_intel.c:908: codec_mask = 0x9
> ALSA sound/pci/hda/hda_intel.c:1346: codec #0 probed OK
> ALSA sound/pci/hda/hda_intel.c:1346: codec #3 probed OK
> ALSA sound/pci/hda/hda_codec.c:3720: hda_codec: model 'thinkpad' is
> selected for config 17aa:215e (Lenovo Thinkpad)
> ALSA sound/pci/hda/hda_generic.c:683: hda_generic: no proper input path found
> ALSA sound/pci/hda/hda_generic.c:288: Skip Digital OUT node 2
> ALSA sound/pci/hda/hda_generic.c:288: Skip Digital OUT node 3
> ALSA sound/pci/hda/hda_generic.c:431: hda_generic: no proper output path found
> ALSA sound/pci/hda/hda_generic.c:1036: hda_generic: no PCM found
> ALSA sound/pci/hda/patch_conexant.c:3032: CXT5066: init
> ALSA sound/pci/hda/patch_conexant.c:2374: CXT5066: hp automute portA=0
> portD=0 present=0
> ALSA sound/pci/hda/patch_conexant.c:2110: CXT5066: update speaker, hp_present=0
> ALSA sound/pci/hda/patch_conexant.c:2354: CXT5066: external microphone absent
> ALSA device list:
> #0: HDA Intel at 0xf2520000 irq 42
>
> ALSA sound/pci/hda/patch_conexant.c:2110: CXT5066: update speaker, hp_present=0
> ALSA sound/pci/hda/patch_conexant.c:3032: CXT5066: init
> ALSA sound/pci/hda/patch_conexant.c:2374: CXT5066: hp automute portA=0
> portD=0 present=0
> ALSA sound/pci/hda/patch_conexant.c:2110: CXT5066: update speaker, hp_present=0
> ALSA sound/pci/hda/patch_conexant.c:2354: CXT5066: external microphone absent
> ALSA sound/pci/hda/hda_intel.c:1670: azx_pcm_prepare: bufsize=0x10000,
> format=0x11
> ALSA sound/pci/hda/hda_codec.c:1226: hda_codec_setup_stream: NID=0x10,
> stream=0x5, channel=0, format=0x11
> ALSA sound/pci/hda/hda_codec.c:1284: hda_codec_cleanup_stream: NID=0x10
> ALSA sound/pci/hda/hda_codec.c:1284: hda_codec_cleanup_stream: NID=0x10
> ALSA sound/pci/hda/hda_intel.c:1670: azx_pcm_prepare: bufsize=0x10000,
> format=0x11
> ALSA sound/pci/hda/hda_codec.c:1226: hda_codec_setup_stream: NID=0x10,
> stream=0x5, channel=0, format=0x11
> ALSA sound/pci/hda/hda_codec.c:1284: hda_codec_cleanup_stream: NID=0x10
> ALSA sound/pci/hda/hda_codec.c:1284: hda_codec_cleanup_stream: NID=0x10
> ALSA sound/pci/hda/patch_conexant.c:3032: CXT5066: init
> ALSA sound/pci/hda/patch_conexant.c:2374: CXT5066: hp automute portA=0
> portD=0 present=0
> ALSA sound/pci/hda/patch_conexant.c:2110: CXT5066: update speaker, hp_present=0
> ALSA sound/pci/hda/patch_conexant.c:2354: CXT5066: external microphone absent
> ALSA sound/pci/hda/patch_conexant.c:3032: CXT5066: init
> ALSA sound/pci/hda/patch_conexant.c:2374: CXT5066: hp automute portA=1
> portD=0 present=1
> ALSA sound/pci/hda/patch_conexant.c:2110: CXT5066: update speaker, hp_present=1
> ALSA sound/pci/hda/patch_conexant.c:2348: CXT5066: external microphone detected
> ALSA sound/pci/hda/hda_intel.c:1670: azx_pcm_prepare: bufsize=0x10000,
> format=0x31
> ALSA sound/pci/hda/hda_codec.c:1226: hda_codec_setup_stream: NID=0x14,
> stream=0x1, channel=0, format=0x31
> ALSA sound/pci/hda/hda_intel.c:701: azx_get_response timeout, polling
> the codec once: last cmd=0x014a0000
> ALSA sound/pci/hda/hda_codec.c:1284: hda_codec_cleanup_stream: NID=0x14
> ALSA sound/pci/hda/hda_intel.c:1670: azx_pcm_prepare: bufsize=0x10000,
> format=0x31
> ALSA sound/pci/hda/hda_codec.c:1226: hda_codec_setup_stream: NID=0x10,
> stream=0x5, channel=0, format=0x31
> ALSA sound/pci/hda/hda_codec.c:1284: hda_codec_cleanup_stream: NID=0x10
> ALSA sound/pci/hda/patch_conexant.c:3032: CXT5066: init
> ALSA sound/pci/hda/patch_conexant.c:2374: CXT5066: hp automute portA=1
> portD=0 present=1
> ALSA sound/pci/hda/patch_conexant.c:2110: CXT5066: update speaker, hp_present=1
> ALSA sound/pci/hda/patch_conexant.c:2348: CXT5066: external microphone detected
> ALSA sound/pci/hda/patch_conexant.c:2110: CXT5066: update speaker, hp_present=1
> ALSA sound/pci/hda/patch_conexant.c:3032: CXT5066: init
> ALSA sound/pci/hda/patch_conexant.c:2374: CXT5066: hp automute portA=1
> portD=0 present=1
> ALSA sound/pci/hda/patch_conexant.c:2110: CXT5066: update speaker, hp_present=1
> ALSA sound/pci/hda/patch_conexant.c:2348: CXT5066: external microphone detected
> ALSA sound/pci/hda/patch_conexant.c:2110: CXT5066: update speaker, hp_present=1
> ALSA sound/pci/hda/patch_conexant.c:3032: CXT5066: init
> ALSA sound/pci/hda/patch_conexant.c:2374: CXT5066: hp automute portA=1
> portD=0 present=1
> ALSA sound/pci/hda/patch_conexant.c:2110: CXT5066: update speaker, hp_present=1
> ALSA sound/pci/hda/patch_conexant.c:2348: CXT5066: external microphone detected

So, the mic is detected. I guess you didn't set up the capture mixer
and else properly.


Takashi

Jeff Chua

unread,
Oct 1, 2010, 6:20:01 AM10/1/10
to
On Fri, Oct 1, 2010 at 10:15 AM, Wu Fengguang <fenggu...@intel.com> wrote:

> Jeff, this should make your mic work.
>

> diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
> index a6c68cb..c0c2b33 100644
> --- a/sound/pci/hda/patch_conexant.c
> +++ b/sound/pci/hda/patch_conexant.c
> @@ -3110,6 +3110,7 @@ static struct snd_pci_quirk cxt5066_cfg_tbl[] = {
>        SND_PCI_QUIRK(0x17aa, 0x21b2, "Thinkpad X100e", CXT5066_IDEAPAD),
>        SND_PCI_QUIRK(0x17aa, 0x21b3, "Thinkpad Edge 13 (197)", CXT5066_IDEAPAD),
>        SND_PCI_QUIRK(0x17aa, 0x21b4, "Thinkpad Edge", CXT5066_IDEAPAD),
> +       SND_PCI_QUIRK(0x17aa, 0x2156, "Lenovo X201s", CXT5066_THINKPAD),
>        SND_PCI_QUIRK(0x17aa, 0x215e, "Lenovo Thinkpad", CXT5066_THINKPAD),
>        SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo G series", CXT5066_IDEAPAD),
>        SND_PCI_QUIRK(0x17aa, 0x390a, "Lenovo S10-3t", CXT5066_IDEAPAD),

Getting closer, but mic still not working.


Thanks,
Jeff.

Jeff Chua

unread,
Mar 18, 2011, 2:00:02 PM3/18/11
to
On Sat, Oct 2, 2010 at 1:10 AM, Jeff Chua <jeff.ch...@gmail.com> wrote:

> On Fri, Oct 1, 2010 at 6:18 PM, Takashi Iwai <ti...@suse.de> wrote:
>
>>>
>>> Getting closer, but mic still not working.
>>
>> Jeff, give always alsa-info.sh output when you want someone else
>> looking into your HD-audio problem.  Without it, it's very hard to
>> follow what is wrong.
>> So, the mic is detected.  I guess you didn't set up the capture mixer
>> and else properly.
>
> Attached is the alsa-info output. I used alsamixer to set the Analog
> mic boost to 40db, and I can also see that alsa is detecting the
> external mic when I plug the mic in.
>
> - ALSA sound/pci/hda/patch_conexant.c:2354: CXT5066: external microphone absent
> + ALSA sound/pci/hda/patch_conexant.c:2348: CXT5066: external
> microphone detected
> Still no sound.

I just want to update you all now that I finally got the mic to work
on my X201s. It's the settings in the BIOS. Unlike earlier Thinkpad
models, the X201s BIOS has a special setting to enable/disable the
mic. Bios setup: F1 -> Security -> I/O Ports -> Microphone -> Enable.
Since I trashed Windows on the X201s as soon as I power up the first
time that could have disabled the mic by default.

Now, it's all working.

Thanks for all you help!

Jeff.

0 new messages