All of lore.kernel.org
 help / color / mirror / Atom feed
* Trouble about Roland UA-11 UA-33 UA-55 and snd-usb-audio module
@ 2012-11-14  7:35 FirebUntU
  2012-11-14  7:45 ` Clemens Ladisch
  0 siblings, 1 reply; 17+ messages in thread
From: FirebUntU @ 2012-11-14  7:35 UTC (permalink / raw)
  To: alsa-devel

Hi guys,

I write you about support of snd-usb-audio module and a relatively-new 
gamma of devices from Roland/Edirol:

DUO CAPTURE, TRI CAPTURE and QUAD CAPTURE

respectively:

UA-11, UA-33, UA-55

These aren't not listed in the Alsa db.
I have searched a solution for a week and I haven't found a trick to 
make UA-11 to work under Alsa 1.25.0
then I downloaded the driver for try to patch it and I found these 
devices is not listed in the tricks table

In despair I have played with the switch button called "EXT * **" in the 
bottom of the unit of UA-11 and magically the device ID is transformed 
from * 0582:012b to ** 0582:0137

Image: https://dl.dropbox.com/u/32759898/output.jpg
(Rear of the UA-11 unit, from the manual)


*Before* (Recognized from udev - Unknown from alsa):
http://www.alsa-project.org/db/?f=502ee68cf31882ba9ef23525fd66452c34d329e1

*After* (Recognized from udev - Recognized from alsa):
http://www.alsa-project.org/db/?f=b2ae3e4331fb3fe613ba71e7aba1ad2e0e6dcd29

In the tricks table header of ALSA the 0582:0137 stay for PM-1000 in 
/TODO/ statement.
I understand the EXT switch, undiscovered in the manual of the DUO 
CAPTURE is - as the fact - the Advanced Mode.

Now the peripherical running both in playback and recording in 16 and 24 
bit and without any mixer options in alsamixer.


Can you update future releases with this gamma of devices?


Awaiting for your positive response :)

Thanks.


Best regards,

Leonardo

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Trouble about Roland UA-11 UA-33 UA-55 and snd-usb-audio module
  2012-11-14  7:35 Trouble about Roland UA-11 UA-33 UA-55 and snd-usb-audio module FirebUntU
@ 2012-11-14  7:45 ` Clemens Ladisch
  2012-11-15 22:40   ` FirebUntU
  2012-11-15 22:42   ` FirebUntU
  0 siblings, 2 replies; 17+ messages in thread
From: Clemens Ladisch @ 2012-11-14  7:45 UTC (permalink / raw)
  To: FirebUntU; +Cc: alsa-devel

FirebUntU wrote:
> UA-11, UA-33, UA-55
>
> These aren't not listed in the Alsa db.

Which is a wiki.

> I have searched a solution for a week and I haven't found a trick
> to make UA-11 to work under Alsa 1.25.0

Please show the "lsusb -v" output for these devices in "Advanced" mode.


