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 > Alsa-user@xxxxxxxxxxxxxxxxxxxxx > https://lists.sourceforge.net/lists/listinfo/alsa-user > ------------------------------------------------------------------------------ Dive into the World of Parallel Programming! The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net _______________________________________________ Alsa-user mailing list Alsa-user@xxxxxxxxxxxxxxxxxxxxx https://lists.sourceforge.net/lists/listinfo/alsa-user