All of lore.kernel.org
 help / color / mirror / Atom feed
* Pioneer DJ DDJ-SR2 sound degradation
@ 2021-03-18 22:41 Geraldo
  2021-03-21  4:31 ` Geraldo
  0 siblings, 1 reply; 4+ messages in thread
From: Geraldo @ 2021-03-18 22:41 UTC (permalink / raw)
  To: alsa-devel

Hi everyone,

I'm running stable kernel 5.11.6 together with my Pioneer DJ DDJ-SR2 and
JACK. Mixxx is running on top of JACK.


After I start JACK I have about 40 minutes of good sound quality from the
inputs. After this period the sound will begin to degrade slowly until it
is almost pure distortion.

The issue is gone if I restart the JACK server, no need to reboot the
hardware. The description I gave above sounds a lot like soundcard clock
drift (which happens to those using more than one soundcard. You know)
which motivates me to believe we missed a bug somewhere around the recent
changes introduced in implicit feedback sync for Pioneer devices

Dyndbg shows nothing useful I guess. No xruns reported.

I've recorded a 1KHz tone and after 50+ minutes the sound degradation kicks
in. Only problem is even after cutting and encoding to mp3 128kbps it's
still a 10 megabytes file. I suppose I could post it to Soundcloud or
Mixcloud if anyone is interested.

Is anyone else experiencing these symptoms with Pioneer hardware? Note that
the sound degradation kicks in after about an hour, more or less, and it's
for the inputs only. Outputs continue to operate fine without the need to
restart the JACK server every hour.

Thanks everybody,
Geraldo

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Pioneer DJ DDJ-SR2 sound degradation
  2021-03-18 22:41 Pioneer DJ DDJ-SR2 sound degradation Geraldo
@ 2021-03-21  4:31 ` Geraldo
  2021-03-21  8:22   ` Takashi Iwai
  0 siblings, 1 reply; 4+ messages in thread
From: Geraldo @ 2021-03-21  4:31 UTC (permalink / raw)
  To: alsa-devel

Until we manage to engage implicit feedback sync for Pioneer gear I'm
afraid the clock will drift on DUPLEX mode.

I reread the Pioneer related source code and implicit feedback sync was
disabled because it gave Incompatible EP Setup messages. I should know, I
was a reporter on that regression.

Only those messages are fake. They arise because our ALSA code it's not
honoring .ep_attr on quirks-table.h specifically in regards to
USB_ENDPOINT_USAGE_IMPLICIT_FB.

In fact the new improved implicit feedback sync code inside pcm.c that sets
sync upon probe is failing to set implicit_fb to 1. I commented the
conditional for testing and I told endpoint_compatible to always return
true.

Voilà, JACK started in duplex mode without nasty Incompatible EP Setup
problems and supposedly with implicit feedback sync on. We are not setting
bits 5..7 of bmAttributes, at least that's what I get from the missing
Usage field in lsusb.

My JACK transport has been rolling for 17 minutes and if it goes for two
complete hours without distortion passing-thru vinyl on Mixxxx I'll provide
the list with a more elegant PATCH and not this gambiarra as we say on
Brazil.

Hopefully their will be implicit feedback sync for Pioneer :-)


On Thu, Mar 18, 2021 at 7:41 PM Geraldo <geraldogabriel@gmail.com> wrote:
>
> Hi everyone,
>
> I'm running stable kernel 5.11.6 together with my Pioneer DJ DDJ-SR2 and
JACK. Mixxx is running on top of JACK.
>
>
> After I start JACK I have about 40 minutes of good sound quality from the
inputs. After this period the sound will begin to degrade slowly until it
is almost pure distortion.
>
> The issue is gone if I restart the JACK server, no need to reboot the
hardware. The description I gave above sounds a lot like soundcard clock
drift (which happens to those using more than one soundcard. You know)
which motivates me to believe we missed a bug somewhere around the recent
changes introduced in implicit feedback sync for Pioneer devices
>
> Dyndbg shows nothing useful I guess. No xruns reported.
>
> I've recorded a 1KHz tone and after 50+ minutes the sound degradation
kicks in. Only problem is even after cutting and encoding to mp3 128kbps
it's still a 10 megabytes file. I suppose I could post it to Soundcloud or
Mixcloud if anyone is interested.
>
> Is anyone else experiencing these symptoms with Pioneer hardware? Note
that the sound degradation kicks in after about an hour, more or less, and
it's for the inputs only. Outputs continue to operate fine without the need
to restart the JACK server every hour.
>
> Thanks everybody,
> Geraldo

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Pioneer DJ DDJ-SR2 sound degradation
  2021-03-21  4:31 ` Geraldo
