Re: Roland AIRA TR-8 USB audio almost works with ALSA . . .

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [ALSA Devel]     [Linux Audio Users]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]

  Powered by Linux