[alsa-devel] Boss GT-001

Clemens Ladisch clemens at ladisch.de
Thu Oct 8 15:54:46 CEST 2015


Ricard Wanderlof wrote:
>         bEndpointAddress     0x0d  EP 13 OUT
>         bmAttributes            5
>           Transfer Type            Isochronous
>           Synch Type               Asynchronous
>           Usage Type               Data
>         wMaxPacketSize     0x0070  1x 112 bytes
>
>         bEndpointAddress     0x8e  EP 14 IN
>         bmAttributes           37
>           Transfer Type            Isochronous
>           Synch Type               Asynchronous
>           Usage Type               Implicit feedback Data
>         wMaxPacketSize     0x0070  1x 112 bytes
>
> 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.
>
> 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.

The first endpoint in an audio interface is for the actual samples.

> I'm not sure what 'Implicit feedback Data' means exactly though - is the
> feedback data multiplexed with the capture data perhaps?

The USB 2.0 specification says:
| 5.12.4.3 Implicit Feedback
|
| In some cases, implementing a separate explicit feedback endpoint can
| be avoided. If a device implements a group of isochronous data
| endpoints that are closely related and if:
| • All the endpoints in the group are synchronized (i.e. use sample
| clocks that are derived from a common master clock)
| • The group contains one or more isochronous data endpoints in one
| direction that normally would need explicit feedback
| • The group contains at least one isochronous data endpoint in the
| opposite direction
| Under these circumstances, the device may elect not to implement
| a separate isochronous explicit feedback endpoint. Instead, feedback
| information can be derived from the data endpoint in the opposite
| direction by observing its data rate.

In theory, the driver supports this, but there are known to be some
bugs. And in any case there should be no problem getting the capture
stream to start (it's the playback stream that would have a slightly
wrong sample clock); it's possible that this device needs some vendor-
specific commands, or a different order of commands. (The interesting
USB transactions would be everything except the isochronous ones.)


Regards,
Clemens


More information about the Alsa-devel mailing list