@ 2021-03-21  8:22   ` Takashi Iwai
       [not found]     ` <CAEsQvcuS84fUoaCxsoixCPH7F-XGxbpK067-rxVA+EMDr2KAGg@mail.gmail.com>
  0 siblings, 1 reply; 4+ messages in thread
From: Takashi Iwai @ 2021-03-21  8:22 UTC (permalink / raw)
  To: Geraldo; +Cc: alsa-devel

On Sun, 21 Mar 2021 05:31:11 +0100,
Geraldo wrote:
> 
> Until we manage to engage implicit feedback sync for Pioneer gear I'm
> afraid the clock will drift on DUPLEX mode.
> 
> I reread the Pioneer related source code and implicit feedback sync was
> disabled because it gave Incompatible EP Setup messages. I should know, I
> was a reporter on that regression.
> 
> Only those messages are fake. They arise because our ALSA code it's not
> honoring .ep_attr on quirks-table.h specifically in regards to
> USB_ENDPOINT_USAGE_IMPLICIT_FB.

That's right.  The parser reads from the original descriptor, not the
one from the quirk table.  That is, the implicit fb quirk has to be
declared explicitly in another quirk table.  And, the implicit fb is
skipped for those devices because they didn't work; see
sound/usb/implicit.c.

> In fact the new improved implicit feedback sync code inside pcm.c that sets
> sync upon probe is failing to set implicit_fb to 1. I commented the
> conditional for testing and I told endpoint_compatible to always return
> true.
> 
> Voilà, JACK started in duplex mode without nasty Incompatible EP Setup
> problems and supposedly with implicit feedback sync on. We are not setting
> bits 5..7 of bmAttributes, at least that's what I get from the missing
> Usage field in lsusb.
> 
> My JACK transport has been rolling for 17 minutes and if it goes for two
> complete hours without distortion passing-thru vinyl on Mixxxx I'll provide
> the list with a more elegant PATCH and not this gambiarra as we say on
> Brazil.
> 
> Hopefully their will be implicit feedback sync for Pioneer :-)

I know there are quite a few users with Pioneer devices around here,
so let's hope that they can test the implicit feedback things and find
the culprit of the buggy behavior.  Unfortunately it's quite hard to
debug such a thing remotely without the hardware from my side.


Takashi


> 
> 
> On Thu, Mar 18, 2021 at 7:41 PM Geraldo <geraldogabriel@gmail.com> wrote:
> >
> > Hi everyone,
> >
> > I'm running stable kernel 5.11.6 together with my Pioneer DJ DDJ-SR2 and
> JACK. Mixxx is running on top of JACK.
> >
> >
> > After I start JACK I have about 40 minutes of good sound quality from the
> inputs. After this period the sound will begin to degrade slowly until it
> is almost pure distortion.
> >
> > The issue is gone if I restart the JACK server, no need to reboot the
> hardware. The description I gave above sounds a lot like soundcard clock
> drift (which happens to those using more than one soundcard. You know)
> which motivates me to believe we missed a bug somewhere around the recent
> changes introduced in implicit feedback sync for Pioneer devices
> >
> > Dyndbg shows nothing useful I guess. No xruns reported.
> >
> > I've recorded a 1KHz tone and after 50+ minutes the sound degradation
> kicks in. Only problem is even after cutting and encoding to mp3 128kbps
> it's still a 10 megabytes file. I suppose I could post it to Soundcloud or
> Mixcloud if anyone is interested.
> >
> > Is anyone else experiencing these symptoms with Pioneer hardware? Note
> that the sound degradation kicks in after about an hour, more or less, and
> it's for the inputs only. Outputs continue to operate fine without the need
> to restart the JACK server every hour.
> >
> > Thanks everybody,
> > Geraldo
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Fwd: Pioneer DJ DDJ-SR2 sound degradation
       [not found]     ` <CAEsQvcuS84fUoaCxsoixCPH7F-XGxbpK067-rxVA+EMDr2KAGg@mail.gmail.com>
@ 2021-03-21 15:47       ` Geraldo
  0 siblings, 0 replies; 4+ messages in thread
From: Geraldo @ 2021-03-21 15:47 UTC (permalink / raw)
  To: alsa-devel

