Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 24 May 2012 03:34:10 +0300
From:      Alexander Motin <mav@FreeBSD.org>
To:        Konstantin Belousov <kostikbel@gmail.com>
Cc:        multimedia@freebsd.org
Subject:   Re: NV10 hdac issue
Message-ID:  <4FBD8202.9010308@FreeBSD.org>
In-Reply-To: <20120523193718.GF2358@deviant.kiev.zoral.com.ua>
References:  <20120522220640.GB2358@deviant.kiev.zoral.com.ua> <4FBD2D50.5080205@FreeBSD.org> <20120523193718.GF2358@deviant.kiev.zoral.com.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
On 05/23/12 22:37, Konstantin Belousov wrote:
> On Wed, May 23, 2012 at 09:32:48PM +0300, Alexander Motin wrote:
>> On 05/23/12 01:06, Konstantin Belousov wrote:
>>> I have (another) Atom motherboard from Intel, DN2800MT. Now, the problem
>>> is with distorted sound. Anything is played as if some pause is inserted
>>> after the next sample is finished. So I hear the proper pitch, but with
>>> guggle between fragments. I am not sure how to describe it better, except
>>> to say that it sounds as if buffering was not enough, for regular short
>>> intervals of approx. 0.5 sec.
>>>
>>> I do not believe that 1.8Hhz Atoms are too slow to decode mp3 or to play
>>> wav.
>>>
>>> The hda controller is
>>> hdac0@pci0:0:27:0:      class=0x040300 card=0x20128086 chip=0x27d88086
>>> rev=0x02 hdr=0x00
>>> codec is Realtek ALC888. The verbose dmesg from hda_snd load is at
>>> http://people.freebsd.org/~kib/tom.dmesg.txt , assuming this is useful.
>>>
>>> I would want to get normal sound from this board, thanks in advance.
>>
>> I haven't seen alike reports neither for this controller, nor for this
>> CODEC. I would try to experiment with:
>> 1) disabling MSI interrupts with hint.hdac.0.msi=0
>> 2) switching to polling mode without using any interrupts with
>> dev.hdac.0.polling=1
>> 3) changing buffer size with hw.snd.latency
>> 4) changing playback format (or vchans format it it is used)
>> 5) setting sysctl hw.snd.verbose=2 and checking for application level
>> underruns with `cat /dev/sndstat`.
>
> Thank you, setting hw.snd.latency to 10 fixed the issue. Still, I do not
> understand why default settings for the driver are not enough for the
> machine.

latency=10 means buffering for about 0.3s, that is quite a lot. I've 
tested some systems with smallest possible buffer of just 0.6ms and they 
were working about fine even in that case.

If it works for large buffer I would suppose that controller operates 
well, because using only two interrupts per period even single loss 
should be heard. Can't it be some insane SMI handler or something alike? 
Aren't there any other lags noticed?

-- 
Alexander Motin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4FBD8202.9010308>