Regards,
Clemens

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Trouble about Roland UA-11 UA-33 UA-55 and snd-usb-audio module
  2012-11-14  7:45 ` Clemens Ladisch
@ 2012-11-15 22:40   ` FirebUntU
  2012-11-15 22:42   ` FirebUntU
  1 sibling, 0 replies; 17+ messages in thread
From: FirebUntU @ 2012-11-15 22:40 UTC (permalink / raw)
  To: alsa-devel

Clemens Ladisch wrote:
> Which is a wiki.
I know.

I have only the DUO-CAPTURE unit, UA-11.

Unfortunately, I can be useful  to you just for that .

So these are the lsusb output in both modes:

UA-11 in *Standard mode* (EXT switch to *)
DUO-CAPTURE 0582:012b
=========================================

Bus 003 Device 004: ID 0582:012b Roland Corp.
Device Descriptor:
   bLength                18
   bDescriptorType         1
   bcdUSB               1.10
   bDeviceClass          255 Vendor Specific Class
   bDeviceSubClass         0
   bDeviceProtocol       255
   bMaxPacketSize0        64
   idVendor           0x0582 Roland Corp.
   idProduct          0x012b
   bcdDevice            1.00
   iManufacturer           1 Roland
   iProduct                2 DUO-CAPTURE
   iSerial                 0
   bNumConfigurations      1
   Configuration Descriptor:
     bLength                 9
     bDescriptorType         2
     wTotalLength          115
     bNumInterfaces          2
     bConfigurationValue     1
     iConfiguration          0
     bmAttributes         0x80
       (Bus Powered)
     MaxPower               96mA
     Interface Descriptor:
       bLength                 9
       bDescriptorType         4
       bInterfaceNumber        0
       bAlternateSetting       0
       bNumEndpoints           0
       bInterfaceClass       255 Vendor Specific Class
       bInterfaceSubClass      2
       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 03 18 01 44 ac 00
       Endpoint Descriptor:
         bLength                 7
         bDescriptorType         5
         bEndpointAddress     0x01  EP 1 OUT
         bmAttributes            9
           Transfer Type            Isochronous
           Synch Type               Adaptive
           Usage Type               Data
         wMaxPacketSize     0x0120  1x 288 bytes
         bInterval               1
     Interface Descriptor:
       bLength                 9
       bDescriptorType         4
       bInterfaceNumber        1
       bAlternateSetting       0
       bNumEndpoints           0
       bInterfaceClass       255 Vendor Specific Class
       bInterfaceSubClass      2
       bInterfaceProtocol      1
       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 02 03 18 01 44 ac 00
       Endpoint Descriptor:
         bLength                 7
         bDescriptorType         5
         bEndpointAddress     0x82  EP 2 IN
         bmAttributes            5
           Transfer Type            Isochronous
           Synch Type               Asynchronous
           Usage Type               Data
         wMaxPacketSize     0x0120  1x 288 bytes
         bInterval               1
Device Status:     0x0002
   (Bus Powered)
   Remote Wakeup Enabled

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Trouble about Roland UA-11 UA-33 UA-55 and snd-usb-audio module
  2012-11-14  7:45 ` Clemens Ladisch
  2012-11-15 22:40   ` FirebUntU
@ 2012-11-15 22:42   ` FirebUntU
  2013-01-09 11:58     ` Trouble about Roland " Smeefer Carbone
  1 sibling, 1 reply; 17+ messages in thread
From: FirebUntU @ 2012-11-15 22:42 UTC (permalink / raw)
  To: alsa-devel


UA-11 in *Advanced mode* (EXT switch to **)
DUO-CAPTURE 0582:0137
=========================================

Bus 003 Device 003: ID 0582:0137 Roland Corp.
Device Descriptor:
   bLength                18
   bDescriptorType         1
   bcdUSB               1.10
   bDeviceClass            0 (Defined at Interface level)
   bDeviceSubClass         0
   bDeviceProtocol         0
   bMaxPacketSize0        64
   idVendor           0x0582 Roland Corp.
   idProduct          0x0137
   bcdDevice            0.60
   iManufacturer           1 Roland
   iProduct                2 DUO-CAPTURE
   iSerial                 0
   bNumConfigurations      1
   Configuration Descriptor:
     bLength                 9
     bDescriptorType         2
     wTotalLength          285
     bNumInterfaces          4
     bConfigurationValue     1
     iConfiguration          0
     bmAttributes         0x80
       (Bus Powered)
     MaxPower               96mA
     Interface Descriptor:
       bLength                 9
       bDescriptorType         4
       bInterfaceNumber        0
       bAlternateSetting       0
       bNumEndpoints           0
       bInterfaceClass         1 Audio
       bInterfaceSubClass      1 Control Device
       bInterfaceProtocol      0
       iInterface              0
       AudioControl Interface Descriptor:
         bLength                10
         bDescriptorType        36
         bDescriptorSubtype      1 (HEADER)
         bcdADC               1.00
         wTotalLength           52
         bInCollection           2
         baInterfaceNr( 0)       1
         baInterfaceNr( 1)       2
       AudioControl Interface Descriptor:
         bLength                12
         bDescriptorType        36
         bDescriptorSubtype      2 (INPUT_TERMINAL)
         bTerminalID             1
         wTerminalType      0x0101 USB Streaming
         bAssocTerminal          0
         bNrChannels             2
         wChannelConfig     0x0003
           Left Front (L)
           Right Front (R)
         iChannelNames           0
         iTerminal               0
       AudioControl Interface Descriptor:
         bLength                 9
         bDescriptorType        36
         bDescriptorSubtype      3 (OUTPUT_TERMINAL)
         bTerminalID             3
         wTerminalType      0x0304 Desktop Speaker
         bAssocTerminal          0
         bSourceID               1
         iTerminal               0
       AudioControl Interface Descriptor:
         bLength                12
         bDescriptorType        36
         bDescriptorSubtype      2 (INPUT_TERMINAL)
         bTerminalID             4
         wTerminalType      0x0603 Line Connector
         bAssocTerminal          0
         bNrChannels             2
         wChannelConfig     0x0003
           Left Front (L)
           Right Front (R)
         iChannelNames           0
         iTerminal               0
       AudioControl Interface Descriptor:
         bLength                 9
         bDescriptorType        36
         bDescriptorSubtype      3 (OUTPUT_TERMINAL)
         bTerminalID             7
         wTerminalType      0x0101 USB Streaming
         bAssocTerminal          0
         bSourceID               4
         iTerminal               0
     Interface Descriptor:
       bLength                 9
       bDescriptorType         4
       bInterfaceNumber        1
       bAlternateSetting       0
       bNumEndpoints           0
       bInterfaceClass         1 Audio
       bInterfaceSubClass      2 Streaming
       bInterfaceProtocol      0
       iInterface              0
     Interface Descriptor:
       bLength                 9
       bDescriptorType         4
       bInterfaceNumber        1
       bAlternateSetting       1
       bNumEndpoints           1
       bInterfaceClass         1 Audio
       bInterfaceSubClass      2 Streaming
       bInterfaceProtocol      0
       iInterface              0
       AudioStreaming Interface Descriptor:
         bLength                 7
         bDescriptorType        36
         bDescriptorSubtype      1 (AS_GENERAL)
         bTerminalLink           1
         bDelay                  0 frames
         wFormatTag              1 PCM
       AudioStreaming Interface Descriptor:
         bLength                11
         bDescriptorType        36
         bDescriptorSubtype      2 (FORMAT_TYPE)
         bFormatType             1 (FORMAT_TYPE_I)
         bNrChannels             2
         bSubframeSize           2
         bBitResolution         16
         bSamFreqType            1 Discrete
         tSamFreq[ 0]        44100
       Endpoint Descriptor:
         bLength                 9
         bDescriptorType         5
         bEndpointAddress     0x01  EP 1 OUT
         bmAttributes            9
           Transfer Type            Isochronous
           Synch Type               Adaptive
           Usage Type               Data
         wMaxPacketSize     0x00c8  1x 200 bytes
         bInterval               1
         bRefresh                0
         bSynchAddress           0
         AudioControl Endpoint Descriptor:
           bLength                 7
           bDescriptorType        37
           bDescriptorSubtype      1 (EP_GENERAL)
           bmAttributes         0x00
           bLockDelayUnits         2 Decoded PCM samples
           wLockDelay            512 Decoded PCM samples
     Interface Descriptor:
       bLength                 9
       bDescriptorType         4
       bInterfaceNumber        1
       bAlternateSetting       2
       bNumEndpoints           1
       bInterfaceClass         1 Audio
       bInterfaceSubClass      2 Streaming
       bInterfaceProtocol      0
       iInterface              0
       AudioStreaming Interface Descriptor:
         bLength                 7
         bDescriptorType        36
         bDescriptorSubtype      1 (AS_GENERAL)
         bTerminalLink           1
         bDelay                  0 frames
         wFormatTag              1 PCM
       AudioStreaming Interface Descriptor:
         bLength                11
         bDescriptorType        36
         bDescriptorSubtype      2 (FORMAT_TYPE)
         bFormatType             1 (FORMAT_TYPE_I)
         bNrChannels             2
         bSubframeSize           2
         bBitResolution         16
         bSamFreqType            1 Discrete
         tSamFreq[ 0]        48000
       Endpoint Descriptor:
         bLength                 9
         bDescriptorType         5
         bEndpointAddress     0x01  EP 1 OUT
         bmAttributes            9
           Transfer Type            Isochronous
           Synch Type               Adaptive
           Usage Type               Data
         wMaxPacketSize     0x00c8  1x 200 bytes
         bInterval               1
         bRefresh                0
         bSynchAddress           0
         AudioControl Endpoint Descriptor:
           bLength                 7
           bDescriptorType        37
           bDescriptorSubtype      1 (EP_GENERAL)
           bmAttributes         0x00
           bLockDelayUnits         2 Decoded PCM samples
           wLockDelay            512 Decoded PCM samples
     Interface Descriptor:
       bLength                 9
       bDescriptorType         4
       bInterfaceNumber        2
       bAlternateSetting       0
       bNumEndpoints           0
       bInterfaceClass         1 Audio
       bInterfaceSubClass      2 Streaming
       bInterfaceProtocol      0
       iInterface              0
     Interface Descriptor:
       bLength                 9
       bDescriptorType         4
       bInterfaceNumber        2
       bAlternateSetting       1
       bNumEndpoints           1
       bInterfaceClass         1 Audio
       bInterfaceSubClass      2 Streaming
       bInterfaceProtocol      0
       iInterface              0
       AudioStreaming Interface Descriptor:
         bLength                 7
         bDescriptorType        36
         bDescriptorSubtype      1 (AS_GENERAL)
         bTerminalLink           7
         bDelay                  0 frames
         wFormatTag              1 PCM
       AudioStreaming Interface Descriptor:
         bLength                11
         bDescriptorType        36
         bDescriptorSubtype      2 (FORMAT_TYPE)
         bFormatType             1 (FORMAT_TYPE_I)
         bNrChannels             2
         bSubframeSize           2
         bBitResolution         16
         bSamFreqType            1 Discrete
         tSamFreq[ 0]        44100
       Endpoint Descriptor:
         bLength                 9
         bDescriptorType         5
         bEndpointAddress     0x82  EP 2 IN
         bmAttributes            5
           Transfer Type            Isochronous
           Synch Type               Asynchronous
           Usage Type               Data
         wMaxPacketSize     0x00c8  1x 200 bytes
         bInterval               1
         bRefresh                0
         bSynchAddress           0
         AudioControl Endpoint Descriptor:
           bLength                 7
           bDescriptorType        37
           bDescriptorSubtype      1 (EP_GENERAL)
           bmAttributes         0x00
           bLockDelayUnits         0 Undefined
           wLockDelay              0 Undefined
     Interface Descriptor:
       bLength                 9
       bDescriptorType         4
       bInterfaceNumber        2
       bAlternateSetting       2
       bNumEndpoints           1
       bInterfaceClass         1 Audio
       bInterfaceSubClass      2 Streaming
       bInterfaceProtocol      0
       iInterface              0
       AudioStreaming Interface Descriptor:
         bLength                 7
         bDescriptorType        36
         bDescriptorSubtype      1 (AS_GENERAL)
         bTerminalLink           7
         bDelay                  0 frames
         wFormatTag              1 PCM
       AudioStreaming Interface Descriptor:
         bLength                11
         bDescriptorType        36
         bDescriptorSubtype      2 (FORMAT_TYPE)
         bFormatType             1 (FORMAT_TYPE_I)
         bNrChannels             2
         bSubframeSize           2
         bBitResolution         16
         bSamFreqType            1 Discrete
         tSamFreq[ 0]        48000
       Endpoint Descriptor:
         bLength                 9
         bDescriptorType         5
         bEndpointAddress     0x82  EP 2 IN
         bmAttributes            5
           Transfer Type            Isochronous
           Synch Type               Asynchronous
           Usage Type               Data
         wMaxPacketSize     0x00c8  1x 200 bytes
         bInterval               1
         bRefresh                0
         bSynchAddress           0
         AudioControl Endpoint Descriptor:
           bLength                 7
           bDescriptorType        37
           bDescriptorSubtype      1 (EP_GENERAL)
           bmAttributes         0x00
           bLockDelayUnits         0 Undefined
           wLockDelay              0 Undefined
     Interface Descriptor:
       bLength                 9
       bDescriptorType         4
       bInterfaceNumber        3
       bAlternateSetting       0
       bNumEndpoints           1
       bInterfaceClass         3 Human Interface Device
       bInterfaceSubClass      0 No Subclass
       bInterfaceProtocol      0 None
       iInterface              0
         HID Device Descriptor:
           bLength                 9
           bDescriptorType        33
           bcdHID               1.00
           bCountryCode            0 Not supported
           bNumDescriptors         1
           bDescriptorType        34 Report
           wDescriptorLength      61
          Report Descriptors:
            ** UNAVAILABLE **
       Endpoint Descriptor:
         bLength                 7
         bDescriptorType         5
         bEndpointAddress     0x8f  EP 15 IN
         bmAttributes            3
           Transfer Type            Interrupt
           Synch Type               None
           Usage Type               Data
         wMaxPacketSize     0x0010  1x 16 bytes
         bInterval              16
Device Status:     0x0002
   (Bus Powered)
   Remote Wakeup Enabled

---

You must consider the EXT switch isn't documented in the manual.


Thanks,

Leonardo

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Trouble about Roland UA-55 and snd-usb-audio module
  2012-11-15 22:42   ` FirebUntU
