Bug 108081
Summary: | White static noise through headphones on dell xps 13 9350 late 2015 model | ||
---|---|---|---|
Product: | Drivers | Reporter: | frank604 (frankshin82) |
Component: | Sound(ALSA) | Assignee: | Jaroslav Kysela (perex) |
Status: | RESOLVED CODE_FIX | ||
Severity: | normal | CC: | frankshin82, jyc, max, tiwai, trashcan, vvisaev |
Priority: | P1 | ||
Hardware: | Intel | ||
OS: | Linux | ||
Kernel Version: | 4.3 | Subsystem: | |
Regression: | No | Bisected commit-id: | |
Attachments: |
dmesg
alsa info Fix patch (found in sound.git tree for-linus branch) alsa-info.sh |
Description
frank604
2015-11-17 21:01:34 UTC
I have the same behavior, also on an XPS 9350. Just to experiment, I tried comparing the outputs of `amix` before and after suspending, and nothing changed. However, the section of `lspci -nnv` for the audio driver did change. The output before: 00:1f.3 Audio device [0403]: Intel Corporation Device [8086:9d70] (rev 21) (prog-if 80) Subsystem: Dell Device [1028:0704] Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 32 Interrupt: pin A routed to IRQ 283 Region 0: Memory at dc328000 (64-bit, non-prefetchable) [size=16K] Region 4: Memory at dc300000 (64-bit, non-prefetchable) [size=64K] Capabilities: [50] Power Management version 3 Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA PME(D0-,D1-,D2-,D3hot+,D3cold+) Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME- Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+ Address: 00000000fee00338 Data: 0000 Kernel driver in use: snd_hda_intel Kernel modules: snd_hda_intel, snd_soc_skl The output after: 00:1f.3 Audio device [0403]: Intel Corporation Device [8086:9d70] (rev 21) (prog-if 80) Subsystem: Dell Device [1028:0704] Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 32 Interrupt: pin A routed to IRQ 16 Region 0: Memory at dc328000 (64-bit, non-prefetchable) [size=16K] Region 4: Memory at dc300000 (64-bit, non-prefetchable) [size=64K] Capabilities: [50] Power Management version 3 Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA PME(D0-,D1-,D2-,D3hot+,D3cold+) Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME- Capabilities: [60] MSI: Enable- Count=1/1 Maskable- 64bit+ Address: 0000000000000000 Data: 0000 Kernel driver in use: snd_hda_intel Kernel modules: snd_hda_intel, snd_soc_skl The change between the two is: 3c3 < Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+ --- > Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- > Stepping- SERR- FastB2B- DisINTx- 6c6 < Interrupt: pin A routed to IRQ 283 --- > Interrupt: pin A routed to IRQ 16 12,13c12,13 < Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+ < Address: 00000000fee00338 Data: 0000 --- > Capabilities: [60] MSI: Enable- Count=1/1 Maskable- 64bit+ > Address: 0000000000000000 Data: 0000 I'm not sure if this is relevant or not, but I thought I'd post it in case it might help. In addition, removing the module with `sudo modprobe -rf snd_hda_intel` and then reloading it with `sudo modprobe snd_hda_intel` restores correct behavior. Could you give alsa-info.sh output? Run it with --no-upload option and attach (don't paste) to bugzilla. Created attachment 195061 [details]
alsa info
How about applying the fixup for Dell E7x? This is for recent models, and might match better: --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -5205,6 +5205,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { SND_PCI_QUIRK(0x1028, 0x06de, "Dell", ALC292_FIXUP_DISABLE_AAMIX), SND_PCI_QUIRK(0x1028, 0x06df, "Dell", ALC292_FIXUP_DISABLE_AAMIX), SND_PCI_QUIRK(0x1028, 0x06e0, "Dell", ALC292_FIXUP_DISABLE_AAMIX), + SND_PCI_QUIRK(0x1028, 0x0704, "Dell XPS 13", ALC292_FIXUP_DELL_E7X), SND_PCI_QUIRK(0x1028, 0x164a, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1028, 0x164b, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x103c, 0x1586, "HP", ALC269_FIXUP_HP_MUTE_LED_MIC2), I'm on it. Brb let me test. Thank you Takashi for the fast responses. Fixup for dell e7x does not work. Same behavior is seen after suspend/resume. (In reply to frank604 from comment #7) > Fixup for dell e7x does not work. Same behavior is seen after > suspend/resume. Do you mean that the behavior isn't seen *at all* before suspend/resume when the fixup is applied? Then it's interesting. Many existing fixups are serving for multiple issues: - Disabling aamix: it often helps the wrong loopback from the mic or the dead input. - Disabling power-save-node: it's the cause of click noise at runtime power up/down. - Headset mode detection and change: I guess this is the culprit in your case. It's a TRRS headset jack, right? For the former two, you can enable in the hint via patch option. See Documentation/sound/alsa/HD-Audio.txt. For example, create a file /lib/firmware/alsa/dell-fw containing [codec] 0x10ec0256 (In reply to frank604 from comment #7) > Fixup for dell e7x does not work. Same behavior is seen after > suspend/resume. Do you mean that the behavior isn't seen *at all* before suspend/resume when the fixup is applied? Then it's interesting. Many existing fixups are serving for multiple issues: - Disabling aamix: it often helps the wrong loopback from the mic or the dead input. - Disabling power-save-node: it's the cause of click noise at runtime power up/down. - Headset mode detection and change: I guess this is the culprit in your case. It's a TRRS headset jack, right? For the former two, you can enable in the hint via patch option. See Documentation/sound/alsa/HD-Audio.txt. For example, create a file /lib/firmware/alsa/dell-fw containing [codec] 0x10ec0256 0x10280704 0 [hint] mixer_nid = 0 power_save_node = 0 Then, add a module option to snd-hda-intel in a /etc/modprobe.d/* file like options snd-hda-intel patch=alsa/dell-fw About the headset mode, you really need trial-and-error. There are lots of quirk entries regarding this. Your codec is supposed to be ALC256-compatible, so ALC255_* ones should be usable. But other codec quirks are also worth to try. The fixup for dell e7x does not have any positive effect. White noise is still present before suspend which is gone after increasing 'headphone mic boost' 1 step up to a db of 10.0 for both channels. Then after suspend, the white noise plus static is heard. I'll give the dell-fw a try as well as go down the list of compiling in different quirks. Is there a faster way to do the trial and error? How I do this is boot into stock kernel and patch patch_realtek.c while I recompile a test kernel. Then boot into test kernel to see if it worked. Each try takes about 20 minutes. You don't have to rebuild the whole kernel tree from scratch at each time you patch the code. You just need to run "make module" after patching patch_realtek.c. Then install it via "make modules_install" as root, and reboot/retest. That's all. It'd take only a few minutes at each cycle. We received a new fix patch for (supposedly) this Dell laptop. It's described for fixing the noise after resume, but this seems applied generically at boot, so this might help. Give it a try. Created attachment 195291 [details]
Fix patch (found in sound.git tree for-linus branch)
Patch fixes the issue. Thank you so much for your time. Do we know which kernel this will be merged into? Good to hear. It'll be included in 4.4-rc3 unless anything wrong happens. I have same issue on dell xps 13 9350, but in either 4.2.6, 4.4rc3 and 4.4rc4 kernels. This quirk applied, but doesn't work for me: # cat /sys/class/sound/card0/device/subsystem_* 0x0704 0x1028 00:1f.3 Audio device: Intel Corporation Device 9d70 (rev 21) (prog-if 80) Subsystem: Dell Device 0704 Flags: bus master, fast devsel, latency 32, IRQ 282 Memory at dc728000 (64-bit, non-prefetchable) [size=16K] Memory at dc700000 (64-bit, non-prefetchable) [size=64K] Capabilities: [50] Power Management version 3 Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+ Kernel driver in use: snd_hda_intel Kernel modules: snd_hda_intel, snd_soc_skl Alsa version: 1.0.29. Fix with dell-fw also does not work. Hey, the issue with the white noise from the headphones is also still present for me in the kernel 4.4rc-5 on my XPS 13 (9350) Raising the "Headphone Mic Boost" in alsamixer one step up to +10 on both channels fixes it. cat /sys/class/sound/card0/device/subsystem_* 0x0704 0x1028 lshw output: *-multimedia Beschreibung: Audio device Produkt: Intel Corporation Hersteller: Intel Corporation Physische ID: 1f.3 Bus-Informationen: pci@0000:00:1f.3 Version: 21 Breite: 64 bits Takt: 33MHz Fähigkeiten: pm msi bus_master cap_list Konfiguration: driver=snd_hda_intel latency=32 Ressourcen: irq:282 memory:dc728000-dc72bfff memory:dc700000-dc70ffff Created attachment 197741 [details]
alsa-info.sh
my output of alsa-info.sh in kernel 4.4rc5
(In reply to Carl from comment #16) > Hey, > > the issue with the white noise from the headphones is also still present for > me in the kernel 4.4rc-5 on my XPS 13 (9350) > > Raising the "Headphone Mic Boost" in alsamixer one step up to +10 on both > channels fixes it. That's interesting. Maybe there is some hardware bug there (not meant as a hardware detect). Do you have the latest BIOS? I thought Canonical has tested this (that's why I received the patch), and wonder why they didn't notice it... We may fix it to this level if this workaround is really applied to all people. So, test by any other people with this model are appreciated. Fix "Headphone Mic Boost" in alsamixer one step works for me, thank you. db gain on "Headphone Mic Boost" must be equal "10, 10", on other values noise (little different noise for either value) returned. I have latest BIOS 1.1.7 and without this fix I still have noise on 4.4rc5. OK, thanks. Then how about the patch below? This will stop handling the headphone mic but using only the headset mic. Just change the chain_id for ALC256_FIXUP_DELL_XPS_13_HEADPHONE_NOISE to ALC255_FIXUP_DELL2_MIC_NO_PRESENCE. --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -5185,7 +5185,7 @@ static const struct hda_fixup alc269_fixups[] = { {} }, .chained = true, - .chain_id = ALC255_FIXUP_DELL1_MIC_NO_PRESENCE + .chain_id = ALC255_FIXUP_DELL2_MIC_NO_PRESENCE }, }; Thanks for reply! No, this patch does not work for me. With this patch I can't change "Headphone Mic Boost" in alsamixer, and workaround also not work. OK, then a slightly more changes are needed. Can you mark this bug as REOPENED? Is there a new report for this bug? Still have a static noise if I do not change "Headphone Mic Boost" to 22. I think the problem is Pulseaudio: https://wiki.archlinux.org/index.php/Dell_XPS_13_(9350)#Hissing.2FCrackling_noises_when_using_headphones |