All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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.