@ 2013-01-09 11:58     ` Smeefer Carbone
  2013-01-10 11:02       ` Roland UA-55 Smeefer Carbone
  2013-01-20 17:57       ` Trouble about Roland UA-55 and snd-usb-audio module Clemens Ladisch
  0 siblings, 2 replies; 17+ messages in thread
From: Smeefer Carbone @ 2013-01-09 11:58 UTC (permalink / raw)
  To: alsa-devel

Hello, I just got the UA-55 in the mail today. I'm not sure what I need to do in
order to begin working on making it work in my AV Linux 6.0 debian squeeze.

I'm a musician, but I don't know any programming languages (yet). I live with a
friend who knows java and c++. He said he might be able to assist in a project
to get drivers working for these usb 2.0 roland soundcards.

I will do whatever it takes to get the UA-55 operating at 24bit 96khz (or even
better 192khz), recording and playback duplex on my operating system (which will
be such a nice upgrade from the UA-25 EX). Please let me know how I can help and
what I can try on my system to get this device working. Thank you!

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Roland UA-55
  2013-01-09 11:58     ` Trouble about Roland " Smeefer Carbone
@ 2013-01-10 11:02       ` Smeefer Carbone
  2013-01-20 17:57       ` Trouble about Roland UA-55 and snd-usb-audio module Clemens Ladisch
  1 sibling, 0 replies; 17+ messages in thread
From: Smeefer Carbone @ 2013-01-10 11:02 UTC (permalink / raw)
  To: alsa-devel

smeefer@*********:~$ lsusb -v

