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

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

 



Dear ALSA developers and users,

How can I get this recent Roland USB audio device (TR-8) to work in Linux with ALSA?

many thanks, please see below,

David.


On 30/12/14 19:39, David W. wrote:
> 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.
>>>

This AIRA TR-8 USB audio device, which fails with an 'input/output
error' after ~10 seconds for 'aplay' and 'arecord', seems to require
operation in implicit feedback mode: the following patch suggested by
Daniel Mack solves the 'input/output' error for 'aplay', but the
playback is noisy and corrupted and the kernel complains of 'rogue URB
xfers' (also see below).

Given this infomation and the quote below from lsusb etc., I am hoping
someone would be able to suggest a further patch to get playback and
recording working :-)

I can patch, compile and test recent linux kernels (3.18.2-2-ARCH or
3.18.3-1-ARCH).


Here's the patch from Daniel which helped:


diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c
index 0d8aba5..e35575b 100644
--- a/sound/usb/pcm.c
+++ b/sound/usb/pcm.c
@@ -346,6 +346,15 @@ static int set_sync_ep_implicit_fb_quirk(struct
snd_usb_substream *subs,

 		alts = &iface->altsetting[1];
 		goto add_sync_ep;
+	case USB_ID(0x0582, 0x017c):
+		ep = 0x85;
+		iface = usb_ifnum_to_if(dev, 3);
+
+		if (!iface || iface->num_altsetting == 0)
+			return -EINVAL;
+
+		alts = &iface->altsetting[1];
+		goto add_sync_ep;
 	}
 	if (attr == USB_ENDPOINT_SYNC_ASYNC &&
 	    altsd->bInterfaceClass == USB_CLASS_VENDOR_SPEC &&



Here's an example of the kind of complaint that the 3.18.2-2-ARCH kernel, with the above patch
applied, reports:

Jan 12 23:18:20 dwmobile kernel: WARNING: CPU: 2 PID: 1889 at drivers/usb/core/urb.c:450
usb_submit_urb+0x265/0x5f0 [usbcore]()
Jan 12 23:18:20 dwmobile kernel: usb 2-1.1: BOGUS urb xfer, pipe 0 != type 1
Jan 12 23:18:20 dwmobile kernel: Modules linked in: snd_usb_audio snd_usbmidi_lib snd_rawmidi
snd_seq_device ctr ccm sha256_ssse3 sha256_generic d
Jan 12 23:18:20 dwmobile kernel:  snd_pcm snd_timer video mei_me battery ac snd intel_agp button
intel_gtt acpi_cpufreq shpchp mei soundcore proce
Jan 12 23:18:20 dwmobile kernel: CPU: 2 PID: 1889 Comm: aplay Not tainted 3.18.2-2-custom #1
Jan 12 23:18:20 dwmobile kernel: Hardware name: System76, Inc.                   Pangolin
Performance              /W76x/M77xCUH
Jan 12 23:18:20 dwmobile kernel:  0000000000000000 000000005911a000 ffff88022988faf8 ffffffff8154f134
Jan 12 23:18:20 dwmobile kernel:  0000000000000000 ffff88022988fb50 ffff88022988fb38 ffffffff81072bc1
Jan 12 23:18:20 dwmobile kernel:  ffff88022988fb28 ffff88022f1aba00 0000000000000020 0000000000000003
Jan 12 23:18:20 dwmobile kernel: Call Trace:
Jan 12 23:18:20 dwmobile kernel:  [<ffffffff8154f134>] dump_stack+0x4e/0x71
Jan 12 23:18:20 dwmobile kernel:  [<ffffffff81072bc1>] warn_slowpath_common+0x81/0xa0
Jan 12 23:18:20 dwmobile kernel:  [<ffffffff81072c35>] warn_slowpath_fmt+0x55/0x70
Jan 12 23:18:20 dwmobile kernel:  [<ffffffffa009b005>] ? usb_enable_endpoint+0x85/0x90 [usbcore]
Jan 12 23:18:20 dwmobile kernel:  [<ffffffffa0098e75>] usb_submit_urb+0x265/0x5f0 [usbcore]
Jan 12 23:18:20 dwmobile kernel:  [<ffffffffa08d2c65>] snd_usb_endpoint_start+0x125/0x350
[snd_usb_audio]
Jan 12 23:18:20 dwmobile kernel:  [<ffffffffa08dac89>] start_endpoints+0xb9/0x1a0 [snd_usb_audio]
Jan 12 23:18:20 dwmobile kernel:  [<ffffffffa08dcbad>] snd_usb_pcm_prepare+0x17d/0x560 [snd_usb_audio]
Jan 12 23:18:20 dwmobile kernel:  [<ffffffff810d7af6>] ? current_fs_time+0x16/0x60
Jan 12 23:18:20 dwmobile kernel:  [<ffffffffa028627b>] snd_pcm_do_prepare+0x1b/0x30 [snd_pcm]
Jan 12 23:18:20 dwmobile kernel:  [<ffffffffa0285e4f>] snd_pcm_action_single+0x2f/0x70 [snd_pcm]
Jan 12 23:18:20 dwmobile kernel:  [<ffffffffa0285f06>] snd_pcm_action_nonatomic+0x76/0x80 [snd_pcm]
Jan 12 23:18:20 dwmobile kernel:  [<ffffffffa0288c18>] snd_pcm_common_ioctl1+0x688/0xbc0 [snd_pcm]
Jan 12 23:18:20 dwmobile kernel:  [<ffffffffa0289268>] snd_pcm_playback_ioctl1+0x118/0x280 [snd_pcm]
Jan 12 23:18:20 dwmobile kernel:  [<ffffffffa0289404>] snd_pcm_playback_ioctl+0x34/0x40 [snd_pcm]
Jan 12 23:18:20 dwmobile kernel:  [<ffffffff811e23e0>] do_vfs_ioctl+0x2d0/0x4b0
Jan 12 23:18:20 dwmobile kernel:  [<ffffffff811cf2ac>] ? vfs_write+0x18c/0x200
Jan 12 23:18:20 dwmobile kernel:  [<ffffffff811e2641>] SyS_ioctl+0x81/0xa0
Jan 12 23:18:20 dwmobile kernel:  [<ffffffff81554ca9>] system_call_fastpath+0x12/0x17
Jan 12 23:18:20 dwmobile kernel: ---[ end trace e6531ceb4fd4f2e5 ]---
Jan 12 23:18:20 dwmobile kernel: ------------[ cut here ]------------


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



------------------------------------------------------------------------------
New Year. New Location. New Benefits. New Data Center in Ashburn, VA.
GigeNET is offering a free month of service with a new server in Ashburn.
Choose from 2 high performing configs, both with 100TB of bandwidth.
Higher redundancy.Lower latency.Increased capacity.Completely compliant.
http://p.sf.net/sfu/gigenet
_______________________________________________
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