All of lore.kernel.org
 help / color / mirror / Atom feed
* Behringer WING usb audio - cyclic xruns dependent on periods/buffers
@ 2020-11-26 18:06 Ben Bell
  2020-11-27  9:20 ` Takashi Iwai
  0 siblings, 1 reply; 9+ messages in thread
From: Ben Bell @ 2020-11-26 18:06 UTC (permalink / raw)
  To: alsa-devel

I've got a Behringer WING digital mixer which is equipped with a USB
interface supporting 48 in, 48 out at 44.1 or 48kHz. It's plugged into a
USB3 interface and for the most part it seems to work well as a class-compliant
audio interface, but I'm struggling to eliminate xruns and it's starting to
feel either driver or hardware quirk related issue.

I've done all the usual things -- I'm running a PREEMPT_RT kernel, set up
the realtime priorities of Jack and the relevant USB IRQ to no avail. I'm
doing most of the debugging remotely over ssh with X shutdown and most
other processes on the system stopped. There's nothing plugged into the
computer beyond network, keyboard, mouse and the audio interface.

I'm currently testing on kernel 5.10.0-rc5 with preempt-rt patches, but I've
previously seen the same things on 5.4-rt (Debian backports) and 5.8
(self-compiled).

The xruns are characterised by bursts of "retire_capture_urb" warnings in
the kernel logs (and in particular the frame status for everything in those
URBs is EXDEV, meaning I think that the frames haven't been consumed by the
time it's retired). I've patched sound/driver/pcm.c to provide me with a bit
more debugging information and it looks like usually it's almost always
between 7-10 consecutive calls to retire_capture_urb that are affected.

The bursts of retire_capture_urb warnings seem roughly cyclic, with a
cycle time that is dependent on the combination of the frames/period setting
and the number of periods per buffer, though it doesn't appear to be a
strictly linear thing: 512/2 (~170s cycle); 256/2 (~94s); 128/3 (~65s);
64/13 (~270s). I can't immediately see any definitive smoking gun in the urb
or interrupt counts, but there is some grouping in the timings between
the xruns. Taking 64 frames, 5 periods, it's usually 50s, but sometimes 60s:

 21:47:57 50s since xrun 4 
 21:48:47 50s since xrun 5 
 21:49:46 59s since xrun 6 
 21:50:46 60s since xrun 7 
 21:51:36 50s since xrun 8 
 21:52:36 60s since xrun 9 
 21:53:36 60s since xrun 10 
 21:54:37 61s since xrun 11 
 21:55:27 50s since xrun 12 
 21:56:27 60s since xrun 13 
 21:57:27 60s since xrun 14 
 21:58:17 50s since xrun 15 
 21:59:16 59s since xrun 16 
 22:00:06 50s since xrun 17 
 22:00:56 50s since xrun 18 
 ...

If I count the URB numbers (sorry, I'm shaky on the terminology, but I'm
counting each URB which is retired) I often (but not always) see the same
number of URBs passing between xrun bursts. Currently at 64 frames/5
periods, it's often exactly 50042 or 49923 urbs between bursts.

The delay between starting Jack and encountering the first burst is not
predictable -- it's not just a whole cycle -- but stopping jack for e.g 30s
then starting again delays the next burst by the same amount. So it does seem
related to something in the audio streaming rather than anything else going on
on the system interfering. It's as if something is slowly slipping out of sync
between the Wing and the kernel until they need to resync, but I don't really
know enough about USB to have any deeper insight.

All the tests above happen to be at 44.1kHz with the Wing set to 48 in,
48 out, but changing to 48kHz or 2/2 IO doesn't seem to cure anything.

One more data point which may not be relevant: if I switch off or unplug
the Wing while Jack is running, the system gradually locks up over a period of
a few seconds. I can get something out of the console briefly afterwards but
within about ten seconds it's completely unresponsive. I imagine that pulling
out a USB device from a realtime thread isn't a kind thing to do, but I don't
recall this happening with other interfaces.

Any help or insights into where I should be looking (I'm a newbie in kernel
space) appreciated. If someone wants remote access to the box to investigate
in realtime we could probably figure something out.

bjb



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

* Re: Behringer WING usb audio - cyclic xruns dependent on periods/buffers
  2020-11-26 18:06 Behringer WING usb audio - cyclic xruns dependent on periods/buffers Ben Bell
@ 2020-11-27  9:20 ` Takashi Iwai
  2020-11-28  9:36   ` Ben Bell
  0 siblings, 1 reply; 9+ messages in thread
From: Takashi Iwai @ 2020-11-27  9:20 UTC (permalink / raw)
  To: Ben Bell; +Cc: alsa-devel

On Thu, 26 Nov 2020 19:06:04 +0100,
Ben Bell wrote:
> 
> I've got a Behringer WING digital mixer which is equipped with a USB
> interface supporting 48 in, 48 out at 44.1 or 48kHz. It's plugged into a
> USB3 interface and for the most part it seems to work well as a class-compliant
> audio interface, but I'm struggling to eliminate xruns and it's starting to
> feel either driver or hardware quirk related issue.
> 
> I've done all the usual things -- I'm running a PREEMPT_RT kernel, set up
> the realtime priorities of Jack and the relevant USB IRQ to no avail. I'm
> doing most of the debugging remotely over ssh with X shutdown and most
> other processes on the system stopped. There's nothing plugged into the
> computer beyond network, keyboard, mouse and the audio interface.
> 
> I'm currently testing on kernel 5.10.0-rc5 with preempt-rt patches, but I've
> previously seen the same things on 5.4-rt (Debian backports) and 5.8
> (self-compiled).
> 
> The xruns are characterised by bursts of "retire_capture_urb" warnings in
> the kernel logs (and in particular the frame status for everything in those
> URBs is EXDEV, meaning I think that the frames haven't been consumed by the
> time it's retired). I've patched sound/driver/pcm.c to provide me with a bit
> more debugging information and it looks like usually it's almost always
> between 7-10 consecutive calls to retire_capture_urb that are affected.
> 
> The bursts of retire_capture_urb warnings seem roughly cyclic, with a
> cycle time that is dependent on the combination of the frames/period setting
> and the number of periods per buffer, though it doesn't appear to be a
> strictly linear thing: 512/2 (~170s cycle); 256/2 (~94s); 128/3 (~65s);
> 64/13 (~270s). I can't immediately see any definitive smoking gun in the urb
> or interrupt counts, but there is some grouping in the timings between
> the xruns. Taking 64 frames, 5 periods, it's usually 50s, but sometimes 60s:
> 
>  21:47:57 50s since xrun 4 
>  21:48:47 50s since xrun 5 
>  21:49:46 59s since xrun 6 
>  21:50:46 60s since xrun 7 
>  21:51:36 50s since xrun 8 
>  21:52:36 60s since xrun 9 
>  21:53:36 60s since xrun 10 
>  21:54:37 61s since xrun 11 
>  21:55:27 50s since xrun 12 
>  21:56:27 60s since xrun 13 
>  21:57:27 60s since xrun 14 
>  21:58:17 50s since xrun 15 
>  21:59:16 59s since xrun 16 
>  22:00:06 50s since xrun 17 
>  22:00:56 50s since xrun 18 
>  ...
> 
> If I count the URB numbers (sorry, I'm shaky on the terminology, but I'm
> counting each URB which is retired) I often (but not always) see the same
> number of URBs passing between xrun bursts. Currently at 64 frames/5
> periods, it's often exactly 50042 or 49923 urbs between bursts.
> 
> The delay between starting Jack and encountering the first burst is not
> predictable -- it's not just a whole cycle -- but stopping jack for e.g 30s
> then starting again delays the next burst by the same amount. So it does seem
> related to something in the audio streaming rather than anything else going on
> on the system interfering. It's as if something is slowly slipping out of sync
> between the Wing and the kernel until they need to resync, but I don't really
> know enough about USB to have any deeper insight.
> 
> All the tests above happen to be at 44.1kHz with the Wing set to 48 in,
> 48 out, but changing to 48kHz or 2/2 IO doesn't seem to cure anything.
> 
> One more data point which may not be relevant: if I switch off or unplug
> the Wing while Jack is running, the system gradually locks up over a period of
> a few seconds. I can get something out of the console briefly afterwards but
> within about ten seconds it's completely unresponsive. I imagine that pulling
> out a USB device from a realtime thread isn't a kind thing to do, but I don't
> recall this happening with other interfaces.
> 
> Any help or insights into where I should be looking (I'm a newbie in kernel
> space) appreciated. If someone wants remote access to the box to investigate
> in realtime we could probably figure something out.

In general you should avoid 44.1kHz if you want a small period size
for a realtime process on USB-audio.  With 44.1kHz, the packet size
can't be fixed in integer, and the ISO transfer requires variable
packet sizes.  OTOH, ALSA API requires the fixed period size, hence
it'll lead to inconsistencies occasionally.


Takashi

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

* Re: Behringer WING usb audio - cyclic xruns dependent on periods/buffers
  2020-11-27  9:20 ` Takashi Iwai
