[alsa-devel] Multichannel sound distortions with Realtek ALC889a

Takashi Iwai tiwai at suse.de
Wed Jul 30 18:33:36 CEST 2008


At Wed, 30 Jul 2008 10:11:32 +0200,
Matthias Dahl wrote:
> 
> Hello.
> 
> Earlier this month I already posted about my problems with the ALC889a chip. 
> I've gathered some more informations that might help or inform others:
> 
> 1) the ALC889a is a custom job for Gigabyte and Realtek is not allowed to
>    release its data sheet to anyone but Gigabyte. So no data sheet on this
>    one.
> 
> 2) There seem to be two revisions of this chip. I was unable to confirm this
>    with Realtek but my revision id is 0x100101 whereas ALSA expects 0x100103.
> 
>    Modifing patch_realtek.c appropriately to recognize my revision id and use
>    patch_alc883 instead of patch_alc882, doesn't fix the problem but seems to
>    help my initial volume problems.

What is this "initial volume problem"?
Could you compare /proc/asound/card0/codec#* outputs between patched
and non-patched cases?


> 3) Sound distortions only appear on the center channel while playing back
>    multi channel content. They sound like voltage sizzling noise. Hard to
>    explain. Muting all channels but the center channel makes those distortions
>    disappear.

Hm, is it via 5.1 channel output with real 6 channels?
The hda-intel driver tries to duplicate 2-channel signals to 5.1
automatically, and it's known that this doesn't always work, e.g. on
AD1986A codec chip.  I guess this isn't the case for Realtek codecs,
though.

>    A test under Vista revealed no distortions or anything like it. So a faulty
>    chip is actually pretty unlikely.

A good news, at least :)
In the recent patch_realtek.c, there are bunch of magical initial
sequences found, e.g. in alc888_coef_init() or in alc_subsystem_id().
Can any of them change the output quality?
alc_fix_pll*() is another magical code, too...

> Since three weeks I am in contact with Realtek about this problem but there is 
> not much to report on that front yet except for a rather friendly and helpful 
> contact. Unfortunately due to time constraints and other issues, the problem 
> hasn't been confirmed nor denied yet by Realtek. They received a similar mb 
> from Gigabyte and are planing on trying to reproduce that problem there.
> 
> To make a long story short, I'd appreciate if anyone with an ALC889a chip and 
> a 5.1 setup could try to confirm this bug and post about it. If anyone knows 
> a way how I could diagnose this further, I am open to suggestions...
> 
> Currently I tend to get myself an Asus Xonar D2X or similar and keep this as a 
> reminder that one should never buy hardware that's not in some way or another 
> open. :-( To defend myself, when I bought my board a few weeks back I was 
> under the impression that _all_ HDA codecs work well with ALSA and at least 
> there I wouldn't have to worry. Well... far from it. :(

HDA codecs are often so delicate.  You must care with love :)



Takashi

> 
> Thanks a lot in advance for any suggestions or help.
> 
> Have a nice day,
> Matthias Dahl
> [2 patch_realtek.c.diff <text/x-diff; us-ascii (7bit)>]
> --- patch_realtek.c.orig	2008-06-27 10:11:58.000000000 +0200
> +++ patch_realtek.c	2008-07-11 11:46:17.000000000 +0200
> @@ -6526,7 +6526,7 @@
>  			break;
>  		default:
>  			/* ALC889A is handled better as ALC888-compatible */
> -			if (codec->revision_id == 0x100103) {
> +			if (codec->revision_id == 0x100103 || codec->revision_id == 0x100101) {
>  				alc_free(codec);
>  				return patch_alc883(codec);
>  			}
> @@ -14661,8 +14661,10 @@
>  	{ .id = 0x10ec0880, .name = "ALC880", .patch = patch_alc880 },
>  	{ .id = 0x10ec0882, .name = "ALC882", .patch = patch_alc882 },
>  	{ .id = 0x10ec0883, .name = "ALC883", .patch = patch_alc883 },
> -	{ .id = 0x10ec0885, .rev = 0x100103, .name = "ALC889A",
> +	{ .id = 0x10ec0885, .rev = 0x100103, .name = "ALC889A rev2",
>  	  .patch = patch_alc882 }, /* should be patch_alc883() in future */
> +	{ .id = 0x10ec0885, .rev = 0x100101, .name = "ALC889A rev1",
> +	  .patch = patch_alc883 },
>  	{ .id = 0x10ec0885, .name = "ALC885", .patch = patch_alc882 },
>  	{ .id = 0x10ec0888, .name = "ALC888", .patch = patch_alc883 },
>  	{ .id = 0x10ec0889, .name = "ALC889", .patch = patch_alc883 },
> [3  <text/plain; us-ascii (7bit)>]
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel


More information about the Alsa-devel mailing list