From: "Keith A. Milner" <maillist@superlative.org>
To: alsa-devel@alsa-project.org
Cc: Ricard Wanderlof <ricard.wanderlof@axis.com>
Subject: Re: Boss GT-001
Date: Thu, 08 Oct 2015 12:51:54 +0100 [thread overview]
Message-ID: <53501158.2GJHLGgpfJ@kamdesktop> (raw)
In-Reply-To: <alpine.DEB.2.02.1510080849080.30181@lnxricardw1.se.axis.com>
On Thursday 08 Oct 2015 09:02:22 Ricard Wanderlof wrote:
> When the Isochronous Synch Type is Asynchronous, there must be a feedback
> channel where the USB device reports back information so that it can
> adjust the output sampling rate
> (http://wiki.osdev.org/Universal_Serial_Bus#Asynchronous_Endpoints).
>
> I might be barking up the wrong tree here as I'm new to this, but it looks
> as if endpoint 0x8e is providing the feedback data, and there doesn't seem
> to be any other isochronous endpoint defined in the lsusb dump which could
> be used for the actual capture cdata.
>
> I'm not sure what 'Implicit feedback Data' means exactly though - is the
> feedback data multiplexed with the capture data perhaps?
I'm quite new to this too, but here is my interpretation.
Implicit feedback means "assumed" and, hence, there is actually no feedback
channel. That would be "explicit feedback".
This seems to be backed up by the article you linked:
"Asynchronous source endpoints imply their data rate by the number of samples
produced per (micro)frame. "
In this case the endpoint is an IN (with respect to the host) and so the rate
is controlled by the GT-001's clock, and communicated to the host via the
samples per microframe (wMaxPacketSize?) and it is the host's job to keep up
with that.
On the other hand, playback data is different. According to the article:
"Asynchronous sink endpoints must provide explicit feedback to the source
endpoint. When the source endpoint is the host, it is the responsibility of
the device driver to process the explicit feedback properly. This feedback
allows the host and device to make slight adjustments to the data rate in
order to compensate for any clock drift."
So async playback (OUT) devices *do* seem to need explicit feedback.
My reading of the Interface descriptor data for the GT-001 is as follows:
Interface 1 has an OUT (playback) endpoint number 13 which is Isochronous and
Asynchronous. The implications is explicit feedback is required from the
device to the host to control the output rate.
Interface 2 has an IN (record) endpoint number 14 which is Isochronous and
Asynchronous and uses implicit feedback, so no feedback channel is required.
Interface 3 is MIDI, comprising IN and OUT bulk data endpoints and IN and OUT
interrupt endpoints. Note that this is a Roland MIDI Interface which has a
specific quirk, where the endpoints contain multiple MIDI channels as
specified by the Vendor specific CS_INTERFACE data:
** UNRECOGNIZED: 06 24 f1 02 03 03
This can be read as:
Field Value Description
bLength 0x06 Size of this descriptor in bytes
bDescriptorType 0x24 CS_INTERFACE
bDescriptorSubtype 0xf1 Roland specific
UNKNOWN 0x02 MIDI channels
UNKNOWN 0x03 Number of input MIDI channels
UNKNOWN 0x03 Number of output MIDI channels
So, in this case, there are 3 In and 3 OUT MIDI channels associated with this
Interface.
However, these definitions don't seem to fully align with my configuration
and, when I used those definitions in the quirk, playback didn't work. I guess
it's entirely possible the attributes in the descriptor are complete rubbish.
I have some usbmon dumps which I will try to find time to analyze.
Cheers,
Keith
next prev parent reply other threads:[~2015-10-08 11:51 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-18 20:03 Boss GT-001 maillist
2015-09-21 10:22 ` maillist
2015-10-05 13:43 ` maillist
2015-10-05 14:38 ` Ricard Wanderlof
2015-10-05 14:46 ` maillist
2015-10-06 19:58 ` Keith A. Milner
2015-10-06 20:57 ` Keith A. Milner
2015-10-07 8:09 ` Ricard Wanderlof
2015-10-07 9:41 ` Keith A. Milner
2015-10-07 15:20 ` Ricard Wanderlof
2015-10-07 16:31 ` Keith A. Milner
2015-10-08 0:51 ` Keith A. Milner
2015-10-08 0:54 ` Keith A. Milner
2015-10-08 7:02 ` Ricard Wanderlof
2015-10-08 11:51 ` Keith A. Milner [this message]
2015-10-08 14:03 ` Keith A. Milner
2015-10-08 13:54 ` Clemens Ladisch
2015-10-08 14:10 ` Keith A. Milner
2015-10-08 14:34 ` Keith A. Milner
2015-10-10 13:16 ` Boss GT-001 MIDI Keith A. Milner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=53501158.2GJHLGgpfJ@kamdesktop \
--to=maillist@superlative.org \
--cc=alsa-devel@alsa-project.org \
--cc=ricard.wanderlof@axis.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.