@ 2020-11-28  9:36   ` Ben Bell
  2020-12-03 20:06     ` Ben Bell
       [not found]     ` <20201203200633.CC66A2C16F@relay2.suse.de>
  0 siblings, 2 replies; 9+ messages in thread
From: Ben Bell @ 2020-11-28  9:36 UTC (permalink / raw)
  To: Takashi Iwai, alsa-devel

On Fri, Nov 27, 2020 at 10:20:59AM +0100, Takashi Iwai wrote:
> On Thu, 26 Nov 2020 19:06:04 +0100, Ben Bell wrote:
> > I've got a Behringer WING digital mixer which is equipped with a USB
> > interface supporting 48 in, 48 out at 44.1 or 48kHz. It's plugged into a
> > USB3 interface and for the most part it seems to work well as a class-compliant
> > audio interface, but I'm struggling to eliminate xruns and it's starting to
> > feel either driver or hardware quirk related issue.
...

> In general you should avoid 44.1kHz if you want a small period size
> for a realtime process on USB-audio.  With 44.1kHz, the packet size
> can't be fixed in integer, and the ISO transfer requires variable
> packet sizes.  OTOH, ALSA API requires the fixed period size, hence
> it'll lead to inconsistencies occasionally.

Thanks Takashi, that's useful to know. Most of my historical projects are
at 44.1kHz which is why I'm using that here, but I'll try to switch to 48kHz
in future work to avoid this. That said, I've tested a little with 48kHz and
had similar problems. I'm currently encountering a period of relative
stability (an xrun every 20 minutes or so) so I don't want to touch anything
until I've got some recording out of the way, but I'll switch to 48kHz for
future testing too.

I've read people saying there are problems with USB3 and audio which go
away when they switch to USB 2, so I've got a card in the post so we'll see
whether that helps.

In the meantime, I've enabled xhci_hcd dynamic debugging and the xruns
all coincide with events like this. I'm wondering whether this is actually
more of a USB host issue rather than an ALSA one?

      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: Cancel URB 00000000d9d39c02, dev 4, ep 0x81, starting at offset 0xcfbNNNNN
      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: // Ding dong!
      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: Cancel URB 000000001152b022, dev 4, ep 0x81, starting at offset 0xcfbNNNNN
      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: Cancel URB 00000000aad0b004, dev 4, ep 0x81, starting at offset 0xcfbNNNNN
      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: Cancel URB 00000000014bb8b3, dev 4, ep 0x81, starting at offset 0xcfbNNNNN
      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: Cancel URB 0000000058d3a525, dev 4, ep 0x81, starting at offset 0xcfbNNNNN
      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: Cancel URB 00000000095e4d66, dev 4, ep 0x81, starting at offset 0xcfbNNNNN
      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: Cancel URB 00000000c5233f07, dev 4, ep 0x81, starting at offset 0xcfbNNNNN
      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: Cancel URB 0000000058cfb2b9, dev 4, ep 0x81, starting at offset 0xcfbNNNNN
      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: Cancel URB 00000000ecf776e8, dev 4, ep 0x81, starting at offset 0xcfbNNNNN
      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: Cancel URB 0000000090c79b8f, dev 4, ep 0x81, starting at offset 0xcfbNNNNN
      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: Cancel URB 00000000ad358790, dev 4, ep 0x81, starting at offset 0xcfbNNNNN
      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: Cancel URB 000000008f26c7ed, dev 4, ep 0x1, starting at offset 0xcfbNNNNN
      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: // Ding dong!
      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: Cancel URB 0000000020b0a760, dev 4, ep 0x1, starting at offset 0xcfbNNNNN
      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: Stopped on Transfer TRB for slot 1 ep 2
      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: Removing canceled TD starting at 0xcfbNNNNN (dma).
      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: Finding endpoint context
      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: Cycle state = 0x1
      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: New dequeue segment = 000000009fc8e305 (virtual)
      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: New dequeue pointer = 0xcfbNNNNN (DMA)
     84 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: Removing canceled TD starting at 0xcfbNNNNN (dma).
      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: Set TR Deq Ptr cmd, new deq seg = 000000009fc8e305 (0xcfbNNNNN dma), new deq ptr = 00000000cfc75f63 (0xcfb42440 dma), new cycle = 1
      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: // Ding dong!
      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: Stopped on Transfer TRB for slot 1 ep 1
     38 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: Removing canceled TD starting at 0xcfbNNNNN (dma).
      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: Finding endpoint context
      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: Cycle state = 0x0
      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: New dequeue segment = 0000000070effd6e (virtual)
      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: New dequeue pointer = 0xcfbNNNNN (DMA)
     29 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: Removing canceled TD starting at 0xcfbNNNNN (dma).
      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: Set TR Deq Ptr cmd, new deq seg = 0000000070effd6e (0xcfbNNNNN dma), new deq ptr = 0000000034521cdf (0xcfb77180 dma), new cycle = 0
      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: // Ding dong!
      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: Successful Set TR Deq Ptr cmd, deq = @cfb42440
      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: Successful Set TR Deq Ptr cmd, deq = @cfb77180
     32 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: Miss service interval error for slot 1 ep 2, set skip flag
      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: Found td. Clear skip flag for slot 1 ep 2.
      1 Nov 28 09:12:32 rowlf kernel: [nnn] retire_capture_urb: frames 0 - 7 of [138046467] still active: -18
      1 Nov 28 09:12:32 rowlf kernel: [nnn] retire_capture_urb: ...a total of 4 bad urbs; between [138046467] and [138046470]; kxrun = 238; 1120718 since last
     41 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: Miss service interval error for slot 1 ep 1, set skip flag
      1 Nov 28 09:12:32 rowlf kernel: [nnn] xhci_hcd 0000:29:00.3: Found td. Clear skip flag for slot 1 ep 1.

(First column is a dedup count, and the retire_capture_urb messages are my
own debug patch)

bjb



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

* Re: Behringer WING usb audio - cyclic xruns dependent on periods/buffers
  2020-11-28  9:36   ` Ben Bell
@ 2020-12-03 20:06     ` Ben Bell
       [not found]     ` <20201203200633.CC66A2C16F@relay2.suse.de>
  1 sibling, 0 replies; 9+ messages in thread
From: Ben Bell @ 2020-12-03 20:06 UTC (permalink / raw)
  To: Takashi Iwai, alsa-devel

On Sat, Nov 28, 2020 at 09:36:00AM +0000, Ben Bell wrote:
> > In general you should avoid 44.1kHz if you want a small period size
> > for a realtime process on USB-audio.  With 44.1kHz, the packet size
> > can't be fixed in integer, and the ISO transfer requires variable
> > packet sizes.  OTOH, ALSA API requires the fixed period size, hence
> > it'll lead to inconsistencies occasionally.

So changing to 48kHz had no appreciable effect, but I'm working at that
rate for now to eliminate the 44.1kHz weirdness from investigations.
Using a USB2 card, also had no effect. Testing with a different USB audio
interface (albeit a simple stereo one) didn't exhibit the behaviour, even
when I took buffer sizes right down.

I'm not sure where to go to get more information or where's the best place
to ask for help. I'm happy to do the leg work, but I don't know enough
about the kernel, alsa or USB to figure it out without some help.

Current question: what is the delay in /proc/asound/card1/pcm0c/sub0/status
actually measuring? I'm assuming it's measured in samples? I've written
something to scrape the stats out in a tight loop and report.

What I see is a cycle where the delay rises and then a chunk equal to the
frames per period (or sometimes, earlier on fpp-48) is removed. That feels
like chunks being read out of a buffer. All fine.

After a while though, the maximum delay we reach with each cycle is creeping
up. It increases by one every few cycles (usually two or three, or three or
four -- always oscillating between two values) but of it's still only being
emptied by a full period's worth of samples each cycle. So the overall effect
is the delay creeps up and up until it hits the buffer size and then we get
an xrun.

Like I said in the initial email, it feels like some sort of clock drift
problem, where we're managing very slowly to collect more samples than
we're reading -- to the tune of about 1 extra every few cycles -- and
nothing on the consumer side is ever managing to compensate for that.
I'm not even sure how that sort of drift would be possible though. Seems
surprising.

Does any of this sound suspicious, or for that matter completely normal?
Any suggestions where should I be looking next?

bjb




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

* Re: Behringer WING usb audio - cyclic xruns dependent on periods/buffers
       [not found]     ` <20201203200633.CC66A2C16F@relay2.suse.de>
@ 2020-12-04  8:04       ` Takashi Iwai
  2020-12-05 14:43         ` Ben Bell
       [not found]         ` <20201205144406.854292C16C@relay2.suse.de>
  0 siblings, 2 replies; 9+ messages in thread
From: Takashi Iwai @ 2020-12-04  8:04 UTC (permalink / raw)
  To: Ben Bell; +Cc: alsa-devel

On Thu, 03 Dec 2020 21:06:24 +0100,
Ben Bell wrote:
> 
> On Sat, Nov 28, 2020 at 09:36:00AM +0000, Ben Bell wrote:
> > > In general you should avoid 44.1kHz if you want a small period size
> > > for a realtime process on USB-audio.  With 44.1kHz, the packet size
> > > can't be fixed in integer, and the ISO transfer requires variable
> > > packet sizes.  OTOH, ALSA API requires the fixed period size, hence
> > > it'll lead to inconsistencies occasionally.
> 
> So changing to 48kHz had no appreciable effect, but I'm working at that
> rate for now to eliminate the 44.1kHz weirdness from investigations.
> Using a USB2 card, also had no effect. Testing with a different USB audio
> interface (albeit a simple stereo one) didn't exhibit the behaviour, even
> when I took buffer sizes right down.
> 
> I'm not sure where to go to get more information or where's the best place
> to ask for help. I'm happy to do the leg work, but I don't know enough
> about the kernel, alsa or USB to figure it out without some help.
> 
> Current question: what is the delay in /proc/asound/card1/pcm0c/sub0/status
> actually measuring? I'm assuming it's measured in samples? I've written
> something to scrape the stats out in a tight loop and report.
> 
> What I see is a cycle where the delay rises and then a chunk equal to the
> frames per period (or sometimes, earlier on fpp-48) is removed. That feels
> like chunks being read out of a buffer. All fine.
> 
> After a while though, the maximum delay we reach with each cycle is creeping
> up. It increases by one every few cycles (usually two or three, or three or
> four -- always oscillating between two values) but of it's still only being
> emptied by a full period's worth of samples each cycle. So the overall effect
> is the delay creeps up and up until it hits the buffer size and then we get
> an xrun.
> 
> Like I said in the initial email, it feels like some sort of clock drift
> problem, where we're managing very slowly to collect more samples than
> we're reading -- to the tune of about 1 extra every few cycles -- and
> nothing on the consumer side is ever managing to compensate for that.
> I'm not even sure how that sort of drift would be possible though. Seems
> surprising.
> 
> Does any of this sound suspicious, or for that matter completely normal?
> Any suggestions where should I be looking next?

At least you can try the latest patch set destined for 5.11, which
should improve the cases for the implicit feedback.

The patches are either in linux-next tree or the
topic/usb-audio-refactoring branch of my sound.git tree.
It's based on 5.10-rc, so should be cleanly mergeable to the latest
Linus tree.


Takashi

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

* Re: Behringer WING usb audio - cyclic xruns dependent on periods/buffers
  2020-12-04  8:04       ` Takashi Iwai
@ 2020-12-05 14:43         ` Ben Bell
       [not found]         ` <20201205144406.854292C16C@relay2.suse.de>
  1 sibling, 0 replies; 9+ messages in thread
From: Ben Bell @ 2020-12-05 14:43 UTC (permalink / raw)
  To: Takashi Iwai, alsa-devel

> > Like I said in the initial email, it feels like some sort of clock drift
> > problem, where we're managing very slowly to collect more samples than
> > we're reading -- to the tune of about 1 extra every few cycles -- and
> > nothing on the consumer side is ever managing to compensate for that.
> > I'm not even sure how that sort of drift would be possible though. Seems
> > surprising.
[...]

> At least you can try the latest patch set destined for 5.11, which
> should improve the cases for the implicit feedback.

Aha! This actually was the key piece of information I needed. I haven't
tried 5.11 or the latest patch set yet, but googling "implicit feedback"
and learning abobut it led me to conclude that the Wing needs an entry in
the quirks list in set_sync_ep_implicit_fb_quirk to properly enable it:

--- sound/usb/pcm.c.orig        2020-11-22 23:36:08.000000000 +0000
+++ sound/usb/pcm.c     2020-12-05 08:40:21.639600074 +0000
@@ -340,6 +345,7 @@
                ep = 0x81;
                ifnum = 3;
                goto add_sync_ep_from_ifnum;
+       case USB_ID(0x1397, 0x050b): /* Behringer Wing */
        case USB_ID(0x0763, 0x2080): /* M-Audio FastTrack Ultra */
        case USB_ID(0x0763, 0x2081):


A week's worth of debugging and learning yielded a one line patch ;)

Since adding that I've been running at p=128 n=2 for much of the day with
no tweaking of interrupts, and no xruns at all (and at 44.1kHz, because that's
what this project was originally recorded at). With further tuning that might
come down further because I was able to run in Capture Only at p=8(!) n=2, so
it feels like there's still scope for more tweaking.

Thanks for the help,
bjb



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

* Re: Behringer WING usb audio - cyclic xruns dependent on periods/buffers
       [not found]         ` <20201205144406.854292C16C@relay2.suse.de>
