* 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.