Good news: my JACK transport has been rolling for more than 2 hours
without sound degradation. I'll leave it overnight just to be sure
sound degradation has been fixed and not just postponed.

But yes, I think I managed to engage implicit feedback sync for the
playback on my Pioneer DJ DDJ-SR2.

Dr. Iwai, my initial assesment was ALSA not honoring .ep_attr on
quirks-table.h was the culprit for the Incompatible EP Setup messages.

Turns out that for implicit feedback sync the EP is opened twice, and
the ep->opened refcount prevents that.

Once I commented out ep->opened++; inside snd_usb_endpoint_open on
endpoint.c the kernel was able to open the EP twice(one time for data,
second time for sync).

I could use some help in coding an elegant way of going around the
ep->opened refcount instead of simpy disabling it!

Once that particular problem is sorted out I'll be able to provide a
proper PATCH for all users of Pioneer gear to test implicit feedback
sync.

Here's the relevant dyndbg info for the success case:

[35084.131891] usb 3-2: 0:1: added playback implicit_fb sync_ep 82, iface 0:1
[35084.131905] usb 3-2: Creating new data endpoint #1
[35084.131911] usb 3-2: Creating new data endpoint #82
[35084.131917] xhci_hcd 0000:00:14.0: xhci_check_bandwidth called for
udev 0000000052e95692
[35084.132102] usb 3-2: 0:1 Set sample rate 44100, clock 0
[35084.132116] xhci_hcd 0000:00:14.0: xhci_check_bandwidth called for
udev 0000000052e95692
[35084.132163] usb 3-2: 0:1 Set sample rate 44100, clock 0
[35084.132592] usbcore: registered new interface driver snd-usb-audio
[35096.805245] usb 3-2: Open EP 0x82, iface=0:1, idx=1
[35096.805254] usb 3-2:   channels=6, rate=44100, format=S24_3LE,
period_bytes=9216, periods=2, implicit_fb=0
[35096.805259] usb 3-2: Setting usb interface 0:0 for EP 0x82
[35096.805264] xhci_hcd 0000:00:14.0: xhci_check_bandwidth called for
udev 0000000052e95692
[35096.805475] usb 3-2: Setting usb interface 0:1 for EP 0x82
[35096.805486] xhci_hcd 0000:00:14.0: add ep 0x1, slot id 32, new drop
flags = 0x0, new add flags = 0x5
[35096.805492] xhci_hcd 0000:00:14.0: add ep 0x82, slot id 32, new
drop flags = 0x0, new add flags = 0x25
[35096.805495] xhci_hcd 0000:00:14.0: xhci_check_bandwidth called for
udev 0000000052e95692
[35096.805499] xhci_hcd 0000:00:14.0: Adding 2 ep ctxs, 6 now active.
[35096.805503] xhci_hcd 0000:00:14.0: Recalculating BW for rootport 2
[35096.805505] xhci_hcd 0000:00:14.0: Final bandwidth: 282, Limit:
1607, Reserved: 322, Available: 62 percent
[35096.805510] xhci_hcd 0000:00:14.0: // Ding dong!
[35096.805652] xhci_hcd 0000:00:14.0: Successful Endpoint Configure command
[35096.805895] usb 3-2: 0:1 Set sample rate 44100, clock 0
[35096.805902] usb 3-2: Setting params for data EP 0x82, pipe 0x14180
[35096.805910] usb 3-2: Set up 12 URBS, ret=0
[35096.805996] usb 3-2: Open EP 0x1, iface=0:1, idx=0
[35096.806000] usb 3-2:   channels=4, rate=44100, format=S24_3LE,
period_bytes=6144, periods=2, implicit_fb=1
[35096.806003] usb 3-2: Open EP 0x82, iface=0:1, idx=1
[35096.806005] usb 3-2:   channels=6, rate=44100, format=S24_3LE,
period_bytes=9216, periods=2, implicit_fb=0
[35096.806008] usb 3-2: 0:1 Set sample rate 44100, clock 0
[35096.806011] usb 3-2: Setting params for data EP 0x1, pipe 0xc100
[35096.806018] usb 3-2: Set up 12 URBS, ret=0
[35096.806021] usb 3-2: 0:1 Set sample rate 44100, clock 0
[35096.806025] usb 3-2: Setting params for data EP 0x82, pipe 0x14180
[35096.806029] usb 3-2: Set up 12 URBS, ret=0
[35096.806048] usb 3-2: Starting data EP 0x1 (running 0)
[35096.806051] usb 3-2: No URB submission due to implicit fb sync
[35096.806053] usb 3-2: Starting data EP 0x82 (running 0)
[35096.806076] usb 3-2: 12 URBs submitted for EP 0x82
[35096.807337] usb 3-2: Starting data EP 0x82 (running 1)
[35096.807343] usb 3-2: 0:1 Start Capture PCM
[35096.807346] usb 3-2: 0:1 Start Playback PCM