@ 2020-12-08 13:30           ` Takashi Iwai
  2020-12-09 12:16             ` Ben Bell
       [not found]             ` <20201209121634.8B72A2C1D1@relay2.suse.de>
  0 siblings, 2 replies; 9+ messages in thread
From: Takashi Iwai @ 2020-12-08 13:30 UTC (permalink / raw)
  To: Ben Bell; +Cc: alsa-devel

On Sat, 05 Dec 2020 15:43:56 +0100,
Ben Bell wrote:
> 
> > > Like I said in the initial email, it feels like some sort of clock drift
> > > problem, where we're managing very slowly to collect more samples than
> > > we're reading -- to the tune of about 1 extra every few cycles -- and
> > > nothing on the consumer side is ever managing to compensate for that.
> > > I'm not even sure how that sort of drift would be possible though. Seems
> > > surprising.
> [...]
> 
> > At least you can try the latest patch set destined for 5.11, which
> > should improve the cases for the implicit feedback.
> 
> Aha! This actually was the key piece of information I needed. I haven't
> tried 5.11 or the latest patch set yet, but googling "implicit feedback"
> and learning abobut it led me to conclude that the Wing needs an entry in
> the quirks list in set_sync_ep_implicit_fb_quirk to properly enable it:
> 
> --- sound/usb/pcm.c.orig        2020-11-22 23:36:08.000000000 +0000
> +++ sound/usb/pcm.c     2020-12-05 08:40:21.639600074 +0000
> @@ -340,6 +345,7 @@
>                 ep = 0x81;
>                 ifnum = 3;
>                 goto add_sync_ep_from_ifnum;
> +       case USB_ID(0x1397, 0x050b): /* Behringer Wing */
>         case USB_ID(0x0763, 0x2080): /* M-Audio FastTrack Ultra */
>         case USB_ID(0x0763, 0x2081):
> 
> 
> A week's worth of debugging and learning yielded a one line patch ;)

That's a interesting piece of information :)

Could you give lsusb -v output of the device?  With the latest patch
set, the driver can set up the implicit feedback mode automatically in
certain cases.  I'm not sure whether Behringer device follows that
pattern.  If not, we'd need to add the quirk manually.


thanks,

Takashi

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

* Re: Behringer WING usb audio - cyclic xruns dependent on periods/buffers
  2020-12-08 13:30           ` Takashi Iwai
@ 2020-12-09 12:16             ` Ben Bell
       [not found]             ` <20201209121634.8B72A2C1D1@relay2.suse.de>
  1 sibling, 0 replies; 9+ messages in thread
From: Ben Bell @ 2020-12-09 12:16 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel

[-- Attachment #1: Type: text/plain, Size: 1198 bytes --]

[...]
> > and learning abobut it led me to conclude that the Wing needs an entry in
> > the quirks list in set_sync_ep_implicit_fb_quirk to properly enable it:
> > 
> > --- sound/usb/pcm.c.orig        2020-11-22 23:36:08.000000000 +0000
> > +++ sound/usb/pcm.c     2020-12-05 08:40:21.639600074 +0000
> > @@ -340,6 +345,7 @@
> >                 ep = 0x81;
> >                 ifnum = 3;
> >                 goto add_sync_ep_from_ifnum;
> > +       case USB_ID(0x1397, 0x050b): /* Behringer Wing */
> >         case USB_ID(0x0763, 0x2080): /* M-Audio FastTrack Ultra */
> >         case USB_ID(0x0763, 0x2081):
> > 
> > A week's worth of debugging and learning yielded a one line patch ;)
> 
> That's a interesting piece of information :)
> 
> Could you give lsusb -v output of the device?  With the latest patch
> set, the driver can set up the implicit feedback mode automatically in
> certain cases.  I'm not sure whether Behringer device follows that
> pattern.  If not, we'd need to add the quirk manually.

I did wonder whether it was possible to automate this, as all I did
was looked out the endpoint with the Implicit Feedback flag set.
Fingers crossed it'll work.

Output attached.

bjb



[-- Attachment #2: behringer-wing-1397-050b-lsusb.txt --]
[-- Type: text/plain, Size: 40928 bytes --]


Bus 009 Device 005: ID 1397:050b BEHRINGER International GmbH 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          239 Miscellaneous Device
  bDeviceSubClass         2 
  bDeviceProtocol         1 Interface Association
  bMaxPacketSize0        64
  idVendor           0x1397 BEHRINGER International GmbH
  idProduct          0x050b 
  bcdDevice            1.02
  iManufacturer           1 BEHRINGER
  iProduct                3 WING
  iSerial                 2 WING-PP-09110504
  bNumConfigurations      2
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0323
    bNumInterfaces          5
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xc0
      Self Powered
    MaxPower                0mA
    Interface Association:
      bLength                 8
      bDescriptorType        11
      bFirstInterface         0
      bInterfaceCount         3
      bFunctionClass          1 Audio
      bFunctionSubClass       0 
      bFunctionProtocol      32 
      iFunction               0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      1 Control Device
      bInterfaceProtocol     32 
      iInterface              3 WING
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdADC               2.00
        bCategory               8
        wTotalLength       0x01df
        bmControls           0x00
      AudioControl Interface Descriptor:
        bLength                 8
        bDescriptorType        36
        bDescriptorSubtype     10 (CLOCK_SOURCE)
        bClockID               41
        bmAttributes            1 Internal fixed clock 
        bmControls           0x07
          Clock Frequency Control (read/write)
          Clock Validity Control (read-only)
        bAssocTerminal          0
        iClockSource            9 WING Internal Clock
      AudioControl Interface Descriptor:
        bLength                17
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             2
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bCSourceID             41
        bNrChannels            48
        bmChannelConfig    0x00000000
        iChannelNames          18 Out 1
        bmControls         0x0000
        iTerminal               6 WING Output
      AudioControl Interface Descriptor:
        bLength               202
        bDescriptorType        36
        bDescriptorSubtype      6 (FEATURE_UNIT)
        bUnitID                10
        bSourceID               2
        bmaControls(0)    0x00000000
        bmaControls(1)    0x00000000
        bmaControls(2)    0x00000000
        bmaControls(3)    0x00000000
        bmaControls(4)    0x00000000
        bmaControls(5)    0x00000000
        bmaControls(6)    0x00000000
        bmaControls(7)    0x00000000
        bmaControls(8)    0x00000000
        bmaControls(9)    0x00000000
        bmaControls(10)    0x00000000
        bmaControls(11)    0x00000000
        bmaControls(12)    0x00000000
        bmaControls(13)    0x00000000
        bmaControls(14)    0x00000000
        bmaControls(15)    0x00000000
        bmaControls(16)    0x00000000
        bmaControls(17)    0x00000000
        bmaControls(18)    0x00000000
        bmaControls(19)    0x00000000
        bmaControls(20)    0x00000000
        bmaControls(21)    0x00000000
        bmaControls(22)    0x00000000
        bmaControls(23)    0x00000000
        bmaControls(24)    0x00000000
        bmaControls(25)    0x00000000
        bmaControls(26)    0x00000000
        bmaControls(27)    0x00000000
        bmaControls(28)    0x00000000
        bmaControls(29)    0x00000000
        bmaControls(30)    0x00000000
        bmaControls(31)    0x00000000
        bmaControls(32)    0x00000000
        bmaControls(33)    0x00000000
        bmaControls(34)    0x00000000
        bmaControls(35)    0x00000000
        bmaControls(36)    0x00000000
        bmaControls(37)    0x00000000
        bmaControls(38)    0x00000000
        bmaControls(39)    0x00000000
        bmaControls(40)    0x00000000
        bmaControls(41)    0x00000000
        bmaControls(42)    0x00000000
        bmaControls(43)    0x00000000
        bmaControls(44)    0x00000000
        bmaControls(45)    0x00000000
        bmaControls(46)    0x00000000
        bmaControls(47)    0x00000000
        bmaControls(48)    0x00000000
        iFeature                0 
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID            20
        wTerminalType      0x0301 Speaker
        bAssocTerminal          0
        bSourceID              10
        bCSourceID             41
        bmControls         0x0000
        iTerminal               0 
      AudioControl Interface Descriptor:
        bLength                17
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             1
        wTerminalType      0x0201 Microphone
        bAssocTerminal          0
        bCSourceID             41
        bNrChannels            48
        bmChannelConfig    0x00000000
        iChannelNames          66 In 1
        bmControls         0x0000
        iTerminal               0 
      AudioControl Interface Descriptor:
        bLength               202
        bDescriptorType        36
        bDescriptorSubtype      6 (FEATURE_UNIT)
        bUnitID                11
        bSourceID               1
        bmaControls(0)    0x00000000
        bmaControls(1)    0x00000000
        bmaControls(2)    0x00000000
        bmaControls(3)    0x00000000
        bmaControls(4)    0x00000000
        bmaControls(5)    0x00000000
        bmaControls(6)    0x00000000
        bmaControls(7)    0x00000000
        bmaControls(8)    0x00000000
        bmaControls(9)    0x00000000
        bmaControls(10)    0x00000000
        bmaControls(11)    0x00000000
        bmaControls(12)    0x00000000
        bmaControls(13)    0x00000000
        bmaControls(14)    0x00000000
        bmaControls(15)    0x00000000
        bmaControls(16)    0x00000000
        bmaControls(17)    0x00000000
        bmaControls(18)    0x00000000
        bmaControls(19)    0x00000000
        bmaControls(20)    0x00000000
        bmaControls(21)    0x00000000
        bmaControls(22)    0x00000000
        bmaControls(23)    0x00000000
        bmaControls(24)    0x00000000
        bmaControls(25)    0x00000000
        bmaControls(26)    0x00000000
        bmaControls(27)    0x00000000
        bmaControls(28)    0x00000000
        bmaControls(29)    0x00000000
        bmaControls(30)    0x00000000
        bmaControls(31)    0x00000000
        bmaControls(32)    0x00000000
        bmaControls(33)    0x00000000
        bmaControls(34)    0x00000000
        bmaControls(35)    0x00000000
        bmaControls(36)    0x00000000
        bmaControls(37)    0x00000000
        bmaControls(38)    0x00000000
        bmaControls(39)    0x00000000
        bmaControls(40)    0x00000000
        bmaControls(41)    0x00000000
        bmaControls(42)    0x00000000
        bmaControls(43)    0x00000000
        bmaControls(44)    0x00000000
        bmaControls(45)    0x00000000
        bmaControls(46)    0x00000000
        bmaControls(47)    0x00000000
        bmaControls(48)    0x00000000
        iFeature                0 
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID            22
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bSourceID              11
        bCSourceID             41
        bmControls         0x0000
        iTerminal               7 WING Input
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol     32 
      iInterface              4 WING Output Terminal
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol     32 
      iInterface              4 WING Output Terminal
      AudioStreaming Interface Descriptor:
        bLength                16
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           2
        bmControls           0x00
        bFormatType             1
        bmFormats          0x00000001
          PCM
        bNrChannels            48
        bmChannelConfig    0x00000000
        iChannelNames          18 Out 1
      AudioStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bSubslotSize            3
        bBitResolution         24
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x03f0  1x 1008 bytes
        bInterval               1
        AudioStreaming Endpoint Descriptor:
          bLength                 8
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x00
          bmControls           0x00
          bLockDelayUnits         2 Decoded PCM samples
          wLockDelay         0x0008
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol     32 
      iInterface              5 WING Input Terminal
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol     32 
      iInterface              5 WING Input Terminal
      AudioStreaming Interface Descriptor:
        bLength                16
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink          22
        bmControls           0x00
        bFormatType             1
        bmFormats          0x00000001
          PCM
        bNrChannels            48
        bmChannelConfig    0x00000000
        iChannelNames          66 In 1
      AudioStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bSubslotSize            3
        bBitResolution         24
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes           37
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Implicit feedback Data
        wMaxPacketSize     0x03f0  1x 1008 bytes
        bInterval               1
        AudioStreaming Endpoint Descriptor:
          bLength                 8
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x00
          bmControls           0x00
          bLockDelayUnits         2 Decoded PCM samples
          wLockDelay         0x0008
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      1 Control Device
      bInterfaceProtocol      0 
      iInterface              0 
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdADC               1.00
        wTotalLength       0x0009
        bInCollection           1
        baInterfaceNr(0)        1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        4
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         1 Audio
      bInterfaceSubClass      3 MIDI Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      MIDIStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdADC               1.00
        wTotalLength       0x00a1
      MIDIStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (MIDI_IN_JACK)
        bJackType               1 Embedded
        bJackID                 1
        iJack                   0 
      MIDIStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (MIDI_IN_JACK)
        bJackType               2 External
        bJackID                25
        iJack                  11 WING MIDI DAW 1
      MIDIStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (MIDI_IN_JACK)
        bJackType               1 Embedded
        bJackID                 2
        iJack                   0 
      MIDIStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (MIDI_IN_JACK)
        bJackType               2 External
        bJackID                26
        iJack                  13 WING MIDI DAW 2
      MIDIStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (MIDI_IN_JACK)
        bJackType               1 Embedded
        bJackID                 3
        iJack                   0 
      MIDIStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (MIDI_IN_JACK)
        bJackType               2 External
        bJackID                27
        iJack                  15 WING MIDI DAW 3
      MIDIStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (MIDI_IN_JACK)
        bJackType               1 Embedded
        bJackID                 4
        iJack                   0 
      MIDIStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (MIDI_IN_JACK)
        bJackType               2 External
        bJackID                28
        iJack                  17 WING MIDI Control
      MIDIStreaming Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (MIDI_OUT_JACK)
        bJackType               1 Embedded
        bJackID                 9
        bNrInputPins            1
        baSourceID( 0)         25
        BaSourcePin( 0)         1
        iJack                   0 
      MIDIStreaming Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (MIDI_OUT_JACK)
        bJackType               2 External
        bJackID                17
        bNrInputPins            1
        baSourceID( 0)          1
        BaSourcePin( 0)         1
        iJack                  10 WING MIDI DAW 1
      MIDIStreaming Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (MIDI_OUT_JACK)
        bJackType               1 Embedded
        bJackID                10
        bNrInputPins            1
        baSourceID( 0)         26
        BaSourcePin( 0)         1
        iJack                   0 
      MIDIStreaming Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (MIDI_OUT_JACK)
        bJackType               2 External
        bJackID                18
        bNrInputPins            1
        baSourceID( 0)          2
        BaSourcePin( 0)         1
        iJack                  12 WING MIDI DAW 2
      MIDIStreaming Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (MIDI_OUT_JACK)
        bJackType               1 Embedded
        bJackID                11
        bNrInputPins            1
        baSourceID( 0)         27
        BaSourcePin( 0)         1
        iJack                   0 
      MIDIStreaming Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (MIDI_OUT_JACK)
        bJackType               2 External
        bJackID                19
        bNrInputPins            1
        baSourceID( 0)          3
        BaSourcePin( 0)         1
        iJack                  14 WING MIDI DAW 3
      MIDIStreaming Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (MIDI_OUT_JACK)
        bJackType               1 Embedded
        bJackID                12
        bNrInputPins            1
        baSourceID( 0)         28
        BaSourcePin( 0)         1
        iJack                   0 
      MIDIStreaming Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (MIDI_OUT_JACK)
        bJackType               2 External
        bJackID                20
        bNrInputPins            1
        baSourceID( 0)          4
        BaSourcePin( 0)         1
        iJack                  16 WING MIDI Control
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
        bRefresh                0
        bSynchAddress           0
        MIDIStreaming Endpoint Descriptor:
          bLength                 8
          bDescriptorType        37
          bDescriptorSubtype      1 (GENERAL)
          bNumEmbMIDIJack         4
          baAssocJackID( 0)       1
          baAssocJackID( 1)       2
          baAssocJackID( 2)       3
          baAssocJackID( 3)       4
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
        bRefresh                0
        bSynchAddress           0
        MIDIStreaming Endpoint Descriptor:
          bLength                 8
          bDescriptorType        37
          bDescriptorSubtype      1 (GENERAL)
          bNumEmbMIDIJack         4
          baAssocJackID( 0)       9
          baAssocJackID( 1)      10
          baAssocJackID( 2)      11
          baAssocJackID( 3)      12
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0323
    bNumInterfaces          5
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xc0
      Self Powered
    MaxPower                0mA
    Interface Association:
      bLength                 8
      bDescriptorType        11
      bFirstInterface         0
      bInterfaceCount         3
      bFunctionClass          1 Audio
      bFunctionSubClass       0 
      bFunctionProtocol      32 
      iFunction               0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      1 Control Device
      bInterfaceProtocol     32 
      iInterface              3 WING
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdADC               2.00
        bCategory               8
        wTotalLength       0x01df
        bmControls           0x00
      AudioControl Interface Descriptor:
        bLength                 8
        bDescriptorType        36
        bDescriptorSubtype     10 (CLOCK_SOURCE)
        bClockID               41
        bmAttributes            1 Internal fixed clock 
        bmControls           0x07
          Clock Frequency Control (read/write)
          Clock Validity Control (read-only)
        bAssocTerminal          0
        iClockSource            9 WING Internal Clock
      AudioControl Interface Descriptor:
        bLength                17
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             2
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bCSourceID             41
        bNrChannels            48
        bmChannelConfig    0x00000000
        iChannelNames          18 Out 1
        bmControls         0x0000
        iTerminal               6 WING Output
      AudioControl Interface Descriptor:
        bLength               202
        bDescriptorType        36
        bDescriptorSubtype      6 (FEATURE_UNIT)
        bUnitID                10
        bSourceID               2
        bmaControls(0)    0x00000000
        bmaControls(1)    0x00000000
        bmaControls(2)    0x00000000
        bmaControls(3)    0x00000000
        bmaControls(4)    0x00000000
        bmaControls(5)    0x00000000
        bmaControls(6)    0x00000000
        bmaControls(7)    0x00000000
        bmaControls(8)    0x00000000
        bmaControls(9)    0x00000000
        bmaControls(10)    0x00000000
        bmaControls(11)    0x00000000
        bmaControls(12)    0x00000000
        bmaControls(13)    0x00000000
        bmaControls(14)    0x00000000
        bmaControls(15)    0x00000000
        bmaControls(16)    0x00000000
        bmaControls(17)    0x00000000
        bmaControls(18)    0x00000000
        bmaControls(19)    0x00000000
        bmaControls(20)    0x00000000
        bmaControls(21)    0x00000000
        bmaControls(22)    0x00000000
        bmaControls(23)    0x00000000
        bmaControls(24)    0x00000000
        bmaControls(25)    0x00000000
        bmaControls(26)    0x00000000
        bmaControls(27)    0x00000000
        bmaControls(28)    0x00000000
        bmaControls(29)    0x00000000
        bmaControls(30)    0x00000000
        bmaControls(31)    0x00000000
        bmaControls(32)    0x00000000
        bmaControls(33)    0x00000000
        bmaControls(34)    0x00000000
        bmaControls(35)    0x00000000
        bmaControls(36)    0x00000000
        bmaControls(37)    0x00000000
        bmaControls(38)    0x00000000
        bmaControls(39)    0x00000000
        bmaControls(40)    0x00000000
        bmaControls(41)    0x00000000
        bmaControls(42)    0x00000000
        bmaControls(43)    0x00000000
        bmaControls(44)    0x00000000
        bmaControls(45)    0x00000000
        bmaControls(46)    0x00000000
        bmaControls(47)    0x00000000
        bmaControls(48)    0x00000000
        iFeature                0 
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID            20
        wTerminalType      0x0301 Speaker
        bAssocTerminal          0
        bSourceID              10
        bCSourceID             41
        bmControls         0x0000
        iTerminal               0 
      AudioControl Interface Descriptor:
        bLength                17
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             1
        wTerminalType      0x0201 Microphone
        bAssocTerminal          0
        bCSourceID             41
        bNrChannels            48
        bmChannelConfig    0x00000000
        iChannelNames          66 In 1
        bmControls         0x0000
        iTerminal               0 
      AudioControl Interface Descriptor:
        bLength               202
        bDescriptorType        36
        bDescriptorSubtype      6 (FEATURE_UNIT)
        bUnitID                11
        bSourceID               1
        bmaControls(0)    0x00000000
        bmaControls(1)    0x00000000
        bmaControls(2)    0x00000000
        bmaControls(3)    0x00000000
        bmaControls(4)    0x00000000
        bmaControls(5)    0x00000000
        bmaControls(6)    0x00000000
        bmaControls(7)    0x00000000
        bmaControls(8)    0x00000000
        bmaControls(9)    0x00000000
        bmaControls(10)    0x00000000
        bmaControls(11)    0x00000000
        bmaControls(12)    0x00000000
        bmaControls(13)    0x00000000
        bmaControls(14)    0x00000000
        bmaControls(15)    0x00000000
        bmaControls(16)    0x00000000
        bmaControls(17)    0x00000000
        bmaControls(18)    0x00000000
        bmaControls(19)    0x00000000
        bmaControls(20)    0x00000000
        bmaControls(21)    0x00000000
        bmaControls(22)    0x00000000
        bmaControls(23)    0x00000000
        bmaControls(24)    0x00000000
        bmaControls(25)    0x00000000
        bmaControls(26)    0x00000000
        bmaControls(27)    0x00000000
        bmaControls(28)    0x00000000
        bmaControls(29)    0x00000000
        bmaControls(30)    0x00000000
        bmaControls(31)    0x00000000
        bmaControls(32)    0x00000000
        bmaControls(33)    0x00000000
        bmaControls(34)    0x00000000
        bmaControls(35)    0x00000000
        bmaControls(36)    0x00000000
        bmaControls(37)    0x00000000
        bmaControls(38)    0x00000000
        bmaControls(39)    0x00000000
        bmaControls(40)    0x00000000
        bmaControls(41)    0x00000000
        bmaControls(42)    0x00000000
        bmaControls(43)    0x00000000
        bmaControls(44)    0x00000000
        bmaControls(45)    0x00000000
        bmaControls(46)    0x00000000
        bmaControls(47)    0x00000000
        bmaControls(48)    0x00000000
        iFeature                0 
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID            22
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bSourceID              11
        bCSourceID             41
        bmControls         0x0000
        iTerminal               7 WING Input
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol     32 
      iInterface              4 WING Output Terminal
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol     32 
      iInterface              4 WING Output Terminal
      AudioStreaming Interface Descriptor:
        bLength                16
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           2
        bmControls           0x00
        bFormatType             1
        bmFormats          0x00000001
          PCM
        bNrChannels            48
        bmChannelConfig    0x00000000
        iChannelNames          18 Out 1
      AudioStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bSubslotSize            3
        bBitResolution         24
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x03f0  1x 1008 bytes
        bInterval               1
        AudioStreaming Endpoint Descriptor:
          bLength                 8
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x00
          bmControls           0x00
          bLockDelayUnits         2 Decoded PCM samples
          wLockDelay         0x0008
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol     32 
      iInterface              5 WING Input Terminal
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol     32 
      iInterface              5 WING Input Terminal
      AudioStreaming Interface Descriptor:
        bLength                16
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink          22
        bmControls           0x00
        bFormatType             1
        bmFormats          0x00000001
          PCM
        bNrChannels            48
        bmChannelConfig    0x00000000
        iChannelNames          66 In 1
      AudioStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bSubslotSize            3
        bBitResolution         24
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes           37
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Implicit feedback Data
        wMaxPacketSize     0x03f0  1x 1008 bytes
        bInterval               1
        AudioStreaming Endpoint Descriptor:
          bLength                 8
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x00
          bmControls           0x00
          bLockDelayUnits         2 Decoded PCM samples
          wLockDelay         0x0008
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      1 Control Device
      bInterfaceProtocol      0 
      iInterface              0 
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdADC               1.00
        wTotalLength       0x0009
        bInCollection           1
        baInterfaceNr(0)        1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        4
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         1 Audio
      bInterfaceSubClass      3 MIDI Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      MIDIStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdADC               1.00
        wTotalLength       0x00a1
      MIDIStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (MIDI_IN_JACK)
        bJackType               1 Embedded
        bJackID                 1
        iJack                   0 
      MIDIStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (MIDI_IN_JACK)
        bJackType               2 External
        bJackID                25
        iJack                  11 WING MIDI DAW 1
      MIDIStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (MIDI_IN_JACK)
        bJackType               1 Embedded
        bJackID                 2
        iJack                   0 
      MIDIStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (MIDI_IN_JACK)
        bJackType               2 External
        bJackID                26
        iJack                  13 WING MIDI DAW 2
      MIDIStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (MIDI_IN_JACK)
        bJackType               1 Embedded
        bJackID                 3
        iJack                   0 
      MIDIStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (MIDI_IN_JACK)
        bJackType               2 External
        bJackID                27
        iJack                  15 WING MIDI DAW 3
      MIDIStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (MIDI_IN_JACK)
        bJackType               1 Embedded
        bJackID                 4
        iJack                   0 
      MIDIStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (MIDI_IN_JACK)
        bJackType               2 External
        bJackID                28
        iJack                  17 WING MIDI Control
      MIDIStreaming Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (MIDI_OUT_JACK)
        bJackType               1 Embedded
        bJackID                 9
        bNrInputPins            1
        baSourceID( 0)         25
        BaSourcePin( 0)         1
        iJack                   0 
      MIDIStreaming Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (MIDI_OUT_JACK)
        bJackType               2 External
        bJackID                17
        bNrInputPins            1
        baSourceID( 0)          1
        BaSourcePin( 0)         1
        iJack                  10 WING MIDI DAW 1
      MIDIStreaming Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (MIDI_OUT_JACK)
        bJackType               1 Embedded
        bJackID                10
        bNrInputPins            1
        baSourceID( 0)         26
        BaSourcePin( 0)         1
        iJack                   0 
      MIDIStreaming Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (MIDI_OUT_JACK)
        bJackType               2 External
        bJackID                18
        bNrInputPins            1
        baSourceID( 0)          2
        BaSourcePin( 0)         1
        iJack                  12 WING MIDI DAW 2
      MIDIStreaming Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (MIDI_OUT_JACK)
        bJackType               1 Embedded
        bJackID                11
        bNrInputPins            1
        baSourceID( 0)         27
        BaSourcePin( 0)         1
        iJack                   0 
      MIDIStreaming Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (MIDI_OUT_JACK)
        bJackType               2 External
        bJackID                19
        bNrInputPins            1
        baSourceID( 0)          3
        BaSourcePin( 0)         1
        iJack                  14 WING MIDI DAW 3
      MIDIStreaming Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (MIDI_OUT_JACK)
        bJackType               1 Embedded
        bJackID                12
        bNrInputPins            1
        baSourceID( 0)         28
        BaSourcePin( 0)         1
        iJack                   0 
      MIDIStreaming Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (MIDI_OUT_JACK)
        bJackType               2 External
        bJackID                20
        bNrInputPins            1
        baSourceID( 0)          4
        BaSourcePin( 0)         1
        iJack                  16 WING MIDI Control
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
        bRefresh                0
        bSynchAddress           0
        MIDIStreaming Endpoint Descriptor:
          bLength                 8
          bDescriptorType        37
          bDescriptorSubtype      1 (GENERAL)
          bNumEmbMIDIJack         4
          baAssocJackID( 0)       1
          baAssocJackID( 1)       2
          baAssocJackID( 2)       3
          baAssocJackID( 3)       4
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
        bRefresh                0
        bSynchAddress           0
        MIDIStreaming Endpoint Descriptor:
          bLength                 8
          bDescriptorType        37
          bDescriptorSubtype      1 (GENERAL)
          bNumEmbMIDIJack         4
          baAssocJackID( 0)       9
          baAssocJackID( 1)      10
          baAssocJackID( 2)      11
          baAssocJackID( 3)      12
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass            0 
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  bNumConfigurations      1
Device Status:     0x0001
  Self Powered

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

* Re: Behringer WING usb audio - cyclic xruns dependent on periods/buffers
       [not found]             ` <20201209121634.8B72A2C1D1@relay2.suse.de>
@ 2020-12-09 12:29               ` Takashi Iwai
  0 siblings, 0 replies; 9+ messages in thread
From: Takashi Iwai @ 2020-12-09 12:29 UTC (permalink / raw)
  To: Ben Bell; +Cc: alsa-devel

On Wed, 09 Dec 2020 13:16:23 +0100,
Ben Bell wrote:
> 
> [...]
> > > and learning abobut it led me to conclude that the Wing needs an entry in
> > > the quirks list in set_sync_ep_implicit_fb_quirk to properly enable it:
> > > 
> > > --- sound/usb/pcm.c.orig        2020-11-22 23:36:08.000000000 +0000
> > > +++ sound/usb/pcm.c     2020-12-05 08:40:21.639600074 +0000
> > > @@ -340,6 +345,7 @@
> > >                 ep = 0x81;
> > >                 ifnum = 3;
> > >                 goto add_sync_ep_from_ifnum;
> > > +       case USB_ID(0x1397, 0x050b): /* Behringer Wing */
> > >         case USB_ID(0x0763, 0x2080): /* M-Audio FastTrack Ultra */
> > >         case USB_ID(0x0763, 0x2081):
> > > 
> > > A week's worth of debugging and learning yielded a one line patch ;)
> > 
> > That's a interesting piece of information :)
> > 
> > Could you give lsusb -v output of the device?  With the latest patch
> > set, the driver can set up the implicit feedback mode automatically in
> > certain cases.  I'm not sure whether Behringer device follows that
> > pattern.  If not, we'd need to add the quirk manually.
> 
> I did wonder whether it was possible to automate this, as all I did
> was looked out the endpoint with the Implicit Feedback flag set.
> Fingers crossed it'll work.
> 
> Output attached.

Thanks.  Through a quick glance, this would work as is without
patching.  The implicit fb source EP is found in the next interface
with the same altset as the playback sink EP.

Let's cross fingers :)


Takashi

> 
> bjb
> 
> 
> 
> Bus 009 Device 005: ID 1397:050b BEHRINGER International GmbH 
> Device Descriptor:
>   bLength                18
>   bDescriptorType         1
>   bcdUSB               2.00
>   bDeviceClass          239 Miscellaneous Device
>   bDeviceSubClass         2 
>   bDeviceProtocol         1 Interface Association
>   bMaxPacketSize0        64
>   idVendor           0x1397 BEHRINGER International GmbH
>   idProduct          0x050b 
>   bcdDevice            1.02
>   iManufacturer           1 BEHRINGER
>   iProduct                3 WING
>   iSerial                 2 WING-PP-09110504
>   bNumConfigurations      2
>   Configuration Descriptor:
>     bLength                 9
>     bDescriptorType         2
>     wTotalLength       0x0323
>     bNumInterfaces          5
>     bConfigurationValue     1
>     iConfiguration          0 
>     bmAttributes         0xc0
>       Self Powered
>     MaxPower                0mA
>     Interface Association:
>       bLength                 8
>       bDescriptorType        11
>       bFirstInterface         0
>       bInterfaceCount         3
>       bFunctionClass          1 Audio
>       bFunctionSubClass       0 
>       bFunctionProtocol      32 
>       iFunction               0 
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        0
>       bAlternateSetting       0
>       bNumEndpoints           0
>       bInterfaceClass         1 Audio
>       bInterfaceSubClass      1 Control Device
>       bInterfaceProtocol     32 
>       iInterface              3 WING
>       AudioControl Interface Descriptor:
>         bLength                 9
>         bDescriptorType        36
>         bDescriptorSubtype      1 (HEADER)
>         bcdADC               2.00
>         bCategory               8
>         wTotalLength       0x01df
>         bmControls           0x00
>       AudioControl Interface Descriptor:
>         bLength                 8
>         bDescriptorType        36
>         bDescriptorSubtype     10 (CLOCK_SOURCE)
>         bClockID               41
>         bmAttributes            1 Internal fixed clock 
>         bmControls           0x07
>           Clock Frequency Control (read/write)
>           Clock Validity Control (read-only)
>         bAssocTerminal          0
>         iClockSource            9 WING Internal Clock
>       AudioControl Interface Descriptor:
>         bLength                17
>         bDescriptorType        36
>         bDescriptorSubtype      2 (INPUT_TERMINAL)
>         bTerminalID             2
>         wTerminalType      0x0101 USB Streaming
>         bAssocTerminal          0
>         bCSourceID             41
>         bNrChannels            48
>         bmChannelConfig    0x00000000
>         iChannelNames          18 Out 1
>         bmControls         0x0000
>         iTerminal               6 WING Output
>       AudioControl Interface Descriptor:
>         bLength               202
>         bDescriptorType        36
>         bDescriptorSubtype      6 (FEATURE_UNIT)
>         bUnitID                10
>         bSourceID               2
>         bmaControls(0)    0x00000000
>         bmaControls(1)    0x00000000
>         bmaControls(2)    0x00000000
>         bmaControls(3)    0x00000000
>         bmaControls(4)    0x00000000
>         bmaControls(5)    0x00000000
>         bmaControls(6)    0x00000000
>         bmaControls(7)    0x00000000
>         bmaControls(8)    0x00000000
>         bmaControls(9)    0x00000000
>         bmaControls(10)    0x00000000
>         bmaControls(11)    0x00000000
>         bmaControls(12)    0x00000000
>         bmaControls(13)    0x00000000
>         bmaControls(14)    0x00000000
>         bmaControls(15)    0x00000000
>         bmaControls(16)    0x00000000
>         bmaControls(17)    0x00000000
>         bmaControls(18)    0x00000000
>         bmaControls(19)    0x00000000
>         bmaControls(20)    0x00000000
>         bmaControls(21)    0x00000000
>         bmaControls(22)    0x00000000
>         bmaControls(23)    0x00000000
>         bmaControls(24)    0x00000000
>         bmaControls(25)    0x00000000
>         bmaControls(26)    0x00000000
>         bmaControls(27)    0x00000000
>         bmaControls(28)    0x00000000
>         bmaControls(29)    0x00000000
>         bmaControls(30)    0x00000000
>         bmaControls(31)    0x00000000
>         bmaControls(32)    0x00000000
>         bmaControls(33)    0x00000000
>         bmaControls(34)    0x00000000
>         bmaControls(35)    0x00000000
>         bmaControls(36)    0x00000000
>         bmaControls(37)    0x00000000
>         bmaControls(38)    0x00000000
>         bmaControls(39)    0x00000000
>         bmaControls(40)    0x00000000
>         bmaControls(41)    0x00000000
>         bmaControls(42)    0x00000000
>         bmaControls(43)    0x00000000
>         bmaControls(44)    0x00000000
>         bmaControls(45)    0x00000000
>         bmaControls(46)    0x00000000
>         bmaControls(47)    0x00000000
>         bmaControls(48)    0x00000000
>         iFeature                0 
>       AudioControl Interface Descriptor:
>         bLength                12
>         bDescriptorType        36
>         bDescriptorSubtype      3 (OUTPUT_TERMINAL)
>         bTerminalID            20
>         wTerminalType      0x0301 Speaker
>         bAssocTerminal          0
>         bSourceID              10
>         bCSourceID             41
>         bmControls         0x0000
>         iTerminal               0 
>       AudioControl Interface Descriptor:
>         bLength                17
>         bDescriptorType        36
>         bDescriptorSubtype      2 (INPUT_TERMINAL)
>         bTerminalID             1
>         wTerminalType      0x0201 Microphone
>         bAssocTerminal          0
>         bCSourceID             41
>         bNrChannels            48
>         bmChannelConfig    0x00000000
>         iChannelNames          66 In 1
>         bmControls         0x0000
>         iTerminal               0 
>       AudioControl Interface Descriptor:
>         bLength               202
>         bDescriptorType        36
>         bDescriptorSubtype      6 (FEATURE_UNIT)
>         bUnitID                11
>         bSourceID               1
>         bmaControls(0)    0x00000000
>         bmaControls(1)    0x00000000
>         bmaControls(2)    0x00000000
>         bmaControls(3)    0x00000000
>         bmaControls(4)    0x00000000
>         bmaControls(5)    0x00000000
>         bmaControls(6)    0x00000000
>         bmaControls(7)    0x00000000
>         bmaControls(8)    0x00000000
>         bmaControls(9)    0x00000000
>         bmaControls(10)    0x00000000
>         bmaControls(11)    0x00000000
>         bmaControls(12)    0x00000000
>         bmaControls(13)    0x00000000
>         bmaControls(14)    0x00000000
>         bmaControls(15)    0x00000000
>         bmaControls(16)    0x00000000
>         bmaControls(17)    0x00000000
>         bmaControls(18)    0x00000000
>         bmaControls(19)    0x00000000
>         bmaControls(20)    0x00000000
>         bmaControls(21)    0x00000000
>         bmaControls(22)    0x00000000
>         bmaControls(23)    0x00000000
>         bmaControls(24)    0x00000000
>         bmaControls(25)    0x00000000
>         bmaControls(26)    0x00000000
>         bmaControls(27)    0x00000000
>         bmaControls(28)    0x00000000
>         bmaControls(29)    0x00000000
>         bmaControls(30)    0x00000000
>         bmaControls(31)    0x00000000
>         bmaControls(32)    0x00000000
>         bmaControls(33)    0x00000000
>         bmaControls(34)    0x00000000
>         bmaControls(35)    0x00000000
>         bmaControls(36)    0x00000000
>         bmaControls(37)    0x00000000
>         bmaControls(38)    0x00000000
>         bmaControls(39)    0x00000000
>         bmaControls(40)    0x00000000
>         bmaControls(41)    0x00000000
>         bmaControls(42)    0x00000000
>         bmaControls(43)    0x00000000
>         bmaControls(44)    0x00000000
>         bmaControls(45)    0x00000000
>         bmaControls(46)    0x00000000
>         bmaControls(47)    0x00000000
>         bmaControls(48)    0x00000000
>         iFeature                0 
>       AudioControl Interface Descriptor:
>         bLength                12
>         bDescriptorType        36
>         bDescriptorSubtype      3 (OUTPUT_TERMINAL)
>         bTerminalID            22
>         wTerminalType      0x0101 USB Streaming
>         bAssocTerminal          0
>         bSourceID              11
>         bCSourceID             41
>         bmControls         0x0000
>         iTerminal               7 WING Input
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        1
>       bAlternateSetting       0
>       bNumEndpoints           0
>       bInterfaceClass         1 Audio
>       bInterfaceSubClass      2 Streaming
>       bInterfaceProtocol     32 
>       iInterface              4 WING Output Terminal
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        1
>       bAlternateSetting       1
>       bNumEndpoints           1
>       bInterfaceClass         1 Audio
>       bInterfaceSubClass      2 Streaming
>       bInterfaceProtocol     32 
>       iInterface              4 WING Output Terminal
>       AudioStreaming Interface Descriptor:
>         bLength                16
>         bDescriptorType        36
>         bDescriptorSubtype      1 (AS_GENERAL)
>         bTerminalLink           2
>         bmControls           0x00
>         bFormatType             1
>         bmFormats          0x00000001
>           PCM
>         bNrChannels            48
>         bmChannelConfig    0x00000000
>         iChannelNames          18 Out 1
>       AudioStreaming Interface Descriptor:
>         bLength                 6
>         bDescriptorType        36
>         bDescriptorSubtype      2 (FORMAT_TYPE)
>         bFormatType             1 (FORMAT_TYPE_I)
>         bSubslotSize            3
>         bBitResolution         24
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x01  EP 1 OUT
>         bmAttributes            5
>           Transfer Type            Isochronous
>           Synch Type               Asynchronous
>           Usage Type               Data
>         wMaxPacketSize     0x03f0  1x 1008 bytes
>         bInterval               1
>         AudioStreaming Endpoint Descriptor:
>           bLength                 8
>           bDescriptorType        37
>           bDescriptorSubtype      1 (EP_GENERAL)
>           bmAttributes         0x00
>           bmControls           0x00
>           bLockDelayUnits         2 Decoded PCM samples
>           wLockDelay         0x0008
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        2
>       bAlternateSetting       0
>       bNumEndpoints           0
>       bInterfaceClass         1 Audio
>       bInterfaceSubClass      2 Streaming
>       bInterfaceProtocol     32 
>       iInterface              5 WING Input Terminal
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        2
>       bAlternateSetting       1
>       bNumEndpoints           1
>       bInterfaceClass         1 Audio
>       bInterfaceSubClass      2 Streaming
>       bInterfaceProtocol     32 
>       iInterface              5 WING Input Terminal
>       AudioStreaming Interface Descriptor:
>         bLength                16
>         bDescriptorType        36
>         bDescriptorSubtype      1 (AS_GENERAL)
>         bTerminalLink          22
>         bmControls           0x00
>         bFormatType             1
>         bmFormats          0x00000001
>           PCM
>         bNrChannels            48
>         bmChannelConfig    0x00000000
>         iChannelNames          66 In 1
>       AudioStreaming Interface Descriptor:
>         bLength                 6
>         bDescriptorType        36
>         bDescriptorSubtype      2 (FORMAT_TYPE)
>         bFormatType             1 (FORMAT_TYPE_I)
>         bSubslotSize            3
>         bBitResolution         24
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x81  EP 1 IN
>         bmAttributes           37
>           Transfer Type            Isochronous
>           Synch Type               Asynchronous
>           Usage Type               Implicit feedback Data
>         wMaxPacketSize     0x03f0  1x 1008 bytes
>         bInterval               1
>         AudioStreaming Endpoint Descriptor:
>           bLength                 8
>           bDescriptorType        37
>           bDescriptorSubtype      1 (EP_GENERAL)
>           bmAttributes         0x00
>           bmControls           0x00
>           bLockDelayUnits         2 Decoded PCM samples
>           wLockDelay         0x0008
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        3
>       bAlternateSetting       0
>       bNumEndpoints           0
>       bInterfaceClass         1 Audio
>       bInterfaceSubClass      1 Control Device
>       bInterfaceProtocol      0 
>       iInterface              0 
>       AudioControl Interface Descriptor:
>         bLength                 9
>         bDescriptorType        36
>         bDescriptorSubtype      1 (HEADER)
>         bcdADC               1.00
>         wTotalLength       0x0009
>         bInCollection           1
>         baInterfaceNr(0)        1
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        4
>       bAlternateSetting       0
>       bNumEndpoints           2
>       bInterfaceClass         1 Audio
>       bInterfaceSubClass      3 MIDI Streaming
>       bInterfaceProtocol      0 
>       iInterface              0 
>       MIDIStreaming Interface Descriptor:
>         bLength                 7
>         bDescriptorType        36
>         bDescriptorSubtype      1 (HEADER)
>         bcdADC               1.00
>         wTotalLength       0x00a1
>       MIDIStreaming Interface Descriptor:
>         bLength                 6
>         bDescriptorType        36
>         bDescriptorSubtype      2 (MIDI_IN_JACK)
>         bJackType               1 Embedded
>         bJackID                 1
>         iJack                   0 
>       MIDIStreaming Interface Descriptor:
>         bLength                 6
>         bDescriptorType        36
>         bDescriptorSubtype      2 (MIDI_IN_JACK)
>         bJackType               2 External
>         bJackID                25
>         iJack                  11 WING MIDI DAW 1
>       MIDIStreaming Interface Descriptor:
>         bLength                 6
>         bDescriptorType        36
>         bDescriptorSubtype      2 (MIDI_IN_JACK)
>         bJackType               1 Embedded
>         bJackID                 2
>         iJack                   0 
>       MIDIStreaming Interface Descriptor:
>         bLength                 6
>         bDescriptorType        36
>         bDescriptorSubtype      2 (MIDI_IN_JACK)
>         bJackType               2 External
>         bJackID                26
>         iJack                  13 WING MIDI DAW 2
>       MIDIStreaming Interface Descriptor:
>         bLength                 6
>         bDescriptorType        36
>         bDescriptorSubtype      2 (MIDI_IN_JACK)
>         bJackType               1 Embedded
>         bJackID                 3
>         iJack                   0 
>       MIDIStreaming Interface Descriptor:
>         bLength                 6
>         bDescriptorType        36
>         bDescriptorSubtype      2 (MIDI_IN_JACK)
>         bJackType               2 External
>         bJackID                27
>         iJack                  15 WING MIDI DAW 3
>       MIDIStreaming Interface Descriptor:
>         bLength                 6
>         bDescriptorType        36
>         bDescriptorSubtype      2 (MIDI_IN_JACK)
>         bJackType               1 Embedded
>         bJackID                 4
>         iJack                   0 
>       MIDIStreaming Interface Descriptor:
>         bLength                 6
>         bDescriptorType        36
>         bDescriptorSubtype      2 (MIDI_IN_JACK)
>         bJackType               2 External
>         bJackID                28
>         iJack                  17 WING MIDI Control
>       MIDIStreaming Interface Descriptor:
>         bLength                 9
>         bDescriptorType        36
>         bDescriptorSubtype      3 (MIDI_OUT_JACK)
>         bJackType               1 Embedded
>         bJackID                 9
>         bNrInputPins            1
>         baSourceID( 0)         25
>         BaSourcePin( 0)         1
>         iJack                   0 
>       MIDIStreaming Interface Descriptor:
>         bLength                 9
>         bDescriptorType        36
>         bDescriptorSubtype      3 (MIDI_OUT_JACK)
>         bJackType               2 External
>         bJackID                17
>         bNrInputPins            1
>         baSourceID( 0)          1
>         BaSourcePin( 0)         1
>         iJack                  10 WING MIDI DAW 1
>       MIDIStreaming Interface Descriptor:
>         bLength                 9
>         bDescriptorType        36
>         bDescriptorSubtype      3 (MIDI_OUT_JACK)
>         bJackType               1 Embedded
>         bJackID                10
>         bNrInputPins            1
>         baSourceID( 0)         26
>         BaSourcePin( 0)         1
>         iJack                   0 
>       MIDIStreaming Interface Descriptor:
>         bLength                 9
>         bDescriptorType        36
>         bDescriptorSubtype      3 (MIDI_OUT_JACK)
>         bJackType               2 External
>         bJackID                18
>         bNrInputPins            1
>         baSourceID( 0)          2
>         BaSourcePin( 0)         1
>         iJack                  12 WING MIDI DAW 2
>       MIDIStreaming Interface Descriptor:
>         bLength                 9
>         bDescriptorType        36
>         bDescriptorSubtype      3 (MIDI_OUT_JACK)
>         bJackType               1 Embedded
>         bJackID                11
>         bNrInputPins            1
>         baSourceID( 0)         27
>         BaSourcePin( 0)         1
>         iJack                   0 
>       MIDIStreaming Interface Descriptor:
>         bLength                 9
>         bDescriptorType        36
>         bDescriptorSubtype      3 (MIDI_OUT_JACK)
>         bJackType               2 External
>         bJackID                19
>         bNrInputPins            1
>         baSourceID( 0)          3
>         BaSourcePin( 0)         1
>         iJack                  14 WING MIDI DAW 3
>       MIDIStreaming Interface Descriptor:
>         bLength                 9
>         bDescriptorType        36
>         bDescriptorSubtype      3 (MIDI_OUT_JACK)
>         bJackType               1 Embedded
>         bJackID                12
>         bNrInputPins            1
>         baSourceID( 0)         28
>         BaSourcePin( 0)         1
>         iJack                   0 
>       MIDIStreaming Interface Descriptor:
>         bLength                 9
>         bDescriptorType        36
>         bDescriptorSubtype      3 (MIDI_OUT_JACK)
>         bJackType               2 External
>         bJackID                20
>         bNrInputPins            1
>         baSourceID( 0)          4
>         BaSourcePin( 0)         1
>         iJack                  16 WING MIDI Control
>       Endpoint Descriptor:
>         bLength                 9
>         bDescriptorType         5
>         bEndpointAddress     0x02  EP 2 OUT
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0200  1x 512 bytes
>         bInterval               0
>         bRefresh                0
>         bSynchAddress           0
>         MIDIStreaming Endpoint Descriptor:
>           bLength                 8
>           bDescriptorType        37
>           bDescriptorSubtype      1 (GENERAL)
>           bNumEmbMIDIJack         4
>           baAssocJackID( 0)       1
>           baAssocJackID( 1)       2
>           baAssocJackID( 2)       3
>           baAssocJackID( 3)       4
>       Endpoint Descriptor:
>         bLength                 9
>         bDescriptorType         5
>         bEndpointAddress     0x82  EP 2 IN
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0200  1x 512 bytes
>         bInterval               0
>         bRefresh                0
>         bSynchAddress           0
>         MIDIStreaming Endpoint Descriptor:
>           bLength                 8
>           bDescriptorType        37
>           bDescriptorSubtype      1 (GENERAL)
>           bNumEmbMIDIJack         4
>           baAssocJackID( 0)       9
>           baAssocJackID( 1)      10
>           baAssocJackID( 2)      11
>           baAssocJackID( 3)      12
>   Configuration Descriptor:
>     bLength                 9
>     bDescriptorType         2
>     wTotalLength       0x0323
>     bNumInterfaces          5
>     bConfigurationValue     1
>     iConfiguration          0 
>     bmAttributes         0xc0
>       Self Powered
>     MaxPower                0mA
>     Interface Association:
>       bLength                 8
>       bDescriptorType        11
>       bFirstInterface         0
>       bInterfaceCount         3
>       bFunctionClass          1 Audio
>       bFunctionSubClass       0 
>       bFunctionProtocol      32 
>       iFunction               0 
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        0
>       bAlternateSetting       0
>       bNumEndpoints           0
>       bInterfaceClass         1 Audio
>       bInterfaceSubClass      1 Control Device
>       bInterfaceProtocol     32 
>       iInterface              3 WING
>       AudioControl Interface Descriptor:
>         bLength                 9
>         bDescriptorType        36
>         bDescriptorSubtype      1 (HEADER)
>         bcdADC               2.00
>         bCategory               8
>         wTotalLength       0x01df
>         bmControls           0x00
>       AudioControl Interface Descriptor:
>         bLength                 8
>         bDescriptorType        36
>         bDescriptorSubtype     10 (CLOCK_SOURCE)
>         bClockID               41
>         bmAttributes            1 Internal fixed clock 
>         bmControls           0x07
>           Clock Frequency Control (read/write)
>           Clock Validity Control (read-only)
>         bAssocTerminal          0
>         iClockSource            9 WING Internal Clock
>       AudioControl Interface Descriptor:
>         bLength                17
>         bDescriptorType        36
>         bDescriptorSubtype      2 (INPUT_TERMINAL)
>         bTerminalID             2
>         wTerminalType      0x0101 USB Streaming
>         bAssocTerminal          0
>         bCSourceID             41
>         bNrChannels            48
>         bmChannelConfig    0x00000000
>         iChannelNames          18 Out 1
>         bmControls         0x0000
>         iTerminal               6 WING Output
>       AudioControl Interface Descriptor:
>         bLength               202
>         bDescriptorType        36
>         bDescriptorSubtype      6 (FEATURE_UNIT)
>         bUnitID                10
>         bSourceID               2
>         bmaControls(0)    0x00000000
>         bmaControls(1)    0x00000000
>         bmaControls(2)    0x00000000
>         bmaControls(3)    0x00000000
>         bmaControls(4)    0x00000000
>         bmaControls(5)    0x00000000
>         bmaControls(6)    0x00000000
>         bmaControls(7)    0x00000000
>         bmaControls(8)    0x00000000
>         bmaControls(9)    0x00000000
>         bmaControls(10)    0x00000000
>         bmaControls(11)    0x00000000
>         bmaControls(12)    0x00000000
>         bmaControls(13)    0x00000000
>         bmaControls(14)    0x00000000
>         bmaControls(15)    0x00000000
>         bmaControls(16)    0x00000000
>         bmaControls(17)    0x00000000
>         bmaControls(18)    0x00000000
>         bmaControls(19)    0x00000000
>         bmaControls(20)    0x00000000
>         bmaControls(21)    0x00000000
>         bmaControls(22)    0x00000000
>         bmaControls(23)    0x00000000
>         bmaControls(24)    0x00000000
>         bmaControls(25)    0x00000000
>         bmaControls(26)    0x00000000
>         bmaControls(27)    0x00000000
>         bmaControls(28)    0x00000000
>         bmaControls(29)    0x00000000
>         bmaControls(30)    0x00000000
>         bmaControls(31)    0x00000000
>         bmaControls(32)    0x00000000
>         bmaControls(33)    0x00000000
>         bmaControls(34)    0x00000000
>         bmaControls(35)    0x00000000
>         bmaControls(36)    0x00000000
>         bmaControls(37)    0x00000000
>         bmaControls(38)    0x00000000
>         bmaControls(39)    0x00000000
>         bmaControls(40)    0x00000000
>         bmaControls(41)    0x00000000
>         bmaControls(42)    0x00000000
>         bmaControls(43)    0x00000000
>         bmaControls(44)    0x00000000
>         bmaControls(45)    0x00000000
>         bmaControls(46)    0x00000000
>         bmaControls(47)    0x00000000
>         bmaControls(48)    0x00000000
>         iFeature                0 
>       AudioControl Interface Descriptor:
>         bLength                12
>         bDescriptorType        36
>         bDescriptorSubtype      3 (OUTPUT_TERMINAL)
>         bTerminalID            20
>         wTerminalType      0x0301 Speaker
>         bAssocTerminal          0
>         bSourceID              10
>         bCSourceID             41
>         bmControls         0x0000
>         iTerminal               0 
>       AudioControl Interface Descriptor:
>         bLength                17
>         bDescriptorType        36
>         bDescriptorSubtype      2 (INPUT_TERMINAL)
>         bTerminalID             1
>         wTerminalType      0x0201 Microphone
>         bAssocTerminal          0
>         bCSourceID             41
>         bNrChannels            48
>         bmChannelConfig    0x00000000
>         iChannelNames          66 In 1
>         bmControls         0x0000
>         iTerminal               0 
>       AudioControl Interface Descriptor:
>         bLength               202
>         bDescriptorType        36
>         bDescriptorSubtype      6 (FEATURE_UNIT)
>         bUnitID                11
>         bSourceID               1
>         bmaControls(0)    0x00000000
>         bmaControls(1)    0x00000000
>         bmaControls(2)    0x00000000
>         bmaControls(3)    0x00000000
>         bmaControls(4)    0x00000000
>         bmaControls(5)    0x00000000
>         bmaControls(6)    0x00000000
>         bmaControls(7)    0x00000000
>         bmaControls(8)    0x00000000
>         bmaControls(9)    0x00000000
>         bmaControls(10)    0x00000000
>         bmaControls(11)    0x00000000
>         bmaControls(12)    0x00000000
>         bmaControls(13)    0x00000000
>         bmaControls(14)    0x00000000
>         bmaControls(15)    0x00000000
>         bmaControls(16)    0x00000000
>         bmaControls(17)    0x00000000
>         bmaControls(18)    0x00000000
>         bmaControls(19)    0x00000000
>         bmaControls(20)    0x00000000
>         bmaControls(21)    0x00000000
>         bmaControls(22)    0x00000000
>         bmaControls(23)    0x00000000
>         bmaControls(24)    0x00000000
>         bmaControls(25)    0x00000000
>         bmaControls(26)    0x00000000
>         bmaControls(27)    0x00000000
>         bmaControls(28)    0x00000000
>         bmaControls(29)    0x00000000
>         bmaControls(30)    0x00000000
>         bmaControls(31)    0x00000000
>         bmaControls(32)    0x00000000
>         bmaControls(33)    0x00000000
>         bmaControls(34)    0x00000000
>         bmaControls(35)    0x00000000
>         bmaControls(36)    0x00000000
>         bmaControls(37)    0x00000000
>         bmaControls(38)    0x00000000
>         bmaControls(39)    0x00000000
>         bmaControls(40)    0x00000000
>         bmaControls(41)    0x00000000
>         bmaControls(42)    0x00000000
>         bmaControls(43)    0x00000000
>         bmaControls(44)    0x00000000
>         bmaControls(45)    0x00000000
>         bmaControls(46)    0x00000000
>         bmaControls(47)    0x00000000
>         bmaControls(48)    0x00000000
>         iFeature                0 
>       AudioControl Interface Descriptor:
>         bLength                12
>         bDescriptorType        36
>         bDescriptorSubtype      3 (OUTPUT_TERMINAL)
>         bTerminalID            22
>         wTerminalType      0x0101 USB Streaming
>         bAssocTerminal          0
>         bSourceID              11
>         bCSourceID             41
>         bmControls         0x0000
>         iTerminal               7 WING Input
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        1
>       bAlternateSetting       0
>       bNumEndpoints           0
>       bInterfaceClass         1 Audio
>       bInterfaceSubClass      2 Streaming
>       bInterfaceProtocol     32 
>       iInterface              4 WING Output Terminal
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        1
>       bAlternateSetting       1
>       bNumEndpoints           1
>       bInterfaceClass         1 Audio
>       bInterfaceSubClass      2 Streaming
>       bInterfaceProtocol     32 
>       iInterface              4 WING Output Terminal
>       AudioStreaming Interface Descriptor:
>         bLength                16
>         bDescriptorType        36
>         bDescriptorSubtype      1 (AS_GENERAL)
>         bTerminalLink           2
>         bmControls           0x00
>         bFormatType             1
>         bmFormats          0x00000001
>           PCM
>         bNrChannels            48
>         bmChannelConfig    0x00000000
>         iChannelNames          18 Out 1
>       AudioStreaming Interface Descriptor:
>         bLength                 6
>         bDescriptorType        36
>         bDescriptorSubtype      2 (FORMAT_TYPE)
>         bFormatType             1 (FORMAT_TYPE_I)
>         bSubslotSize            3
>         bBitResolution         24
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x01  EP 1 OUT
>         bmAttributes            5
>           Transfer Type            Isochronous
>           Synch Type               Asynchronous
>           Usage Type               Data
>         wMaxPacketSize     0x03f0  1x 1008 bytes
>         bInterval               1
>         AudioStreaming Endpoint Descriptor:
>           bLength                 8
>           bDescriptorType        37
>           bDescriptorSubtype      1 (EP_GENERAL)
>           bmAttributes         0x00
>           bmControls           0x00
>           bLockDelayUnits         2 Decoded PCM samples
>           wLockDelay         0x0008
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        2
>       bAlternateSetting       0
>       bNumEndpoints           0
>       bInterfaceClass         1 Audio
>       bInterfaceSubClass      2 Streaming
>       bInterfaceProtocol     32 
>       iInterface              5 WING Input Terminal
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        2
>       bAlternateSetting       1
>       bNumEndpoints           1
>       bInterfaceClass         1 Audio
>       bInterfaceSubClass      2 Streaming
>       bInterfaceProtocol     32 
>       iInterface              5 WING Input Terminal
>       AudioStreaming Interface Descriptor:
>         bLength                16
>         bDescriptorType        36
>         bDescriptorSubtype      1 (AS_GENERAL)
>         bTerminalLink          22
>         bmControls           0x00
>         bFormatType             1
>         bmFormats          0x00000001
>           PCM
>         bNrChannels            48
>         bmChannelConfig    0x00000000
>         iChannelNames          66 In 1
>       AudioStreaming Interface Descriptor:
>         bLength                 6
>         bDescriptorType        36
>         bDescriptorSubtype      2 (FORMAT_TYPE)
>         bFormatType             1 (FORMAT_TYPE_I)
>         bSubslotSize            3
>         bBitResolution         24
>       Endpoint Descriptor:
>         bLength                 7
>         bDescriptorType         5
>         bEndpointAddress     0x81  EP 1 IN
>         bmAttributes           37
>           Transfer Type            Isochronous
>           Synch Type               Asynchronous
>           Usage Type               Implicit feedback Data
>         wMaxPacketSize     0x03f0  1x 1008 bytes
>         bInterval               1
>         AudioStreaming Endpoint Descriptor:
>           bLength                 8
>           bDescriptorType        37
>           bDescriptorSubtype      1 (EP_GENERAL)
>           bmAttributes         0x00
>           bmControls           0x00
>           bLockDelayUnits         2 Decoded PCM samples
>           wLockDelay         0x0008
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        3
>       bAlternateSetting       0
>       bNumEndpoints           0
>       bInterfaceClass         1 Audio
>       bInterfaceSubClass      1 Control Device
>       bInterfaceProtocol      0 
>       iInterface              0 
>       AudioControl Interface Descriptor:
>         bLength                 9
>         bDescriptorType        36
>         bDescriptorSubtype      1 (HEADER)
>         bcdADC               1.00
>         wTotalLength       0x0009
>         bInCollection           1
>         baInterfaceNr(0)        1
>     Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        4
>       bAlternateSetting       0
>       bNumEndpoints           2
>       bInterfaceClass         1 Audio
>       bInterfaceSubClass      3 MIDI Streaming
>       bInterfaceProtocol      0 
>       iInterface              0 
>       MIDIStreaming Interface Descriptor:
>         bLength                 7
>         bDescriptorType        36
>         bDescriptorSubtype      1 (HEADER)
>         bcdADC               1.00
>         wTotalLength       0x00a1
>       MIDIStreaming Interface Descriptor:
>         bLength                 6
>         bDescriptorType        36
>         bDescriptorSubtype      2 (MIDI_IN_JACK)
>         bJackType               1 Embedded
>         bJackID                 1
>         iJack                   0 
>       MIDIStreaming Interface Descriptor:
>         bLength                 6
>         bDescriptorType        36
>         bDescriptorSubtype      2 (MIDI_IN_JACK)
>         bJackType               2 External
>         bJackID                25
>         iJack                  11 WING MIDI DAW 1
>       MIDIStreaming Interface Descriptor:
>         bLength                 6
>         bDescriptorType        36
>         bDescriptorSubtype      2 (MIDI_IN_JACK)
>         bJackType               1 Embedded
>         bJackID                 2
>         iJack                   0 
>       MIDIStreaming Interface Descriptor:
>         bLength                 6
>         bDescriptorType        36
>         bDescriptorSubtype      2 (MIDI_IN_JACK)
>         bJackType               2 External
>         bJackID                26
>         iJack                  13 WING MIDI DAW 2
>       MIDIStreaming Interface Descriptor:
>         bLength                 6
>         bDescriptorType        36
>         bDescriptorSubtype      2 (MIDI_IN_JACK)
>         bJackType               1 Embedded
>         bJackID                 3
>         iJack                   0 
>       MIDIStreaming Interface Descriptor:
>         bLength                 6
>         bDescriptorType        36
>         bDescriptorSubtype      2 (MIDI_IN_JACK)
>         bJackType               2 External
>         bJackID                27
>         iJack                  15 WING MIDI DAW 3
>       MIDIStreaming Interface Descriptor:
>         bLength                 6
>         bDescriptorType        36
>         bDescriptorSubtype      2 (MIDI_IN_JACK)
>         bJackType               1 Embedded
>         bJackID                 4
>         iJack                   0 
>       MIDIStreaming Interface Descriptor:
>         bLength                 6
>         bDescriptorType        36
>         bDescriptorSubtype      2 (MIDI_IN_JACK)
>         bJackType               2 External
>         bJackID                28
>         iJack                  17 WING MIDI Control
>       MIDIStreaming Interface Descriptor:
>         bLength                 9
>         bDescriptorType        36
>         bDescriptorSubtype      3 (MIDI_OUT_JACK)
>         bJackType               1 Embedded
>         bJackID                 9
>         bNrInputPins            1
>         baSourceID( 0)         25
>         BaSourcePin( 0)         1
>         iJack                   0 
>       MIDIStreaming Interface Descriptor:
>         bLength                 9
>         bDescriptorType        36
>         bDescriptorSubtype      3 (MIDI_OUT_JACK)
>         bJackType               2 External
>         bJackID                17
>         bNrInputPins            1
>         baSourceID( 0)          1
>         BaSourcePin( 0)         1
>         iJack                  10 WING MIDI DAW 1
>       MIDIStreaming Interface Descriptor:
>         bLength                 9
>         bDescriptorType        36
>         bDescriptorSubtype      3 (MIDI_OUT_JACK)
>         bJackType               1 Embedded
>         bJackID                10
>         bNrInputPins            1
>         baSourceID( 0)         26
>         BaSourcePin( 0)         1
>         iJack                   0 
>       MIDIStreaming Interface Descriptor:
>         bLength                 9
>         bDescriptorType        36
>         bDescriptorSubtype      3 (MIDI_OUT_JACK)
>         bJackType               2 External
>         bJackID                18
>         bNrInputPins            1
>         baSourceID( 0)          2
>         BaSourcePin( 0)         1
>         iJack                  12 WING MIDI DAW 2
>       MIDIStreaming Interface Descriptor:
>         bLength                 9
>         bDescriptorType        36
>         bDescriptorSubtype      3 (MIDI_OUT_JACK)
>         bJackType               1 Embedded
>         bJackID                11
>         bNrInputPins            1
>         baSourceID( 0)         27
>         BaSourcePin( 0)         1
>         iJack                   0 
>       MIDIStreaming Interface Descriptor:
>         bLength                 9
>         bDescriptorType        36
>         bDescriptorSubtype      3 (MIDI_OUT_JACK)
>         bJackType               2 External
>         bJackID                19
>         bNrInputPins            1
>         baSourceID( 0)          3
>         BaSourcePin( 0)         1
>         iJack                  14 WING MIDI DAW 3
>       MIDIStreaming Interface Descriptor:
>         bLength                 9
>         bDescriptorType        36
>         bDescriptorSubtype      3 (MIDI_OUT_JACK)
>         bJackType               1 Embedded
>         bJackID                12
>         bNrInputPins            1
>         baSourceID( 0)         28
>         BaSourcePin( 0)         1
>         iJack                   0 
>       MIDIStreaming Interface Descriptor:
>         bLength                 9
>         bDescriptorType        36
>         bDescriptorSubtype      3 (MIDI_OUT_JACK)
>         bJackType               2 External
>         bJackID                20
>         bNrInputPins            1
>         baSourceID( 0)          4
>         BaSourcePin( 0)         1
>         iJack                  16 WING MIDI Control
>       Endpoint Descriptor:
>         bLength                 9
>         bDescriptorType         5
>         bEndpointAddress     0x02  EP 2 OUT
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0200  1x 512 bytes
>         bInterval               0
>         bRefresh                0
>         bSynchAddress           0
>         MIDIStreaming Endpoint Descriptor:
>           bLength                 8
>           bDescriptorType        37
>           bDescriptorSubtype      1 (GENERAL)
>           bNumEmbMIDIJack         4
>           baAssocJackID( 0)       1
>           baAssocJackID( 1)       2
>           baAssocJackID( 2)       3
>           baAssocJackID( 3)       4
>       Endpoint Descriptor:
>         bLength                 9
>         bDescriptorType         5
>         bEndpointAddress     0x82  EP 2 IN
>         bmAttributes            2
>           Transfer Type            Bulk
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0200  1x 512 bytes
>         bInterval               0
>         bRefresh                0
>         bSynchAddress           0
>         MIDIStreaming Endpoint Descriptor:
>           bLength                 8
>           bDescriptorType        37
>           bDescriptorSubtype      1 (GENERAL)
>           bNumEmbMIDIJack         4
>           baAssocJackID( 0)       9
>           baAssocJackID( 1)      10
>           baAssocJackID( 2)      11
>           baAssocJackID( 3)      12
> Device Qualifier (for other device speed):
>   bLength                10
>   bDescriptorType         6
>   bcdUSB               2.00
>   bDeviceClass            0 
>   bDeviceSubClass         0 
>   bDeviceProtocol         0 
>   bMaxPacketSize0        64
>   bNumConfigurations      1
> Device Status:     0x0001
>   Self Powered

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

end of thread, other threads:[~2020-12-09 12:31 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-26 18:06 Behringer WING usb audio - cyclic xruns dependent on periods/buffers Ben Bell
2020-11-27  9:20 ` Takashi Iwai
2020-11-28  9:36   ` Ben Bell
2020-12-03 20:06     ` Ben Bell
     [not found]     ` <20201203200633.CC66A2C16F@relay2.suse.de>
2020-12-04  8:04       ` Takashi Iwai
2020-12-05 14:43         ` Ben Bell
     [not found]         ` <20201205144406.854292C16C@relay2.suse.de>
2020-12-08 13:30           ` Takashi Iwai
2020-12-09 12:16             ` Ben Bell
     [not found]             ` <20201209121634.8B72A2C1D1@relay2.suse.de>
2020-12-09 12:29               ` Takashi Iwai

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.