Bus 002 Device 007: ID 0582:012f 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          0x012f 
  bcdDevice            1.00
  iManufacturer           1 
  iProduct                2 
  iSerial                 3 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength          511
    bNumInterfaces          5
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              450mA
    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      1 
      bInterfaceProtocol      2 
      iInterface              0 
      ** UNRECOGNIZED:  07 24 01 01 00 01 01
      ** UNRECOGNIZED:  0b 24 02 01 04 04 18 01 44 ac 00
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x05  EP 5 OUT
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0070  1x 112 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       2
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      1 
      bInterfaceProtocol      2 
      iInterface              0 
      ** UNRECOGNIZED:  07 24 01 01 00 01 01
      ** UNRECOGNIZED:  0b 24 02 01 04 04 18 01 80 bb 00
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x05  EP 5 OUT
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0070  1x 112 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       3
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      1 
      bInterfaceProtocol      2 
      iInterface              0 
      ** UNRECOGNIZED:  07 24 01 01 00 01 01
      ** UNRECOGNIZED:  0b 24 02 01 04 04 18 01 00 77 01
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x05  EP 5 OUT
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x00d0  1x 208 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       4
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      1 
      bInterfaceProtocol      2 
      iInterface              0 
      ** UNRECOGNIZED:  07 24 01 01 00 01 01
      ** UNRECOGNIZED:  0b 24 02 01 02 04 18 01 00 ee 02
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x05  EP 5 OUT
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x00c8  1x 200 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      1 
      bInterfaceProtocol      2 
      iInterface              0 
      ** UNRECOGNIZED:  07 24 01 01 00 01 01
      ** UNRECOGNIZED:  0b 24 02 01 06 04 18 01 44 ac 00
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x85  EP 5 IN
        bmAttributes           37
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Implicit feedback Data
        wMaxPacketSize     0x00a8  1x 168 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       2
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      1 
      bInterfaceProtocol      2 
      iInterface              0 
      ** UNRECOGNIZED:  07 24 01 01 00 01 01
      ** UNRECOGNIZED:  0b 24 02 01 06 04 18 01 80 bb 00
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x85  EP 5 IN
        bmAttributes           37
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Implicit feedback Data
        wMaxPacketSize     0x00a8  1x 168 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       3
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      1 
      bInterfaceProtocol      2 
      iInterface              0 
      ** UNRECOGNIZED:  07 24 01 01 00 01 01
      ** UNRECOGNIZED:  0b 24 02 01 06 04 18 01 00 77 01
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x85  EP 5 IN
        bmAttributes           37
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Implicit feedback Data
        wMaxPacketSize     0x0138  1x 312 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       4
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      1 
      bInterfaceProtocol      2 
      iInterface              0 
      ** UNRECOGNIZED:  07 24 01 01 00 01 01
      ** UNRECOGNIZED:  0b 24 02 01 02 04 18 01 00 ee 02
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x85  EP 5 IN
        bmAttributes           37
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Implicit feedback Data
        wMaxPacketSize     0x00c8  1x 200 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     0x06  EP 6 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     0x86  EP 6 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     0x06  EP 6 OUT
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               4
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x86  EP 6 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               4
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      1 
      bInterfaceProtocol      4 
      iInterface              0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      1 
      bInterfaceProtocol      4 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               4
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        4
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      1 
      bInterfaceProtocol      5 
      iInterface              0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        4
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      1 
      bInterfaceProtocol      5 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        4
      bAlternateSetting       2
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      1 
      bInterfaceProtocol      5 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               2
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        4
      bAlternateSetting       3
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      1 
      bInterfaceProtocol      5 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               3
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        4
      bAlternateSetting       4
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      1 
      bInterfaceProtocol      5 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               4
can't get device qualifier: Operation not permitted
can't get debug descriptor: Operation not permitted
cannot read device status, Operation not permitted (1)

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Trouble about Roland UA-55 and snd-usb-audio module
  2013-01-09 11:58     ` Trouble about Roland " Smeefer Carbone
  2013-01-10 11:02       ` Roland UA-55 Smeefer Carbone
@ 2013-01-20 17:57       ` Clemens Ladisch
  2013-01-25 19:24         ` Smeefer
  1 sibling, 1 reply; 17+ messages in thread
From: Clemens Ladisch @ 2013-01-20 17:57 UTC (permalink / raw)
  To: Smeefer Carbone; +Cc: FirebUntU, alsa-devel

Smeefer Carbone wrote:
> Hello, I just got the UA-55 in the mail today. I'm not sure what I need to do in
> order to begin working on making it work in my AV Linux 6.0 debian squeeze.

Some driver code must be written.
I'm working on it (in my copious free time).

> Please let me know how I can help and what I can try on my system to get this
> device working.

Look up how to compile and install your own kernel on your distribution.


Regards,
Clemens

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Trouble about Roland UA-55 and snd-usb-audio module
  2013-01-20 17:57       ` Trouble about Roland UA-55 and snd-usb-audio module Clemens Ladisch
@ 2013-01-25 19:24         ` Smeefer
  2013-01-28 21:21           ` Smeefer
  0 siblings, 1 reply; 17+ messages in thread
From: Smeefer @ 2013-01-25 19:24 UTC (permalink / raw)
  To: alsa-devel

One member of the AV Linux development team (trulan) told me that they can 
add a patch to the next kernel build and I can test it out on my 
system. If you send me a link where I can download your driver code, 
then I can link it in this forum:
http://www.remastersys.com/forums/index.php?topic=2857.0

I'm excited to get working on this! Thank you.

Smeefer

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Trouble about Roland UA-55 and snd-usb-audio module
  2013-01-25 19:24         ` Smeefer
@ 2013-01-28 21:21           ` Smeefer
  2013-01-28 21:43             ` Clemens Ladisch
  0 siblings, 1 reply; 17+ messages in thread
From: Smeefer @ 2013-01-28 21:21 UTC (permalink / raw)
  To: alsa-devel

Clemens,

What kernel version do you prefer me to work with?

Smeefer

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Trouble about Roland UA-55 and snd-usb-audio module
  2013-01-28 21:21           ` Smeefer
@ 2013-01-28 21:43             ` Clemens Ladisch
  2013-01-31  3:40               ` Smeefer
  0 siblings, 1 reply; 17+ messages in thread
From: Clemens Ladisch @ 2013-01-28 21:43 UTC (permalink / raw)
  To: alsa-devel

Smeefer wrote:
> What kernel version do you prefer me to work with?

What I have on my machine where I write patches is bleeding edge,
but anything more or less recent should do.


Regards,
Clemens

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Trouble about Roland UA-55 and snd-usb-audio module
  2013-01-28 21:43             ` Clemens Ladisch
@ 2013-01-31  3:40               ` Smeefer
  2013-02-07 20:35                 ` Clemens Ladisch
  0 siblings, 1 reply; 17+ messages in thread
From: Smeefer @ 2013-01-31  3:40 UTC (permalink / raw)
  To: alsa-devel

