All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ricard Wanderlof <ricard.wanderlof@axis.com>
To: alsa-devel <alsa-devel@alsa-project.org>
Subject: Roland/Edirol M-16DX
Date: Fri, 23 Oct 2015 10:27:51 +0200	[thread overview]
Message-ID: <alpine.DEB.2.02.1510231017080.14239@lnxricardw1.se.axis.com> (raw)


The Roland/Edirol M-16DX is a digital mixer which can also function as a 
18 channel capture / 2 channel playback USB 2.0 interface. The device has 
been added to quirks-table.h and has been reported as working with one 
problem: when playing back there's severe audio distortion at regular 
intervals (several seconds), which has been traced to the fact that the 
device utilizes the IN endpoint as an implicit feedback channel; see the 
output from lsusb -vvv from a 7 year old post by Lasse Kärkkäinen below 
for reference:

> Bus 007 Device 025: ID 0582:00c4 Roland Corp.
> Device Descriptor:
>    bLength                18
>    bDescriptorType         1
>    bcdUSB               2.00
>    bDeviceClass          255 Vendor Specific Class
>    bDeviceSubClass         0
>    bDeviceProtocol       255
>    bMaxPacketSize0        64
>    idVendor           0x0582 Roland Corp.
>    idProduct          0x00c4
>    bcdDevice            0.00
>    iManufacturer           1 EDIROL
>    iProduct                2 M-16DX
>    iSerial                 0
>    bNumConfigurations      1
>    Configuration Descriptor:
>      bLength                 9
>      bDescriptorType         2
>      wTotalLength          167
>      bNumInterfaces          3
>      bConfigurationValue     1
>      iConfiguration          0
>      bmAttributes         0xc0
>        Self Powered
>      MaxPower                0mA
>      Interface Descriptor:
>        bLength                 9
>        bDescriptorType         4
>        bInterfaceNumber        0
>        bAlternateSetting       0
>        bNumEndpoints           0
>        bInterfaceClass       255 Vendor Specific Class
>        bInterfaceSubClass      1
>        bInterfaceProtocol      2
>        iInterface              0
>        ** UNRECOGNIZED:  06 24 f1 01 00 00
>      Interface Descriptor:
>        bLength                 9
>        bDescriptorType         4
>        bInterfaceNumber        0
>        bAlternateSetting       1
>        bNumEndpoints           1
>        bInterfaceClass       255 Vendor Specific Class
>        bInterfaceSubClass      2
>        bInterfaceProtocol      2
>        iInterface              0
>        ** UNRECOGNIZED:  07 24 01 01 00 01 00
>        ** UNRECOGNIZED:  0b 24 02 01 02 04 18 01 80 bb 00
>        Endpoint Descriptor:
>          bLength                 7
>          bDescriptorType         5
>          bEndpointAddress     0x02  EP 2 OUT
>          bmAttributes            5
>            Transfer Type            Isochronous
>            Synch Type               Asynchronous
>            Usage Type               Data
>          wMaxPacketSize     0x0038  1x 56 bytes
>          bInterval               1
>      Interface Descriptor:
>        bLength                 9
>        bDescriptorType         4
>        bInterfaceNumber        1
>        bAlternateSetting       0
>        bNumEndpoints           0
>        bInterfaceClass       255 Vendor Specific Class
>        bInterfaceSubClass      1
>        bInterfaceProtocol      2
>        iInterface              0
>      Interface Descriptor:
>        bLength                 9
>        bDescriptorType         4
>        bInterfaceNumber        1
>        bAlternateSetting       1
>        bNumEndpoints           1
>        bInterfaceClass       255 Vendor Specific Class
>        bInterfaceSubClass      2
>        bInterfaceProtocol      1
>        iInterface              0
>        ** UNRECOGNIZED:  07 24 01 07 00 01 00
>        ** UNRECOGNIZED:  0b 24 02 01 12 04 18 01 80 bb 00
>        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     0x01f8  1x 504 bytes
>          bInterval               1
>      Interface Descriptor:
>        bLength                 9
>        bDescriptorType         4
>        bInterfaceNumber        2
>        bAlternateSetting       0
>        bNumEndpoints           2
>        bInterfaceClass       255 Vendor Specific Class
>        bInterfaceSubClass      1
>        bInterfaceProtocol      3
>        iInterface              0
>        ** UNRECOGNIZED:  06 24 f1 02 01 01
>        Endpoint Descriptor:
>          bLength                 7
>          bDescriptorType         5
>          bEndpointAddress     0x04  EP 4 OUT
>          bmAttributes            2
>            Transfer Type            Bulk
>            Synch Type               None
>            Usage Type               Data
>          wMaxPacketSize     0x0200  1x 512 bytes
>          bInterval               1
>        Endpoint Descriptor:
>          bLength                 7
>          bDescriptorType         5
>          bEndpointAddress     0x83  EP 3 IN
>          bmAttributes            2
>            Transfer Type            Bulk
>            Synch Type               None
>            Usage Type               Data
>          wMaxPacketSize     0x0200  1x 512 bytes
>          bInterval               1
>      Interface Descriptor:
>        bLength                 9
>        bDescriptorType         4
>        bInterfaceNumber        2
>        bAlternateSetting       1
>        bNumEndpoints           2
>        bInterfaceClass       255 Vendor Specific Class
>        bInterfaceSubClass      1
>        bInterfaceProtocol      3
>        iInterface              0
>        Endpoint Descriptor:
>          bLength                 7
>          bDescriptorType         5
>          bEndpointAddress     0x04  EP 4 OUT
>          bmAttributes            2
>            Transfer Type            Bulk
>            Synch Type               None
>            Usage Type               Data
>          wMaxPacketSize     0x0200  1x 512 bytes
>          bInterval               1
>        Endpoint Descriptor:
>          bLength                 7
>          bDescriptorType         5
>          bEndpointAddress     0x83  EP 3 IN
>          bmAttributes            3
>            Transfer Type            Interrupt
>            Synch Type               None
>            Usage Type               Data
>          wMaxPacketSize     0x0200  1x 512 bytes
>          bInterval               1

