On 09/14/2013 04:19 PM, Colomban Wendling wrote:
Hi again,
Le 03/02/2012 20:11, Colomban Wendling a écrit :
Le 19/12/2011 16:30, Takashi Iwai a écrit :
At Mon, 19 Dec 2011 16:06:53 +0100, David Henningsson wrote:
[...]
Hmm, thanks for figuring this one out. Actually this is the third time I hear of jack detection flipping back and forth. I'm wondering if we need (and whether other OSes have?) a filter / flood protection on this stuff, and if so, how it works? I mean, nobody would notice half a second of delay on that switch anyway.
I don't think there is a perfect filtering for such a problem. Theoretically we can see how often it's flipped, and disables the jack-detection accordingly. But not sure how useful it is in practice, since it's a rare case, and the manual adjustment is easy.
It's easy to fix, but I, as a simple user, think it's really hard to find out -- actually I wouldn't have found this out if you weren't there telling me :)
So maybe it'd be good to have an automatic disable if this isn't a bug in an ALSA code somewhere -- just remembering I never suffered of the problem before 3.0.
This bug is still present as of current master (3.11.0+) -- jack detection is still broken with my Realtek ALC889 on a MSI H55M-E33.
Moreover, since kctls were introduced, this jack detection issue breaks userland apps that listen to them. E.g. PulseAudio now switch back and forth between front and back panel, for which it maintains 2 separate set of settings which actually results in more or less the same issue than with AutoMute.
I see 2 possible solutions:
- fix the jack detection (if it isn't a bug in the card but in the
driver somewhere)
- if it's not possible to fix the driver, add a way to completely
disable jack events (e.g. a module param or something).
Currently I had to comment-out the snd_kctl_jack_report() call in snd_hda_jack_report_sync() so I could actually use the driver.
BTW if it helps, snd_hda_jack_unsol_event() only receives events when actually plugging/unplugging a jack or during playback, but never when the card is idle.
I would be more than happy to do anything I can to help fixing this.
Best regards, Colomban
PS: original thread(s): http://mailman.alsa-project.org/pipermail/alsa-devel/2011-November/045707.ht... http://mailman.alsa-project.org/pipermail/alsa-devel/2011-December/047152.ht... http://mailman.alsa-project.org/pipermail/alsa-devel/2011-December/047210.ht...
Well, in the last year or two the following additions have been made to the kernel:
1) jackpoll_interval as a module parameter - turns off unsol events and instead polls the jack connection at the interval you specify
2) Kernel automute can (for almost all cards, I believe) be disabled by setting a mixer control named "Automute mode"
...and you can disable jack detection in PulseAudio by commenting out all sections with the jack you want to disable, the files are in /usr/share/pulseaudio/alsa-mixer/paths/*
Btw, just a wild theory, because I'm really not a subject matter expert: since this is a home-built computer (I assume), I wonder if this could be a very hardware near problem - i e, is the cable to the front panel chassi very close to something that gives out a lot of EMI disturbance or something like that?