Ok. The latest AV Linux kernel version is 3.0.47-avl-10. I will find out if this
is close to bleeding edge like i hope it is!
Please let me know when you can send me a patch. I will forward it to trulan,
the AV Linux kernel developer. If you send it by e-mail or post a link to where
I can download it, that would be perfect. Thanks Clemens.

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Trouble about Roland UA-55 and snd-usb-audio module
  2013-01-31  3:40               ` Smeefer
@ 2013-02-07 20:35                 ` Clemens Ladisch
  2013-02-08 12:55                   ` Clemens Ladisch
  0 siblings, 1 reply; 17+ messages in thread
From: Clemens Ladisch @ 2013-02-07 20:35 UTC (permalink / raw)
  To: Smeefer; +Cc: alsa-devel

Smeefer wrote:
> The latest AV Linux kernel version is 3.0.47-avl-10. I will find out if this
> is close to bleeding edge like i hope it is!

In theory, implicit feedback support was added in kernel 3.5, but there
have been lots of important bugfixes since then, so I've just based it
on 3.8-rc6:

--8<---------------------------------------------------------------->8--
The following changes since commit 88b62b915b0b7e25870eb0604ed9a92ba4bfc9f7:

  Linux 3.8-rc6 (2013-02-01 12:08:14 +1100)

are available in the git repository at:

  git://git.alsa-project.org/alsa-kprivate.git full-roland-support

for you to fetch changes up to 59f42365d5e06ec5f0660e3062ab14eaa03bdc31:

  ALSA: usb-audio: detect PCM streams on all recent Roland devices (2013-02-07 21:09:01 +0100)

----------------------------------------------------------------
Clemens Ladisch (4):
      ALSA: usb-audio: store protocol version in struct audioformat
      ALSA: usb-audio: detect implicit feedback on Roland devices
      ALSA: usb-audio: detect MIDI ports on all recent Roland devices
      ALSA: usb-audio: detect PCM streams on all recent Roland devices

 sound/usb/card.h         |  1 +
 sound/usb/clock.c        |  4 +---
 sound/usb/format.c       | 34 +++++++++---------------------
 sound/usb/format.h       |  2 +-
 sound/usb/midi.c         | 41 ++++++++++++++++++++++++++++++++++++
 sound/usb/pcm.c          | 43 ++++++++++++++++++++++++++++++++++---
 sound/usb/quirks-table.h | 25 ++++++++++++++++++++++
 sound/usb/quirks.c       | 55 ++++++++++++++++++++++++++++++++++++++++++++++++
 sound/usb/stream.c       | 13 +++++++++++-
 sound/usb/usbaudio.h     |  2 ++
 10 files changed, 188 insertions(+), 32 deletions(-)

diff --git a/sound/usb/card.h b/sound/usb/card.h
index 8a751b4..76907e2 100644
--- a/sound/usb/card.h
+++ b/sound/usb/card.h
@@ -21,6 +21,7 @@ struct audioformat {
 	unsigned char endpoint;		/* endpoint */
 	unsigned char ep_attr;		/* endpoint attributes */
 	unsigned char datainterval;	/* log_2 of data packet interval */
+	unsigned char protocol;		/* UAC_VERSION_1/2 */
 	unsigned int maxpacksize;	/* max. packet size */
 	unsigned int rates;		/* rate bitmasks */
 	unsigned int rate_min, rate_max;	/* min/max rates */
diff --git a/sound/usb/clock.c b/sound/usb/clock.c
index 5e634a2..787f097 100644
--- a/sound/usb/clock.c
+++ b/sound/usb/clock.c
@@ -301,9 +301,7 @@ int snd_usb_init_sample_rate(struct snd_usb_audio *chip, int iface,
 			     struct usb_host_interface *alts,
 			     struct audioformat *fmt, int rate)
 {
-	struct usb_interface_descriptor *altsd = get_iface_desc(alts);
-
-	switch (altsd->bInterfaceProtocol) {
+	switch (fmt->protocol) {
 	case UAC_VERSION_1:
 	default:
 		return set_sample_rate_v1(chip, iface, alts, fmt, rate);
diff --git a/sound/usb/format.c b/sound/usb/format.c
index e831ee4..ae1198b 100644
--- a/sound/usb/format.c
+++ b/sound/usb/format.c
@@ -43,13 +43,12 @@
  */
 static u64 parse_audio_format_i_type(struct snd_usb_audio *chip,
 				     struct audioformat *fp,
-				     int format, void *_fmt,
-				     int protocol)
+				     int format, void *_fmt)
 {
 	int sample_width, sample_bytes;
 	u64 pcm_formats;

-	switch (protocol) {
+	switch (fp->protocol) {
 	case UAC_VERSION_1:
 	default: {
 		struct uac_format_type_i_discrete_descriptor *fmt = _fmt;
@@ -354,11 +353,8 @@ err:
  */
 static int parse_audio_format_i(struct snd_usb_audio *chip,
 				struct audioformat *fp, int format,
-				struct uac_format_type_i_continuous_descriptor *fmt,
-				struct usb_host_interface *iface)
+				struct uac_format_type_i_continuous_descriptor *fmt)
 {
-	struct usb_interface_descriptor *altsd = get_iface_desc(iface);
-	int protocol = altsd->bInterfaceProtocol;
 	int pcm_format, ret;

 	if (fmt->bFormatType == UAC_FORMAT_TYPE_III) {
@@ -380,8 +376,7 @@ static int parse_audio_format_i(struct snd_usb_audio *chip,
 		}
 		fp->formats = 1uLL << pcm_format;
 	} else {
-		fp->formats = parse_audio_format_i_type(chip, fp, format,
-							fmt, protocol);
+		fp->formats = parse_audio_format_i_type(chip, fp, format, fmt);
 		if (!fp->formats)
 			return -EINVAL;
 	}
@@ -391,11 +386,8 @@ static int parse_audio_format_i(struct snd_usb_audio *chip,
 	 * proprietary class specific descriptor.
 	 * audio class v2 uses class specific EP0 range requests for that.
 	 */
-	switch (protocol) {
+	switch (fp->protocol) {
 	default:
-		snd_printdd(KERN_WARNING "%d:%u:%d : invalid protocol version %d, assuming v1\n",
-			   chip->dev->devnum, fp->iface, fp->altsetting, protocol);
-		/* fall through */
 	case UAC_VERSION_1:
 		fp->channels = fmt->bNrChannels;
 		ret = parse_audio_format_rates_v1(chip, fp, (unsigned char *) fmt, 7);
@@ -420,12 +412,9 @@ static int parse_audio_format_i(struct snd_usb_audio *chip,
  */
 static int parse_audio_format_ii(struct snd_usb_audio *chip,
 				 struct audioformat *fp,
-				 int format, void *_fmt,
-				 struct usb_host_interface *iface)
+				 int format, void *_fmt)
 {
 	int brate, framesize, ret;
-	struct usb_interface_descriptor *altsd = get_iface_desc(iface);
-	int protocol = altsd->bInterfaceProtocol;

 	switch (format) {
 	case UAC_FORMAT_TYPE_II_AC3:
@@ -445,11 +434,8 @@ static int parse_audio_format_ii(struct snd_usb_audio *chip,

 	fp->channels = 1;

-	switch (protocol) {
+	switch (fp->protocol) {
 	default:
-		snd_printdd(KERN_WARNING "%d:%u:%d : invalid protocol version %d, assuming v1\n",
-			   chip->dev->devnum, fp->iface, fp->altsetting, protocol);
-		/* fall through */
 	case UAC_VERSION_1: {
 		struct uac_format_type_ii_discrete_descriptor *fmt = _fmt;
 		brate = le16_to_cpu(fmt->wMaxBitRate);
@@ -475,17 +461,17 @@ static int parse_audio_format_ii(struct snd_usb_audio *chip,

 int snd_usb_parse_audio_format(struct snd_usb_audio *chip, struct audioformat *fp,
 			       int format, struct uac_format_type_i_continuous_descriptor *fmt,
-			       int stream, struct usb_host_interface *iface)
+			       int stream)
 {
 	int err;

 	switch (fmt->bFormatType) {
 	case UAC_FORMAT_TYPE_I:
 	case UAC_FORMAT_TYPE_III:
-		err = parse_audio_format_i(chip, fp, format, fmt, iface);
+		err = parse_audio_format_i(chip, fp, format, fmt);
 		break;
 	case UAC_FORMAT_TYPE_II:
-		err = parse_audio_format_ii(chip, fp, format, fmt, iface);
+		err = parse_audio_format_ii(chip, fp, format, fmt);
 		break;
 	default:
 		snd_printd(KERN_INFO "%d:%u:%d : format type %d is not supported yet\n",
diff --git a/sound/usb/format.h b/sound/usb/format.h
index 387924f..60b6682 100644
--- a/sound/usb/format.h
+++ b/sound/usb/format.h
@@ -4,6 +4,6 @@
 int snd_usb_parse_audio_format(struct snd_usb_audio *chip,
 			       struct audioformat *fp, int format,
 			       struct uac_format_type_i_continuous_descriptor *fmt,
-			       int stream, struct usb_host_interface *iface);
+			       int stream);

 #endif /*  __USBAUDIO_FORMAT_H */
diff --git a/sound/usb/midi.c b/sound/usb/midi.c
index 34b9bb7..3508360 100644
--- a/sound/usb/midi.c
+++ b/sound/usb/midi.c
@@ -1959,6 +1959,44 @@ static int snd_usbmidi_detect_yamaha(struct snd_usb_midi* umidi,
 }

 /*
+ * Detects the endpoints and ports of Roland devices.
+ */
+static int snd_usbmidi_detect_roland(struct snd_usb_midi* umidi,
+				     struct snd_usb_midi_endpoint_info* endpoint)
+{
+	struct usb_interface* intf;
+	struct usb_host_interface *hostif;
+	u8* cs_desc;
+
+	intf = umidi->iface;
+	if (!intf)
+		return -ENOENT;
+	hostif = intf->altsetting;
+	/*
+	 * Some devices have a descriptor <06 24 F1 02 <inputs> <outputs>>,
+	 * some have standard class descriptors, or both kinds, or neither.
+	 */
+	for (cs_desc = hostif->extra;
+	     cs_desc < hostif->extra + hostif->extralen && cs_desc[0] >= 2;
+	     cs_desc += cs_desc[0]) {
+		if (cs_desc[0] >= 6 &&
+		    cs_desc[1] == USB_DT_CS_INTERFACE &&
+		    cs_desc[2] == 0xf1 &&
+		    cs_desc[3] == 0x02) {
+			endpoint->in_cables  = (1 << cs_desc[4]) - 1;
+			endpoint->out_cables = (1 << cs_desc[5]) - 1;
+			return snd_usbmidi_detect_endpoints(umidi, endpoint, 1);
+		} else if (cs_desc[0] >= 7 &&
+			   cs_desc[1] == USB_DT_CS_INTERFACE &&
+			   cs_desc[2] == UAC_HEADER) {
+			return snd_usbmidi_get_ms_info(umidi, endpoint);
+		}
+	}
+
+	return -ENODEV;
+}
+
+/*
  * Creates the endpoints and their ports for Midiman devices.
  */
 static int snd_usbmidi_create_endpoints_midiman(struct snd_usb_midi* umidi,
@@ -2171,6 +2209,9 @@ int snd_usbmidi_create(struct snd_card *card,
 	case QUIRK_MIDI_YAMAHA:
 		err = snd_usbmidi_detect_yamaha(umidi, &endpoints[0]);
 		break;
+	case QUIRK_MIDI_ROLAND:
+		err = snd_usbmidi_detect_roland(umidi, &endpoints[0]);
+		break;
 	case QUIRK_MIDI_MIDIMAN:
 		umidi->usb_protocol_ops = &snd_usbmidi_midiman_ops;
 		memcpy(&endpoints[0], quirk->data,
diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c
index d82e378..3c2f9f5 100644
--- a/sound/usb/pcm.c
+++ b/sound/usb/pcm.c
@@ -199,13 +199,11 @@ int snd_usb_init_pitch(struct snd_usb_audio *chip, int iface,
 		       struct usb_host_interface *alts,
 		       struct audioformat *fmt)
 {
-	struct usb_interface_descriptor *altsd = get_iface_desc(alts);
-
 	/* if endpoint doesn't have pitch control, bail out */
 	if (!(fmt->attributes & UAC_EP_CS_ATTR_PITCH_CONTROL))
 		return 0;

-	switch (altsd->bInterfaceProtocol) {
+	switch (fmt->protocol) {
 	case UAC_VERSION_1:
 	default:
 		return init_pitch_v1(chip, iface, alts, fmt);
@@ -297,6 +295,33 @@ static int deactivate_endpoints(struct snd_usb_substream *subs)
 	return 0;
 }

+static int search_roland_implicit_fb(struct usb_device *dev, int ifnum,
+				     struct usb_host_interface **alts,
+				     unsigned int *ep)
+{
+	struct usb_interface *iface;
+	struct usb_interface_descriptor *altsd;
+	struct usb_endpoint_descriptor *epd;
+
+	iface = usb_ifnum_to_if(dev, ifnum);
+	if (!iface || iface->num_altsetting < 2)
+		return -ENOENT;
+	*alts = &iface->altsetting[1];
+	altsd = get_iface_desc(*alts);
+	if (altsd->bInterfaceClass != USB_CLASS_VENDOR_SPEC ||
+	    altsd->bInterfaceSubClass != 2 ||
+	    altsd->bInterfaceProtocol != 1 ||
+	    altsd->bNumEndpoints < 1)
+		return -ENOENT;
+	epd = get_endpoint(*alts, 0);
+	if (!usb_endpoint_is_isoc_in(epd) ||
+	    (epd->bmAttributes & USB_ENDPOINT_USAGE_MASK) !=
+					USB_ENDPOINT_USAGE_IMPLICIT_FB)
+		return -ENOENT;
+	*ep = epd->bEndpointAddress;
+	return 0;
+}
+
 /*
  * find a matching format and set up the interface
  */
@@ -389,6 +414,18 @@ static int set_format(struct snd_usb_substream *subs, struct audioformat *fmt)
 			goto add_sync_ep;
 		}
 	}
+	if (is_playback &&
+	    attr == USB_ENDPOINT_SYNC_ASYNC &&
+	    altsd->bInterfaceClass == USB_CLASS_VENDOR_SPEC &&
+	    altsd->bInterfaceSubClass == 2 &&
+	    altsd->bInterfaceProtocol == 2 &&
+	    altsd->bNumEndpoints == 1 &&
+	    USB_ID_VENDOR(subs->stream->chip->usb_id) == 0x0582 /* Roland */ &&
+	    search_roland_implicit_fb(dev, altsd->bInterfaceNumber + 1,
+				      &alts, &ep) >= 0) {
+		implicit_fb = 1;
+		goto add_sync_ep;
+	}

 	if (((is_playback && attr == USB_ENDPOINT_SYNC_ASYNC) ||
 	     (!is_playback && attr == USB_ENDPOINT_SYNC_ADAPTIVE)) &&
diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h
index 64d25a7..4bf53d5 100644
--- a/sound/usb/quirks-table.h
+++ b/sound/usb/quirks-table.h
@@ -1953,6 +1953,31 @@ YAMAHA_DEVICE(0x7010, "UB99"),
 		}
 	}
 },
+/* this catches most recent vendor-specific Roland devices */
+{
+	.match_flags = USB_DEVICE_ID_MATCH_VENDOR |
+	               USB_DEVICE_ID_MATCH_INT_CLASS |
+		       USB_DEVICE_ID_MATCH_INT_SUBCLASS,
+	.idVendor = 0x0582,
+	.bInterfaceClass    = USB_CLASS_VENDOR_SPEC,
+	.bInterfaceSubClass = USB_SUBCLASS_AUDIOSTREAMING,
+	.driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
+		.ifnum = QUIRK_ANY_INTERFACE,
+		.type = QUIRK_AUDIO_ROLAND
+	}
+},
+{
+	.match_flags = USB_DEVICE_ID_MATCH_VENDOR |
+	               USB_DEVICE_ID_MATCH_INT_CLASS |
+		       USB_DEVICE_ID_MATCH_INT_SUBCLASS,
+	.idVendor = 0x0582,
+	.bInterfaceClass    = USB_CLASS_VENDOR_SPEC,
+	.bInterfaceSubClass = USB_SUBCLASS_MIDISTREAMING,
+	.driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
+		.ifnum = QUIRK_ANY_INTERFACE,
+		.type = QUIRK_MIDI_ROLAND
+	}
+},

 /* Guillemot devices */
 {
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
index 2c97185..9209d4d 100644
--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
@@ -173,6 +173,59 @@ static int create_fixed_stream_quirk(struct snd_usb_audio *chip,
 	return 0;
 }

+static int create_roland_audio_quirk(struct snd_usb_audio *chip,
+				     struct usb_interface *iface,
+				     struct usb_driver *driver,
+				     const struct snd_usb_audio_quirk *quirk)
+{
+	struct usb_host_interface *alts;
+	struct usb_interface_descriptor *altsd;
+	struct usb_endpoint_descriptor *epd;
+
+	/*
+	 * Most Roland audio streaming interfaces have more or less standard
+	 * descriptors, but older devices might lack descriptors, and future
+	 * ones might change, so ensure that we fail silently if the interface
+	 * doesn't look exactly right.
+	 */
+
+	/* must have a non-zero altsetting for streaming */
+	if (iface->num_altsetting < 2)
+		return -ENODEV;
+	alts = &iface->altsetting[1];
+	altsd = get_iface_desc(alts);
+
+	/* must have an isochronous endpoint for streaming */
+	if (altsd->bNumEndpoints < 1)
+		return -ENODEV;
+	epd = get_endpoint(alts, 0);
+	if (!usb_endpoint_xfer_isoc(epd))
+		return -ENODEV;
+
+	/* must be correctly marked as input/output */
+	switch (altsd->bInterfaceProtocol) {
+	case 0:
+		break;
+	case 1:
+		if (!usb_endpoint_dir_in(epd))
+			return -ENODEV;
+		break;
+	case 2:
+		if (!usb_endpoint_dir_out(epd))
+			return -ENODEV;
+		break;
+	default:
+		return -ENODEV;
+	}
+
+	/* must have format descriptors */
+	if (!snd_usb_find_csint_desc(alts->extra, alts->extralen, NULL,
+				     UAC_FORMAT_TYPE))
+		return -ENODEV;
+
+	return create_standard_audio_quirk(chip, iface, driver, NULL);
+}
+
 /*
  * Create a stream for an Edirol UA-700/UA-25/UA-4FX interface.
  * The only way to detect the sample rate is by looking at wMaxPacketSize.
@@ -304,6 +357,7 @@ int snd_usb_create_quirk(struct snd_usb_audio *chip,
 		[QUIRK_MIDI_STANDARD_INTERFACE] = create_any_midi_quirk,
 		[QUIRK_MIDI_FIXED_ENDPOINT] = create_any_midi_quirk,
 		[QUIRK_MIDI_YAMAHA] = create_any_midi_quirk,
+		[QUIRK_MIDI_ROLAND] = create_any_midi_quirk,
 		[QUIRK_MIDI_MIDIMAN] = create_any_midi_quirk,
 		[QUIRK_MIDI_NOVATION] = create_any_midi_quirk,
 		[QUIRK_MIDI_RAW_BYTES] = create_any_midi_quirk,
@@ -313,6 +367,7 @@ int snd_usb_create_quirk(struct snd_usb_audio *chip,
 		[QUIRK_MIDI_FTDI] = create_any_midi_quirk,
 		[QUIRK_AUDIO_STANDARD_INTERFACE] = create_standard_audio_quirk,
 		[QUIRK_AUDIO_FIXED_ENDPOINT] = create_fixed_stream_quirk,
+		[QUIRK_AUDIO_ROLAND] = create_roland_audio_quirk,
 		[QUIRK_AUDIO_EDIROL_UAXX] = create_uaxx_quirk,
 		[QUIRK_AUDIO_ALIGN_TRANSFER] = create_align_transfer_quirk,
 		[QUIRK_AUDIO_STANDARD_MIXER] = create_standard_mixer_quirk,
diff --git a/sound/usb/stream.c b/sound/usb/stream.c
index ad181d5..6e837b7 100644
--- a/sound/usb/stream.c
+++ b/sound/usb/stream.c
@@ -507,6 +507,16 @@ int snd_usb_parse_audio_interface(struct snd_usb_audio *chip, int iface_no)
 		if (snd_usb_apply_interface_quirk(chip, iface_no, altno))
 			continue;

+		/*
+		 * Roland audio streaming interfaces are marked with protocols
+		 * 0/1/2, but are UAC 1 compatible.
+		 */
+		if (USB_ID_VENDOR(chip->usb_id) == 0x0582 &&
+		    altsd->bInterfaceClass == USB_CLASS_VENDOR_SPEC &&
+		    altsd->bInterfaceSubClass == USB_SUBCLASS_AUDIOSTREAMING &&
+		    protocol <= 2)
+			protocol = UAC_VERSION_1;
+
 		chconfig = 0;
 		/* get audio formats */
 		switch (protocol) {
@@ -630,6 +640,7 @@ int snd_usb_parse_audio_interface(struct snd_usb_audio *chip, int iface_no)
 		fp->endpoint = get_endpoint(alts, 0)->bEndpointAddress;
 		fp->ep_attr = get_endpoint(alts, 0)->bmAttributes;
 		fp->datainterval = snd_usb_parse_datainterval(chip, alts);
+		fp->protocol = protocol;
 		fp->maxpacksize = le16_to_cpu(get_endpoint(alts, 0)->wMaxPacketSize);
 		fp->channels = num_channels;
 		if (snd_usb_get_speed(dev) == USB_SPEED_HIGH)
@@ -671,7 +682,7 @@ int snd_usb_parse_audio_interface(struct snd_usb_audio *chip, int iface_no)
 		}

 		/* ok, let's parse further... */
-		if (snd_usb_parse_audio_format(chip, fp, format, fmt, stream, alts) < 0) {
+		if (snd_usb_parse_audio_format(chip, fp, format, fmt, stream) < 0) {
 			kfree(fp->rate_table);
 			kfree(fp->chmap);
 			kfree(fp);
diff --git a/sound/usb/usbaudio.h b/sound/usb/usbaudio.h
index 1ac3fd9..4313747 100644
--- a/sound/usb/usbaudio.h
+++ b/sound/usb/usbaudio.h
@@ -74,6 +74,7 @@ enum quirk_type {
 	QUIRK_MIDI_STANDARD_INTERFACE,
 	QUIRK_MIDI_FIXED_ENDPOINT,
 	QUIRK_MIDI_YAMAHA,
+	QUIRK_MIDI_ROLAND,
 	QUIRK_MIDI_MIDIMAN,
 	QUIRK_MIDI_NOVATION,
 	QUIRK_MIDI_RAW_BYTES,
@@ -84,6 +85,7 @@ enum quirk_type {
 	QUIRK_MIDI_FTDI,
 	QUIRK_AUDIO_STANDARD_INTERFACE,
 	QUIRK_AUDIO_FIXED_ENDPOINT,
+	QUIRK_AUDIO_ROLAND,
 	QUIRK_AUDIO_EDIROL_UAXX,
 	QUIRK_AUDIO_ALIGN_TRANSFER,
 	QUIRK_AUDIO_STANDARD_MIXER,

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* Re: Trouble about Roland UA-55 and snd-usb-audio module
  2013-02-07 20:35                 ` Clemens Ladisch
