At Thu, 14 Aug 2014 17:26:58 +0200, Julian Wollrath wrote:
Am Thu, 14 Aug 2014 17:11:32 +0200 schrieb Takashi Iwai tiwai@suse.de:
At Thu, 14 Aug 2014 17:04:59 +0200, Julian Wollrath wrote:
Am Thu, 14 Aug 2014 16:47:46 +0200 schrieb Takashi Iwai tiwai@suse.de:
At Thu, 14 Aug 2014 16:39:14 +0200, Julian Wollrath wrote:
Am Thu, 14 Aug 2014 16:09:51 +0200 schrieb Takashi Iwai tiwai@suse.de:
At Thu, 14 Aug 2014 16:07:37 +0200, Julian Wollrath wrote: > > > > > > Simple mixer control 'Mic',0 > > > > > Front Left: Playback 0 [0%] [-34.50dB] [on] > > > > > Front Right: Playback 0 [0%] [-34.50dB] [on] > > > > > > > > This plays any noise from the mic input. > > > Turning it off makes no difference since capture is > > > turned off anyway: > > > > This is a loopback mixer element, it has nothing to do > > with capture stream. > > > > The likely culprit of the static noises is the signal > > from the analog loopback. In some cases, you can disable > > the whole loopback via "Loopback Mixing" mixer element on > > the fly. In some cases, you'd need to disable each mixer > > input (e.g. "Mic Playback Switch"). In some cases (e.g. > > on some Sony and Dell laptops), you'd need to disable the > > complete analog loopback at the initialization. > > > > The last one can be done via the early patching or sysfs > > reconfiguration, pass "mixer_nid = 0" hint. See > > HD-Audio.txt for a brief instruction. > Sadly, that did not help.
Give alsa-info.sh output after your change to verify whether you did correctly.
Here it is, cheers:
Thanks. The setup looks OK, the path is: DAC (0x02) -> mixer (0x0c) -> mixer (0x14) and the mixer mutes the loopback path (index 1).
Is it the state where you still hear the static noise?
Yes, the alsa-info.sh script was executed, while hearing the static noise.
OK. And if you mute "Speaker" or "Headphone", the noise is gone, too, right?
No, if I mute "Speaker" (the internal laptop speaker) it is not gone. It is only gone, if I mute "Master" or have a headphone plugged in and mute "Headphone" or "Master".
Interesting. The "Speaker" mute changes "Speaker Playback Switch", and as you can see in alsa-info.sh output, this toggles the mute of the speaker pin NID 0x14, i.e. the endpoint. If "Master" influences, it means to mute *both* Headphone and Speaker mutes would work. Could you check this?
More fascinating, it is not present, if the speaker is not muted and I disable powersaving via "echo '0' > '/sys/module/snd_hda_intel/parameters/power_save'" but even then, it is still present on the headphone.
Hm. Is the noise audible when you playback a PCM stream, too? For example, you can play a silent stream.
Also, what if you use the module option for snd-hda-intel model=nofixup or model=generic?
That did not change anything either. Passing the "mixer_nid = 0" hint also did not get rid of the static noise, when loading snd-hda-intel with model=nofixup resp. model=generic.
Did you reboot with setting the option in /etc/modprobe.d/*? Reloading the module might not work for such a problem.
No, I just unloaded every sound-related module and than loaded the module via "modprobe snd-hda-intel model=..." again.
Then always test with reboot. The problem is about the vendor-specific setups, and it's often sticky unless the cold boot. At best, do the cold boot. The warm boot doesn't cure always.
In either way, there should be some difference in alsa-info.sh output, e.g. more (or less) mixer items with the model option.
The difference is their, all the "Dock ..." entries were missing, when loading with the model="..." option.
Yes, and you should also see the difference in the kernel messages.
Another thing to check is to swap the DAC assignment. There was a similar problem on some Sony laptops, and we had to swap the DAC assignment since the hardware seems to have some implicit assumption of the DAC. A test patch is below.
Takashi
--- diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 6b38ec3c6e57..10c47a0e6c70 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -3280,6 +3280,22 @@ static void alc269_fixup_pincfg_no_hp_to_lineout(struct hda_codec *codec, spec->parse_flags = HDA_PINCFG_NO_HP_FIXUP; }
+static void alc269_fixup_thinkpad_dac_bind(struct hda_codec *codec, + const struct hda_fixup *fix, + int action) +{ + struct alc_spec *spec = codec->spec; + static hda_nid_t preferred_pairs[] = { + 0x15, 0x02, + 0x1b, 0x02, + 0x14, 0x03, + 0, + }; + + if (action == HDA_FIXUP_ACT_PRE_PROBE) + spec->gen.preferred_dacs = preferred_pairs; +} + static void alc269_fixup_hweq(struct hda_codec *codec, const struct hda_fixup *fix, int action) { @@ -4358,6 +4374,7 @@ enum { ALC269_FIXUP_HP_LINE1_MIC1_LED, ALC269_FIXUP_INV_DMIC, ALC269_FIXUP_LENOVO_DOCK, + ALC269_FIXUP_THINKPAD_DAC_BIND, ALC269_FIXUP_NO_SHUTUP, ALC286_FIXUP_SONY_MIC_NO_PRESENCE, ALC269_FIXUP_PINCFG_NO_HP_TO_LINEOUT, @@ -4576,6 +4593,12 @@ static const struct hda_fixup alc269_fixups[] = { .chained = true, .chain_id = ALC269_FIXUP_PINCFG_NO_HP_TO_LINEOUT }, + [ALC269_FIXUP_THINKPAD_DAC_BIND] = { + .type = HDA_FIXUP_FUNC, + .v.func = alc269_fixup_thinkpad_dac_bind, + .chained = true, + .chain_id = ALC269_FIXUP_LENOVO_DOCK, + }, [ALC269_FIXUP_PINCFG_NO_HP_TO_LINEOUT] = { .type = HDA_FIXUP_FUNC, .v.func = alc269_fixup_pincfg_no_hp_to_lineout, @@ -5044,7 +5067,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { SND_PCI_QUIRK(0x17aa, 0x21ca, "Thinkpad L412", ALC269_FIXUP_SKU_IGNORE), SND_PCI_QUIRK(0x17aa, 0x21e9, "Thinkpad Edge 15", ALC269_FIXUP_SKU_IGNORE), SND_PCI_QUIRK(0x17aa, 0x21f6, "Thinkpad T530", ALC269_FIXUP_LENOVO_DOCK), - SND_PCI_QUIRK(0x17aa, 0x21fa, "Thinkpad X230", ALC269_FIXUP_LENOVO_DOCK), + SND_PCI_QUIRK(0x17aa, 0x21fa, "Thinkpad X230", ALC269_FIXUP_THINKPAD_DAC_BIND), SND_PCI_QUIRK(0x17aa, 0x21f3, "Thinkpad T430", ALC269_FIXUP_LENOVO_DOCK), SND_PCI_QUIRK(0x17aa, 0x21fb, "Thinkpad T430s", ALC269_FIXUP_LENOVO_DOCK), SND_PCI_QUIRK(0x17aa, 0x2203, "Thinkpad X230 Tablet", ALC269_FIXUP_LENOVO_DOCK),