missing sound on kernel-5.15
chihhao chen
chihhao.chen at mediatek.com
Mon Aug 29 10:50:58 CEST 2022
Hi Takashi,
Yes.
To issue SAMPLING_FREQ_CONTROL USB request two times is root cause of
this issue.
K5.15 new behavior
snd_usb_hw_params -> configure_endpoints() -> issue
SAMPLING_FREQ_CONTROL USB request
Thanks
On Mon, 2022-08-29 at 10:06 +0200, Takashi Iwai wrote:
> On Mon, 29 Aug 2022 09:56:42 +0200,
> chihhao chen wrote:
> >
> > Hi Takashi,
> >
> > Because of this problem, is it okay to remove configure_endpoints
> > function call in snd_usb_hw_params?
> >
> > Then configure_endpoints would be called in snd_usb_pcm_prepare and
> > USB
> > control transfers become the same as which in kernel-5.10. There
> > will
> > be only one SAMPLING_FREQ_CONTROL request and no sound-missing
> > phenomenon.
>
> Are you sure that removing the configure_endpoints() fixes the
> problem?
>
>
> Takashi
>
> >
> > Thanks
> >
> >
> > On Mon, 2022-08-22 at 08:57 -0300, Geraldo Nascimento wrote:
> > > On Mon, Aug 22, 2022 at 04:06:58PM +0800, chihhao chen wrote:
> > > > I am testing many headsets on Android platform with different
> > > > kernel
> > > > versions.
> > > >
> > > > On kernel-5.10, calling sequence for playback is
> > > > 1. snd_usb_hw_params -> set highest sampling rate, no
> > > > SAMPLING_FREQ_CONTROL USB request sent in this stage
> > > > 2. snd_pcm_release
> > > > 3. snd_usb_hw_params -> set proper sampling rate, still no
> > > > SAMPLING_FREQ_CONTROL USB request
> > > > 4. snd_usb_pcm_parepare -> in configure_endpoint
> > > > SAMPLING_FREQ_CONTROL
> > > > USB request was sent on USB bus
> > > >
> > > > With the same calling sequence, a slightly behavior change on
> > > > kernel-
> > > > 5.15 is
> > > > 1. snd_usb_hw_params -> set highest sampling rate,
> > > > SAMPLING_FREQ_CONTROL USB request was sent on USB bus
> > > > 2. snd_pcm_release
> > > > 3. snd_usb_hw_params -> set proper sampling rate,
> > > > SAMPLING_FREQ_CONTROL
> > > > USB request was sent too
> > > > (because configure_endpoint was moved to snd_usb_hw_params
> > > > function)
> > > > 4. snd_usb_pcm_parepare -> no SAMPLING_FREQ_CONTROL USB
> > > > request because of USB EP flag check
> > > >
> > > > I checked all USB packets and confirmed audio data output was
> > > > correct.
> > > > But there may be missing sound problem for the first sound with
> > > > many
> > > > headsets (for example Samsung headset).
> > > > I found this issue is related to two-times sampling rate set
> > > > request.
> > > > (I tried to forcibly skip first USB request, everything became
> > > > okay.)
> > > > So do you guys know why configure_endpoint was moved to
> > > > snd_usb_hw_params?
> > >
> > > Hi Chihhao,
> > >
> > > the commit you're looking for is
> > > bf6313a0ff766925462e97b4e733d5952de02367
> > > ("ALSA: usb-audio: Refactor endpoint management")
> > >
> > > Good luck,
> > > Geraldo Nascimento
> > >
> > > > Or could you provide patch for this problem?
> > > >
> > > > Many thanks
> > > > Chihhao
> > > >
More information about the Alsa-devel
mailing list