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

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

 



On 07/07/14 07:31, Clemens Ladisch wrote:
> David W. wrote:
>> On 06/07/14 20:48, Clemens Ladisch wrote:
>>> David W. wrote:
>>>> arecord -D hw:1,0 -f S32_LE -c14 -r96000 -t wav test.wav
>>>> Recording WAVE 'test.wav' : Signed 32 bit Little Endian, Rate 96000 Hz, Channels 14
>>>> arecord: pcm_read:2031: read error: Input/output error
>>>
>>> Immediately or after 10 seconds?
>>
>> After about 13 seconds.
> 
> This means that the device did not return any error, but did not
> transfer any samples either.
> 
> Apparently, this device needs some vendor-specific magic to enable
> recording.
> 

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




[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