[alsa-devel] Fwd: Re: Realtek ALC889: HDA Intel and kernel 3.1 gives choppy sound (again)

Colomban Wendling lists.ban at herbesfolles.org
Sat Sep 14 16:19:33 CEST 2013

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:

1) fix the jack detection (if it isn't a bug in the card but in the
driver somewhere)

2) 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,

PS: original thread(s):

More information about the Alsa-devel mailing list