@ 2013-02-08 12:55                   ` Clemens Ladisch
  2013-03-03 12:25                     ` LH
  0 siblings, 1 reply; 17+ messages in thread
From: Clemens Ladisch @ 2013-02-08 12:55 UTC (permalink / raw)
  To: Smeefer; +Cc: alsa-devel

I wrote:
>       ALSA: usb-audio: detect implicit feedback on Roland devices

This probably works only with the first rate (44.1 kHz), but please
test anyway.


Regards,
Clemens

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Trouble about Roland UA-55 and snd-usb-audio module
  2013-02-08 12:55                   ` Clemens Ladisch
@ 2013-03-03 12:25                     ` LH
  2016-02-29 10:07                       ` Jeroen Kransen
  0 siblings, 1 reply; 17+ messages in thread
From: LH @ 2013-03-03 12:25 UTC (permalink / raw)
  To: alsa-devel

On 02/08/2013 02:55 PM, Clemens Ladisch wrote:
> I wrote:
>>        ALSA: usb-audio: detect implicit feedback on Roland devices
> This probably works only with the first rate (44.1 kHz), but please
> test anyway.
>
>
> Regards,
> Clemens
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>
>
I can confirm the current version 
0ddd4478912f64e6976774c00d29a5d24adab479 works at 44.1kHz with the 
Roland Quad-Capture.

$ lsusb|grep Roland
Bus 003 Device 002: ID 0582:012f Roland Corp.


Regards,
Lasse

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Trouble about Roland UA-55 and snd-usb-audio module
  2013-03-03 12:25                     ` LH
