[alsa-devel] usb-audio: Reloop Play support (TI TUSB3200AC)
Hello,
I've bought a Reloop Play usb soundcard and I'd like to make it work with ALSA.
It is a 4-channels USB soundcard. It is currently correctly recognized by ALSA as a 4-channels soundcard and I can correctly open the channels and feed them with audio. However, no audio is output by the box.
It seems to contain a Texas Instrument TUSB3200AC chipset (same chipset as the Maya44 USB and Hercules DJ console). I guess the problem is a firmware problem but I don't know what to do about it.
I've got a MacOS X driver that works correctly, if that of any help. (I suppose the Windows driver works too but I don't have any Windows at hand.)
I'm willing to do whatever you need me to make it run with ALSA. Could you help me ?
I attached my alsa-info.sh output.
Didier Villevalois.
On 19.10.2012 15:09, Didier 'Ptitjes' Villevalois wrote:
Hello,
I've bought a Reloop Play usb soundcard and I'd like to make it work with ALSA.
It is a 4-channels USB soundcard. It is currently correctly recognized by ALSA as a 4-channels soundcard and I can correctly open the channels and feed them with audio. However, no audio is output by the box.
You're most probably affected by a regression in the driver that was fixes in 3.6.0 and 3.5.5 (and all later kernels). Could you please try one of these and tell us if that works?
It seems to contain a Texas Instrument TUSB3200AC chipset (same chipset as the Maya44 USB and Hercules DJ console). I guess the problem is a firmware problem but I don't know what to do about it.
I've got a MacOS X driver that works correctly, if that of any help. (I suppose the Windows driver works too but I don't have any Windows at hand.)
Did you install any vendor driver on OS X or does it just work with the one that ships with the OS?
Daniel
OK this quirk works perfectly! (hooray!!!)
/* Reloop Play */ { USB_DEVICE(0x200c, 0x100b), .bInterfaceClass = USB_CLASS_PER_INTERFACE, .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { .vendor_name = "Reloop", .product_name = "Play", .ifnum = QUIRK_ANY_INTERFACE, .type = QUIRK_COMPOSITE, .data = &(const struct snd_usb_audio_quirk[]) { { .ifnum = 0, .type = QUIRK_AUDIO_STANDARD_MIXER, }, { .ifnum = 1, .type = QUIRK_AUDIO_FIXED_ENDPOINT, .data = &(const struct audioformat) { .formats = SNDRV_PCM_FMTBIT_S24_3LE, .channels = 4, .iface = 1, .altsetting = 1, .altset_idx = 1, .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE, .endpoint = 0x01, .rates = SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000, .rate_min = 44100, .rate_max = 48000, .nr_rates = 2, .rate_table = (unsigned int[]) { 44100, 48000 } } }, { .ifnum = -1 } } } },
Does anyone have additional comments to do before I make a patch ? Also are there some special ALSA rules or straight signed-off git-formated patches over the kernel tree are OK ?
Thanks again for your help! I'm really happy to have a working device! :D
Didier.
Didier 'Ptitjes' Villevalois wrote:
.vendor_name = "Reloop", .product_name = "Play",
These aren't needed except when they are wrong in the descriptor.
.data = &(const struct audioformat) { .formats = SNDRV_PCM_FMTBIT_S24_3LE, .channels = 4, .iface = 1, .altsetting = 1, .altset_idx = 1, .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE, .endpoint = 0x01,
You might as well set ep_attr to USB_ENDPOINT_SYNC_ADAPTIVE.
Regards, Clemens
On sam., 2012-10-20 at 18:15 +0200, Clemens Ladisch wrote:
Didier 'Ptitjes' Villevalois wrote:
.vendor_name = "Reloop", .product_name = "Play",
These aren't needed except when they are wrong in the descriptor.
In fact there is nothing appearing when I do lsusb, even when I specify them in the quirk. Is this not related ?
.data = &(const struct audioformat) { .formats = SNDRV_PCM_FMTBIT_S24_3LE, .channels = 4, .iface = 1, .altsetting = 1, .altset_idx = 1, .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE, .endpoint = 0x01,
You might as well set ep_attr to USB_ENDPOINT_SYNC_ADAPTIVE.
Oki. I'll do that.
Didier.
Didier 'Ptitjes' Villevalois wrote:
On sam., 2012-10-20 at 18:15 +0200, Clemens Ladisch wrote:
Didier 'Ptitjes' Villevalois wrote:
.vendor_name = "Reloop", .product_name = "Play",
These aren't needed except when they are wrong in the descriptor.
In fact there is nothing appearing when I do lsusb, even when I specify them in the quirk. Is this not related ?
Are they wrong when you do not specify them in the quirk?
Regards, Clemens
participants (3)
-
Clemens Ladisch
-
Daniel Mack
-
Didier 'Ptitjes' Villevalois