On Sun, Mar 21, 2021 at 5:22 AM Takashi Iwai <tiwai@suse.de> wrote:
>
> On Sun, 21 Mar 2021 05:31:11 +0100,
> Geraldo wrote:
> >
> > Until we manage to engage implicit feedback sync for Pioneer gear I'm
> > afraid the clock will drift on DUPLEX mode.
> >
> > I reread the Pioneer related source code and implicit feedback sync was
> > disabled because it gave Incompatible EP Setup messages. I should know, I
> > was a reporter on that regression.
> >
> > Only those messages are fake. They arise because our ALSA code it's not
> > honoring .ep_attr on quirks-table.h specifically in regards to
> > USB_ENDPOINT_USAGE_IMPLICIT_FB.
>
> That's right.  The parser reads from the original descriptor, not the
> one from the quirk table.  That is, the implicit fb quirk has to be
> declared explicitly in another quirk table.  And, the implicit fb is
> skipped for those devices because they didn't work; see
> sound/usb/implicit.c.
>
> > In fact the new improved implicit feedback sync code inside pcm.c that sets
> > sync upon probe is failing to set implicit_fb to 1. I commented the
> > conditional for testing and I told endpoint_compatible to always return
> > true.
> >
> > Voilà, JACK started in duplex mode without nasty Incompatible EP Setup
> > problems and supposedly with implicit feedback sync on. We are not setting
> > bits 5..7 of bmAttributes, at least that's what I get from the missing
> > Usage field in lsusb.
> >
> > My JACK transport has been rolling for 17 minutes and if it goes for two
> > complete hours without distortion passing-thru vinyl on Mixxxx I'll provide
> > the list with a more elegant PATCH and not this gambiarra as we say on
> > Brazil.
> >
> > Hopefully their will be implicit feedback sync for Pioneer :-)
>
> I know there are quite a few users with Pioneer devices around here,
> so let's hope that they can test the implicit feedback things and find
> the culprit of the buggy behavior.  Unfortunately it's quite hard to
> debug such a thing remotely without the hardware from my side.
>
>
> Takashi
>
>
> >
> >
> > On Thu, Mar 18, 2021 at 7:41 PM Geraldo <geraldogabriel@gmail.com> wrote:
> > >
> > > Hi everyone,
> > >
> > > I'm running stable kernel 5.11.6 together with my Pioneer DJ DDJ-SR2 and
> > JACK. Mixxx is running on top of JACK.
> > >
> > >
> > > After I start JACK I have about 40 minutes of good sound quality from the
> > inputs. After this period the sound will begin to degrade slowly until it
> > is almost pure distortion.
> > >
> > > The issue is gone if I restart the JACK server, no need to reboot the
> > hardware. The description I gave above sounds a lot like soundcard clock
> > drift (which happens to those using more than one soundcard. You know)
> > which motivates me to believe we missed a bug somewhere around the recent
> > changes introduced in implicit feedback sync for Pioneer devices
> > >
> > > Dyndbg shows nothing useful I guess. No xruns reported.
> > >
> > > I've recorded a 1KHz tone and after 50+ minutes the sound degradation
> > kicks in. Only problem is even after cutting and encoding to mp3 128kbps
> > it's still a 10 megabytes file. I suppose I could post it to Soundcloud or
> > Mixcloud if anyone is interested.
> > >
> > > Is anyone else experiencing these symptoms with Pioneer hardware? Note
> > that the sound degradation kicks in after about an hour, more or less, and
> > it's for the inputs only. Outputs continue to operate fine without the need
> > to restart the JACK server every hour.
> > >
> > > Thanks everybody,
> > > Geraldo
> >

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-03-21 15:52 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-18 22:41 Pioneer DJ DDJ-SR2 sound degradation Geraldo
2021-03-21  4:31 ` Geraldo
2021-03-21  8:22   ` Takashi Iwai
     [not found]     ` <CAEsQvcuS84fUoaCxsoixCPH7F-XGxbpK067-rxVA+EMDr2KAGg@mail.gmail.com>
2021-03-21 15:47       ` Fwd: " Geraldo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.