@ 2016-02-29 10:07                       ` Jeroen Kransen
  2016-03-03 13:11                         ` Clemens Ladisch
  0 siblings, 1 reply; 17+ messages in thread
From: Jeroen Kransen @ 2016-02-29 10:07 UTC (permalink / raw)
  To: alsa-devel

Hello, what is the status of the support for the UA-55? I get the impression 
from this discussion that by now it should be in de linux kernel. However, on 
this list, it is still noted as unsupported:

http://wiki.linuxaudio.org/wiki/hardware_support#roland_-_quad-capture_ua-
55_usb-2

I am planning to buy one, so I would love to know if it works on Linux.

Jeroen

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Trouble about Roland UA-55 and snd-usb-audio module
  2016-02-29 10:07                       ` Jeroen Kransen
@ 2016-03-03 13:11                         ` Clemens Ladisch
  2016-03-06 23:03                           ` JB Fonder
  0 siblings, 1 reply; 17+ messages in thread
From: Clemens Ladisch @ 2016-03-03 13:11 UTC (permalink / raw)
  To: Jeroen Kransen, alsa-devel

Jeroen Kransen wrote:
> Hello, what is the status of the support for the UA-55?

As far as I know, it was supported once at a time, but some later change
in the driver broke it for some unknown reason.


Regards,
Clemens

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Trouble about Roland UA-55 and snd-usb-audio module
  2016-03-03 13:11                         ` Clemens Ladisch
