Re: [Alsa-user] Roland AIRA TR-8 USB audio almost works with ALSA . . .
Brought to you by:
perex
From: David W. <reg...@d-...> - 2014-12-30 19:59:33
|
On 15/12/14 23:37, David W. wrote: > On 07/07/14 07:31, Clemens Ladisch wrote: >> >> Apparently, this device needs some vendor-specific magic to enable >> recording. >> Is enough information on this USB audio device provided below to create an appropriate entry in sound/usb/quirks-table.h to enable play and record? I can capture more USB packets from the windows driver if necessary. If the regular ALSA developers are too busy to write a suitable quirks-table.h patch, where can I find documentation to describe how to write one myself? thanks. David. > > I finally got round to examining some USB packets for this device. > > Hopefully the information to patch sound/usb/quirks-table.h with the > necessary vendor-specific magic to enable recording and playback is > somewhere below. > > I need some help for the actual patching of sound/usb/quirks-table.h though! > > > amidi -l > > Dir Device Name > IO hw:0,0,0 USB X-Session MIDI 1 > I hw:0,0,1 USB X-Session MIDI 2 > IO hw:2,0,0 TR-8 MIDI 1 # this device > IO hw:2,0,1 TR-8 MIDI 2 # this device > > aplay -l > **** List of PLAYBACK Hardware Devices **** > card 0: Pro [FastTrack Pro], device 0: USB Audio [USB Audio] > Subdevices: 0/1 > Subdevice #0: subdevice #0 > card 0: Pro [FastTrack Pro], device 1: USB Audio [USB Audio #1] > Subdevices: 1/1 > Subdevice #0: subdevice #0 > card 1: TR8 [TR-8], device 0: USB Audio [USB Audio] # this device > Subdevices: 1/1 > Subdevice #0: subdevice #0 > > ./alsacap -d hw:2,0 > > *** Exploring configuration space of device 'hw:1,0' for playback *** > 4 channels > Sampling rate 96000 Hz > Sample formats: S32_LE > Significant bits: 32 > > > Bus 002 Device 005: ID 0582:017c 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 0x017c > bcdDevice 1.00 > iManufacturer 1 Roland > iProduct 2 TR-8 > iSerial 0 > bNumConfigurations 1 > Configuration Descriptor: > bLength 9 > bDescriptorType 2 > wTotalLength 176 > bNumInterfaces 4 > bConfigurationValue 1 > iConfiguration 0 > bmAttributes 0xc0 > Self Powered > MaxPower 0mA > Interface Descriptor: > bLength 9 > bDescriptorType 4 > bInterfaceNumber 0 > bAlternateSetting 0 > bNumEndpoints 0 > bInterfaceClass 255 Vendor Specific Class > bInterfaceSubClass 255 Vendor Specific Subclass > bInterfaceProtocol 0 > iInterface 0 > Interface Descriptor: > bLength 9 > bDescriptorType 4 > bInterfaceNumber 1 > bAlternateSetting 0 > bNumEndpoints 0 > bInterfaceClass 255 Vendor Specific Class > bInterfaceSubClass 2 > bInterfaceProtocol 2 > iInterface 0 > # <06 24 F1 02 <inputs> <outputs>> from patch comment by Clemens Ladisch > ** UNRECOGNIZED: 06 24 f1 01 00 00 > # Audio OUT 4 channels? > Interface Descriptor: > bLength 9 > bDescriptorType 4 > bInterfaceNumber 1 > bAlternateSetting 1 > bNumEndpoints 1 > bInterfaceClass 255 Vendor Specific Class > bInterfaceSubClass 2 > bInterfaceProtocol 2 > iInterface 0 > # seen in other Roland devices > # http://ubuntuforums.org/archive/index.php/t-1905531.html > ** UNRECOGNIZED: 07 24 01 01 00 01 00 > ** UNRECOGNIZED: 0b 24 02 01 04 04 18 01 00 77 01 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x0d EP 13 OUT > bmAttributes 5 > Transfer Type Isochronous # audio > Synch Type Asynchronous > Usage Type Data > # 4x 24-bit 96kHz == 56 bytes per 4 channels (or 32-bit?) > wMaxPacketSize 0x00e0 1x 224 bytes > bInterval 1 > Interface Descriptor: > bLength 9 > bDescriptorType 4 > bInterfaceNumber 2 > bAlternateSetting 0 > bNumEndpoints 0 > bInterfaceClass 255 Vendor Specific Class > bInterfaceSubClass 2 > bInterfaceProtocol 1 > iInterface 0 > # Audio IN: 14 channels? > Interface Descriptor: > bLength 9 > bDescriptorType 4 > bInterfaceNumber 2 > 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 0e 04 18 01 00 77 01 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x8e EP 14 IN > bmAttributes 37 > Transfer Type Isochronous > Synch Type Asynchronous > Usage Type Implicit feedback Data > # 14 channels x 56 bytes per transfer 96kHz, 24-bit? > wMaxPacketSize 0x0310 1x 784 bytes > bInterval 1 > # MIDI? > Interface Descriptor: > bLength 9 > bDescriptorType 4 > bInterfaceNumber 3 > bAlternateSetting 0 > bNumEndpoints 2 > bInterfaceClass 255 Vendor Specific Class > bInterfaceSubClass 3 > bInterfaceProtocol 0 > iInterface 0 > # <06 24 F1 02 <inputs> <outputs>> 2 in 2 out > ** UNRECOGNIZED: 06 24 f1 02 02 02 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x03 EP 3 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 0x84 EP 4 IN > bmAttributes 2 > Transfer Type Bulk > Synch Type None > Usage Type Data > wMaxPacketSize 0x0200 1x 512 bytes > bInterval 0 > # MIDI: same endpoints needs Bulk AND Interrupt packet types? > Interface Descriptor: > bLength 9 > bDescriptorType 4 > bInterfaceNumber 3 > bAlternateSetting 1 > bNumEndpoints 2 > bInterfaceClass 255 Vendor Specific Class > bInterfaceSubClass 3 > bInterfaceProtocol 0 > iInterface 0 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x03 EP 3 OUT > bmAttributes 3 > Transfer Type Interrupt > Synch Type None > Usage Type Data > wMaxPacketSize 0x0200 1x 512 bytes > bInterval 1 > Endpoint Descriptor: > bLength 7 > bDescriptorType 5 > bEndpointAddress 0x85 EP 5 IN > bmAttributes 3 > Transfer Type Interrupt > Synch Type None > Usage Type Data > wMaxPacketSize 0x0200 1x 512 bytes > bInterval 1 > Device Qualifier (for other device speed): > bLength 10 > bDescriptorType 6 > bcdUSB 2.00 > bDeviceClass 255 Vendor Specific Class > bDeviceSubClass 0 > bDeviceProtocol 255 > bMaxPacketSize0 64 > bNumConfigurations 1 > can't get debug descriptor: Resource temporarily unavailable > Device Status: 0x0001 > Self Powered > > > > A summary of some USB packets during idle, start playback, stop > playback, start recording, stop recording. Playback and record was > probably only using a pair of stereo channels IIRC (maybe even one mono > channel). I could do the same with all channels if that would be of any use. > > > - at all times, polling seems to be 'Bulk or Interrupt Transfer' to > Device Object FFFFFA800BBF1C00h (00000094) with I/O Request Packet > FFFFFA800B97B830h > > > - start playback: 'Select Interface', 'Ifc 1 / Alt 1' and 'Ifc 2 / Alt > 1', Device Object: FFFFFA800BBF1C00h, I/O Request Packet: FFFFFA800778E780h > > 1x 'Create' using I/O Request Packet: FFFFFA800C7A2480h to Device > Objects: FFFFFA800C060C20h (00000095) and FFFFFA800BE30600h (00000096) > > > - during playback: lots of 'Isoch Transfer' to FFFFFA800BBF1C00h with > nine different I/O Request Packets > > > - stop playback: 'Select Interface', 'Ifc 1 / Alt 0' and 'Ifc 1 / Alt > 0', Device Object: FFFFFA800BBF1C00h; I/O Request Packet: > FFFFFA8007552810h > > 1x 'Close' using I/O Request Packet: FFFFFA800C7A2480h to Device > Objects: FFFFFA800C060C20h and FFFFFA800BE30600h; some 'Cleanups' that > return 'Invalid Device Request' > > > - start recording: 'Select Interface', 'Ifc 1 / Alt 1' and 'Ifc 2 / Alt > 1', Device Object: FFFFFA800BBF1C00h, I/O Request Packet: FFFFFA800778E780h > > 5x 'Create' using I/O Request Packet: FFFFFA800C0E9C60h to Device > Objects: FFFFFA800C060C20h and FFFFFA800BE30600h > 2x 'Create' using I/O Request Packet: FFFFFA800C60A010h to Device > Objects: FFFFFA800C060C20h and FFFFFA800BE30600h > 1x 'Create' using I/O Request Packet: FFFFFA800754F010h to Device > Objects: FFFFFA800C060C20h and FFFFFA800BE30600h > 2x 'Close' using I/O Request Packet: FFFFFA800C0E9C60h to Device > Objects: FFFFFA800C060C20h and FFFFFA800BE30600h > > > - during recording: lots of 'Isoch Transfer' to FFFFFA800BBF1C00h with > nine different I/O Request Packets > > > - stop recording: 'Select Interface', 'Ifc 1 / Alt 0' and 'Ifc 1 / Alt > 0', Device Object: FFFFFA800BBF1C00h; I/O Request Packet: > FFFFFA8007552810h > > 4x 'Close' using I/O Request Packet: FFFFFA8007543C60h to Device > Objects: FFFFFA800C060C20h and FFFFFA800BE30600h > > > many thanks to the devs! > > > David W. > > > ------------------------------------------------------------------------------ > Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server > from Actuate! Instantly Supercharge Your Business Reports and Dashboards > with Interactivity, Sharing, Native Excel Exports, App Integration & more > Get technology previously reserved for billion-dollar corporations, FREE > http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk > _______________________________________________ > Alsa-user mailing list > Als...@li... > https://lists.sourceforge.net/lists/listinfo/alsa-user > |