* 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.