@ 2016-03-06 23:03                           ` JB Fonder
  0 siblings, 0 replies; 17+ messages in thread
From: JB Fonder @ 2016-03-06 23:03 UTC (permalink / raw)
  To: alsa-devel

Clemens Ladisch <clemens <at> ladisch.de> writes:

> 
> Jeroen Kransen wrote:
> > Hello, what is the status of the support for the UA-55?
> 
> As far as I know, it was supported once at a time, but some later change
> in the driver broke it for some unknown reason.
> 
> Regards,
> Clemens
> 


Hi all,

I can confirm this. 
I'm a QUAD CAPTURE user and it was working until the last week. A few
updates later and it does not work anymore :-( ...
It is listed in lsusb but in alsamixer it says "this sound device does not
have any controls". It's incredibly frustrating!

JBF

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2016-03-06 23:15 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-11-14  7:35 Trouble about Roland UA-11 UA-33 UA-55 and snd-usb-audio module FirebUntU
2012-11-14  7:45 ` Clemens Ladisch
2012-11-15 22:40   ` FirebUntU
2012-11-15 22:42   ` FirebUntU
2013-01-09 11:58     ` Trouble about Roland " Smeefer Carbone
2013-01-10 11:02       ` Roland UA-55 Smeefer Carbone
2013-01-20 17:57       ` Trouble about Roland UA-55 and snd-usb-audio module Clemens Ladisch
2013-01-25 19:24         ` Smeefer
2013-01-28 21:21           ` Smeefer
2013-01-28 21:43             ` Clemens Ladisch
2013-01-31  3:40               ` Smeefer
2013-02-07 20:35                 ` Clemens Ladisch
2013-02-08 12:55                   ` Clemens Ladisch
2013-03-03 12:25                     ` LH
2016-02-29 10:07                       ` Jeroen Kransen
2016-03-03 13:11                         ` Clemens Ladisch
2016-03-06 23:03                           ` JB Fonder

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.