On Fri, 14 Nov 2008, Clemens confirmed this in a post:

> James Trevelyan wrote:
> > ...
> > However, what I did notice is that in all circumstances the windows
> > driver was capturing at the same time as playback, even when I was not
> > asking it to record.  This suggests to me that the comment in the driver
> > source about synchronising playback to capture has some relevance ...
> 
> Indeed.  The driver would have to send the data at the exact speed of
> the device's internal clock, and the only way to determine that clock's
> speed is to capture data.
> 
> So far I haven't found the time to rewrite the driver to support this
> synchronization mechanism.

I seem to recall reading posts not to long ago that refer to using an 
implicit feedback path; my question is, was this in fact implemented, 
meaning that a device like the M-16DX should function as expected also for 
playback?

/Ricard
-- 
Ricard Wolf Wanderlöf                           ricardw(at)axis.com
Axis Communications AB, Lund, Sweden            www.axis.com
Phone +46 46 272 2016                           Fax +46 46 13 61 30

             reply	other threads:[~2015-10-23  8:27 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-23  8:27 Ricard Wanderlof [this message]
2015-10-23 11:01 ` Roland/Edirol M-16DX Clemens Ladisch
2015-10-23 14:44   ` Ricard Wanderlof
2015-10-23 15:08     ` Clemens Ladisch
2015-10-24  5:51       ` Ricard Wanderlof
2015-11-12  7:58   ` Ricard Wanderlof
2015-11-12 12:38     ` Clemens Ladisch
  -- strict thread matches above, loose matches on Subject: below --
2008-07-24  2:17 Lasse Kärkkäinen
2008-07-24  2:38 ` Jon Smirl
2008-07-17  9:29 Lasse Kärkkäinen
2008-07-24  8:17 ` Clemens Ladisch
2008-11-10  3:53   ` Lasse Kärkkäinen
     [not found]     ` <491C6E10.7090308@trn.iki.fi>
     [not found]       ` <1226624101.4836.95.camel@localhost>
2008-11-14  8:12         ` Clemens Ladisch
2009-03-15  2:06   ` Lasse Kärkkäinen
2009-03-16  7:04     ` Takashi Iwai
2009-05-27 20:49       ` Lasse Kärkkäinen
2009-05-27 21:08         ` Takashi Iwai
2009-05-28 11:03           ` Lasse Kärkkäinen
2009-05-29  6:35             ` Takashi Iwai
2009-05-29 10:53               ` Lasse Kärkkäinen
2009-06-01  9:11                 ` Takashi Iwai

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=alpine.DEB.2.02.1510231017080.14239@lnxricardw1.se.axis.com \
    --to=ricard.wanderlof@axis.com \
    --cc=alsa-devel@alsa-project.org \
    /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.