Bug 212519 - Roland Boutique D-05, INTEGRA-7, R-26, & more - USB audio interface not working [snd-usb-audio]
Summary: Roland Boutique D-05, INTEGRA-7, R-26, & more - USB audio interface not worki...
Status: RESOLVED CODE_FIX
Alias: None
Product: Drivers
Classification: Unclassified
Component: Sound(ALSA) (show other bugs)
Hardware: All Linux
: P1 normal
Assignee: Jaroslav Kysela
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-04-01 05:03 UTC by Lucas Endres
Modified: 2021-05-04 17:30 UTC (History)
2 users (show)

See Also:
Kernel Version: 5.11.9
Tree: Mainline
Regression: No


Attachments
Simplify quirk table by matching with capture table (1.96 KB, patch)
2021-04-01 17:02 UTC, Takashi Iwai
Details | Diff
Adds only the simplified proposed Roland IDs to the last patch (3.33 KB, patch)
2021-04-01 23:17 UTC, Lucas Endres
Details | Diff
Capture table only again with more supported devices (5.52 KB, patch)
2021-04-05 19:59 UTC, Lucas Endres
Details | Diff
More fixes for BOSS devices (4.36 KB, patch)
2021-04-12 17:01 UTC, Takashi Iwai
Details | Diff
USB audio clock selector fix (479 bytes, patch)
2021-04-12 17:02 UTC, Takashi Iwai
Details | Diff
Known working Roland devices IMPLICIT_FB_BOTH, others IMPLICIT_FB_FIXED (5.52 KB, patch)
2021-04-14 20:48 UTC, Lucas Endres
Details | Diff
Patch suggested to add to kernel 5.13 (5.37 KB, patch)
2021-04-16 03:48 UTC, Lucas Endres
Details | Diff

Description Lucas Endres 2021-04-01 05:03:55 UTC
I've read that this behavior exists in kernels since sometime after 3.10, and it's the behavior on every kernel I've experienced with a collection of my Roland devices (whether or not "pasuspender -- cat" is running concurrently).

For each of these commands, dmesg is bombarded with lines like "[ 4681.162863] usb 2-1.2: Unable to change format on ep #8e: already in use"

Boutique D-05:
    arecord -D hw:Boutique -f S32_LE -r 96000 -c 2 ./file.wav
    Recording WAVE './file.wav' : Signed 32 bit Little Endian, Rate 96000 Hz, Stereo
    arecord: pcm_read:2153: read error: Input/output error

    aplay -D hw:Boutique -f S32_LE -r 96000 -c 2 ./valid-file.wav
    Playing WAVE './valid-file.wav' : Signed 32 bit Little Endian, Rate 96000 Hz, Stereo
    aplay: pcm_write:2061: write error: Input/output error


INTEGRA-7:
(Built-in controls set as MENU->SYSTEM->SOUND->Sampling Rate to "96[kHz]")
    arecord -D hw:INTEGRA7 -f S32_LE -r 96000 -c 2 ./file.wav
    Recording WAVE './file.wav' : Signed 32 bit Little Endian, Rate 96000 Hz, Stereo
    arecord: pcm_read:2153: read error: Input/output error

(Built-in controls set as MENU->SYSTEM->SOUND->Sampling Rate to "44.1 [kHz]", and MENU->SYSTEM->SOUND->Ext Part Source Select to "USB AUDIO")
    arecord -D hw:INTEGRA7 -f S32_LE -r 44100 -c 2 ./file.wav
    Recording WAVE './file.wav' : Signed 32 bit Little Endian, Rate 44100 Hz, Stereo
    arecord: pcm_read:2153: read error: Input/output error

    aplay -D hw:INTEGRA7 -f S32_LE -r 44100 -c 2 ./valid-file.wav
    Playing WAVE './valid-file.wav' : Signed 32 bit Little Endian, Rate 44100 Hz, Stereo
    aplay: pcm_write:2061: write error: Input/output error


R-26:
(Built-in controls set as MENU->AUDIO I/F SETUP->SAMPLE RATE to "96.0 kHz")
    arecord -D hw:R26AUDIO -f S32_LE -r 96000 -c 2 ./file.wav
    Recording WAVE './file.wav' : Signed 32 bit Little Endian, Rate 96000 Hz, Stereo
    arecord: pcm_read:2153: read error: Input/output error

    aplay -D hw:R26AUDIO -f S32_LE -r 96000 -c 2 ./valid-file.wav
    Playing WAVE './valid-file.wav' : Signed 32 bit Little Endian, Rate 96000 Hz, Stereo
    aplay: pcm_write:2061: write error: Input/output error



Some days ago, I found this excellent informational post: http://blog.nostatic.org/2020/01/getting-boss-gt-1-effects-processor-to.html
and that the patch is in mainline now! - Really exciting stuff!:
https://bugzilla.kernel.org/show_bug.cgi?id=195223
I also noticed another affected bug report here from the summer of 2016:
https://bugzilla.kernel.org/show_bug.cgi?id=121801

Since I was fairly certain it applies to the Roland devices I own, I added my USB IDs.  Wonderfully, now USB audio capture seems to be working perfectly from the three devices I can test: the Boutique D-05, INTEGRA-7, & R-26!

I've also tested all three for playback capability, since that's implied when a device is using implicit feedback, which I hadn't first realized.  Anyway, they all seem to be working as expected for playback too, but two caveats exist for playback:

1. The INTEGRA-7 won't output playback in any mode other than its "44.1 [kHz]" setting, though capture works with all of its Sample Rate possibilities.  I think this is imposed by the hardware itself, and hence unlikely a glitch.

2. The D-05's analog outputs aren't as clean as the other two devices, with little quiet occasional clicks sounding something like dust on an LP record's play.  Possibly that can be due to it having only 1/8" mini-jack connections, but I suspect something more driver-related as It's not noticed during use as a synthesizer.  Its firmware version is "1.02(1033)," so not up-to-date which may mean it's just the hardware itself, but I've decided not to risk any changes with it yet.  If I knew I could revert it, that would be another story.  Also its USB captures, play perfectly & cleanly on my usual sound device, the Edirol UA-4FX. Nevertheless, this is much preferable to it not working at all.

You may know these details, as the detection of these devices shows partial compatibility with the existing kernel, but here are the commands I've used successfully after the patch, to illustrate some working sample formats:

Boutique D-05:
    arecord -D hw:Boutique -f S32_LE -c 2 -r 96000 ./file.wav
    aplay -D hw:Boutique -f S32_LE -c 2 -r 96000 ./file.wav


INTEGRA-7:
(Built-in controls set as MENU->SYSTEM->SOUND->Sampling Rate to "96[kHz]")
    arecord -D hw:INTEGRA7 -f S32_LE -c 2 -r 96000 ./file.wav

(Built-in controls set as MENU->SYSTEM->SOUND->Sampling Rate to "44.1 [kHz]", and MENU->SYSTEM->SOUND->Ext Part Source Select to "USB AUDIO")
    arecord -D hw:INTEGRA7 -f S32_LE -c 2 -r 44100 ./file-44100.wav
    aplay -D hw:INTEGRA7 -f S32_LE -c 2 -r 44100 ./file-44100.wav


R-26:
(Built-in controls set as MENU->AUDIO I/F SETUP->SAMPLE RATE to "96.0 kHz.")
    arecord -D hw:R26AUDIO -f S32_LE -r 96000 -c 2 ./file.wav
    aplay -D hw:R26AUDIO -f S32_LE -r 96000 -c 2 ./file.wav


I searched a bit for other Roland-related devices people have had USB digital audio issues with over the years, and took the liberty of adding them to the patch too.  Likely there are still more that people haven't tried or, at least, queried about issues.  Also, I tested adding the USB IDs of two Roland devices that don't need the patch, and they don't seem adversely affected by it: Roland/Edirol UA-4FX, and Roland VG-99.  With that, I'm fairly certain it should be safe to apply even to those devices I don't own & can't test, since this issue seems so widespread.

I hope this can be added to the mainline kernel, as this support should help many that have struggled.  I, certainly, have been hoping somebody would figure this out for quite a while, and even bought a USB through/monitoring device to try to develop it myself (sadly, the software supporting that has its own bugs, so I probably should've just used wireshark).  Suffice it to say, I'm quite happy to have this figured out without having had to delve into USB debugging stuff I lack experience with! :)

Thanks very much for any comments or looking into adding this,

  Lucas Endres



The proposed patch follows:
diff -Nurp linux-5.11.9.orig/sound/usb/implicit.c linux-5.11.9.roland/sound/usb/implicit.c
--- linux-5.11.9.orig/sound/usb/implicit.c	2021-03-24 05:54:19.000000000 -0500
+++ linux-5.11.9.roland/sound/usb/implicit.c	2021-03-31 22:51:35.394736200 -0500
@@ -71,27 +71,89 @@ static const struct snd_usb_implicit_fb_
 	  .ep_num = 0x84, .iface = 0 },		/* MOTU MicroBook II */
 
 	/* No quirk for playback but with capture quirk (see below) */
+	IMPLICIT_FB_SKIP_DEV(0x0582, 0x00a6),	/* Roland JUNO-G */
+	IMPLICIT_FB_SKIP_DEV(0x0582, 0x00ad),	/* Roland SH-201 */
+	IMPLICIT_FB_SKIP_DEV(0x0582, 0x00c2),	/* Roland SonicCell */
+	IMPLICIT_FB_SKIP_DEV(0x0582, 0x00c4),	/* Edirol M-16DX */
+	IMPLICIT_FB_SKIP_DEV(0x0582, 0x00c7),	/* Roland V-Synth GT */
+	IMPLICIT_FB_SKIP_DEV(0x0582, 0x00da),	/* BOSS GT-10 */
+	IMPLICIT_FB_SKIP_DEV(0x0582, 0x00db),	/* BOSS GT-10 Guitar Effects Processor */
+	IMPLICIT_FB_SKIP_DEV(0x0582, 0x00dc),	/* BOSS GT-10B */
+	IMPLICIT_FB_SKIP_DEV(0x0582, 0x00de),	/* Roland Fantom-G */
+	IMPLICIT_FB_SKIP_DEV(0x0582, 0x00f8),	/* Roland JUNO Series */
+	IMPLICIT_FB_SKIP_DEV(0x0582, 0x0111),	/* Roland GAIA SH-01 */
+	IMPLICIT_FB_SKIP_DEV(0x0582, 0x0120),	/* Roland OCTA-CAPTURE */
+	IMPLICIT_FB_SKIP_DEV(0x0582, 0x0121),	/* Roland OCTA-CAPTURE */
+	IMPLICIT_FB_SKIP_DEV(0x0582, 0x0123),	/* Roland JUNO-Gi */
+	IMPLICIT_FB_SKIP_DEV(0x0582, 0x0127),	/* Roland GR-55 */
+	IMPLICIT_FB_SKIP_DEV(0x0582, 0x012b),	/* Roland DUO-CAPTURE */
+	IMPLICIT_FB_SKIP_DEV(0x0582, 0x012f),	/* Roland QUAD-CAPTURE */
 	IMPLICIT_FB_SKIP_DEV(0x0582, 0x0130),	/* BOSS BR-80 */
-	IMPLICIT_FB_SKIP_DEV(0x0582, 0x0171),   /* BOSS RC-505 */
+	IMPLICIT_FB_SKIP_DEV(0x0582, 0x0132),	/* Roland TRI-CAPTURE */
+	IMPLICIT_FB_SKIP_DEV(0x0582, 0x0138),	/* BOSS RC-300 */
+	IMPLICIT_FB_SKIP_DEV(0x0582, 0x013e),	/* Roland R-26 */
+	IMPLICIT_FB_SKIP_DEV(0x0582, 0x014d),	/* BOSS GT-100 */
+	IMPLICIT_FB_SKIP_DEV(0x0582, 0x0150),	/* Roland TD-15 */
+	IMPLICIT_FB_SKIP_DEV(0x0582, 0x0151),	/* Roland TD-11 */
+	IMPLICIT_FB_SKIP_DEV(0x0582, 0x0158),	/* Roland TD-30 */
+	IMPLICIT_FB_SKIP_DEV(0x0582, 0x0159),	/* Roland DUO-CAPTURE EX */
+	IMPLICIT_FB_SKIP_DEV(0x0582, 0x015b),	/* Roland INTEGRA-7 */
+	IMPLICIT_FB_SKIP_DEV(0x0582, 0x015d),	/* Roland R-88 */
+	IMPLICIT_FB_SKIP_DEV(0x0582, 0x0171),	/* BOSS RC-505 */
+	IMPLICIT_FB_SKIP_DEV(0x0582, 0x017a),	/* Roland VT-3 */
+	IMPLICIT_FB_SKIP_DEV(0x0582, 0x017c),	/* Roland TR-8 */
 	IMPLICIT_FB_SKIP_DEV(0x0582, 0x0185),	/* BOSS GP-10 */
 	IMPLICIT_FB_SKIP_DEV(0x0582, 0x0189),	/* BOSS GT-100v2 */
+	IMPLICIT_FB_SKIP_DEV(0x0582, 0x01b5),	/* Roland Boutique Series Synthesizer */
 	IMPLICIT_FB_SKIP_DEV(0x0582, 0x01d6),	/* BOSS GT-1 */
 	IMPLICIT_FB_SKIP_DEV(0x0582, 0x01d8),	/* BOSS Katana */
 	IMPLICIT_FB_SKIP_DEV(0x0582, 0x01e5),	/* BOSS GT-001 */
-	IMPLICIT_FB_SKIP_DEV(0x0582, 0x0203),   /* BOSS AD-10 */
+	IMPLICIT_FB_SKIP_DEV(0x0582, 0x01ff),	/* Roland D-05 */
+	IMPLICIT_FB_SKIP_DEV(0x0582, 0x0203),	/* BOSS AD-10 */
 
 	{} /* terminator */
 };
 
 /* Implicit feedback quirk table for capture: only FIXED type */
 static const struct snd_usb_implicit_fb_match capture_implicit_fb_quirks[] = {
+	IMPLICIT_FB_FIXED_DEV(0x0582, 0x00a6, 0x0d, 0x01), /* Roland JUNO-G */
+	IMPLICIT_FB_FIXED_DEV(0x0582, 0x00ad, 0x0d, 0x01), /* Roland SH-201 */
+	IMPLICIT_FB_FIXED_DEV(0x0582, 0x00c2, 0x0d, 0x01), /* Roland SonicCell */
+	IMPLICIT_FB_FIXED_DEV(0x0582, 0x00c4, 0x0d, 0x01), /* Edirol M-16DX */
+	IMPLICIT_FB_FIXED_DEV(0x0582, 0x00c7, 0x0d, 0x01), /* Roland V-Synth GT */
+	IMPLICIT_FB_FIXED_DEV(0x0582, 0x00da, 0x0d, 0x01), /* BOSS GT-10 */
+	IMPLICIT_FB_FIXED_DEV(0x0582, 0x00db, 0x0d, 0x01), /* BOSS GT-10 Guitar Effects Processor */
+	IMPLICIT_FB_FIXED_DEV(0x0582, 0x00dc, 0x0d, 0x01), /* BOSS GT-10B */
+	IMPLICIT_FB_FIXED_DEV(0x0582, 0x00de, 0x0d, 0x01), /* Roland Fantom-G */
+	IMPLICIT_FB_FIXED_DEV(0x0582, 0x00f8, 0x0d, 0x01), /* Roland JUNO Series */
+	IMPLICIT_FB_FIXED_DEV(0x0582, 0x0111, 0x0d, 0x01), /* Roland GAIA SH-01 */
+	IMPLICIT_FB_FIXED_DEV(0x0582, 0x0120, 0x0d, 0x01), /* Roland OCTA-CAPTURE */
+	IMPLICIT_FB_FIXED_DEV(0x0582, 0x0121, 0x0d, 0x01), /* Roland OCTA-CAPTURE */
+	IMPLICIT_FB_FIXED_DEV(0x0582, 0x0123, 0x0d, 0x01), /* Roland JUNO-Gi */
+	IMPLICIT_FB_FIXED_DEV(0x0582, 0x0127, 0x0d, 0x01), /* Roland GR-55 */
+	IMPLICIT_FB_FIXED_DEV(0x0582, 0x012b, 0x0d, 0x01), /* Roland DUO-CAPTURE */
+	IMPLICIT_FB_FIXED_DEV(0x0582, 0x012f, 0x0d, 0x01), /* Roland QUAD-CAPTURE */
 	IMPLICIT_FB_FIXED_DEV(0x0582, 0x0130, 0x0d, 0x01), /* BOSS BR-80 */
+	IMPLICIT_FB_FIXED_DEV(0x0582, 0x0132, 0x0d, 0x01), /* Roland TRI-CAPTURE */
+	IMPLICIT_FB_FIXED_DEV(0x0582, 0x0138, 0x0d, 0x01), /* BOSS RC-300 */
+	IMPLICIT_FB_FIXED_DEV(0x0582, 0x013e, 0x0d, 0x01), /* Roland R-26 */
+	IMPLICIT_FB_FIXED_DEV(0x0582, 0x014d, 0x0d, 0x01), /* BOSS GT-100 */
+	IMPLICIT_FB_FIXED_DEV(0x0582, 0x0150, 0x0d, 0x01), /* Roland TD-15 */
+	IMPLICIT_FB_FIXED_DEV(0x0582, 0x0151, 0x0d, 0x01), /* Roland TD-11 */
+	IMPLICIT_FB_FIXED_DEV(0x0582, 0x0158, 0x0d, 0x01), /* Roland TD-30 */
+	IMPLICIT_FB_FIXED_DEV(0x0582, 0x0159, 0x0d, 0x01), /* Roland DUO-CAPTURE EX */
+	IMPLICIT_FB_FIXED_DEV(0x0582, 0x015b, 0x0d, 0x01), /* Roland INTEGRA-7 */
+	IMPLICIT_FB_FIXED_DEV(0x0582, 0x015d, 0x0d, 0x01), /* Roland R-88 */
 	IMPLICIT_FB_FIXED_DEV(0x0582, 0x0171, 0x0d, 0x01), /* BOSS RC-505 */
+	IMPLICIT_FB_FIXED_DEV(0x0582, 0x017a, 0x0d, 0x01), /* Roland VT-3 */
+	IMPLICIT_FB_FIXED_DEV(0x0582, 0x017c, 0x0d, 0x01), /* Roland TR-8 */
 	IMPLICIT_FB_FIXED_DEV(0x0582, 0x0185, 0x0d, 0x01), /* BOSS GP-10 */
 	IMPLICIT_FB_FIXED_DEV(0x0582, 0x0189, 0x0d, 0x01), /* BOSS GT-100v2 */
+	IMPLICIT_FB_FIXED_DEV(0x0582, 0x01b5, 0x0d, 0x01), /* Roland Boutique Series Synthesizer */
 	IMPLICIT_FB_FIXED_DEV(0x0582, 0x01d6, 0x0d, 0x01), /* BOSS GT-1 */
 	IMPLICIT_FB_FIXED_DEV(0x0582, 0x01d8, 0x0d, 0x01), /* BOSS Katana */
 	IMPLICIT_FB_FIXED_DEV(0x0582, 0x01e5, 0x0d, 0x01), /* BOSS GT-001 */
+	IMPLICIT_FB_FIXED_DEV(0x0582, 0x01ff, 0x0d, 0x01), /* Roland D-05 */
 	IMPLICIT_FB_FIXED_DEV(0x0582, 0x0203, 0x0d, 0x01), /* BOSS AD-10 */
 
 	{} /* terminator */
Comment 1 Takashi Iwai 2021-04-01 17:01:54 UTC
Thanks for the comprehensive list!

I think we should simplify the quirk table lookup at first.  The match with the capture quirk means the device should have no quirk for playback.  So the patch like below at first.
Comment 2 Takashi Iwai 2021-04-01 17:02:41 UTC
Created attachment 296177 [details]
Simplify quirk table by matching with capture table
Comment 3 Lucas Endres 2021-04-01 17:46:32 UTC
No problem, thanks for looking into it!  I'll test that change later today.  Could it make sense to apply this method to all USB Roland/Edirol/BOSS devices by default, simply matching on the Vender ID of 0x0582?  That should make it more future-proof, since Roland seems to be continuing to create ASIO devices.  Maybe then certain non-conforming, devices can opt-out of this with their USB product IDs.
Comment 4 Lucas Endres 2021-04-01 23:12:39 UTC
Yes, your simplified quirk table works fine!  I did add in my applicable lines too, though.  I only tested it on the INTEGRA-7, but can't think of any reason it won't work for all.  It both plays back and is allows capturing from it, precisely as before.
Comment 5 Lucas Endres 2021-04-01 23:17:27 UTC
Created attachment 296183 [details]
Adds only the simplified proposed Roland IDs to the last patch
Comment 6 Lucas Endres 2021-04-05 19:59:53 UTC
Created attachment 296243 [details]
Capture table only again with more supported devices

I took another careful look at the Roland devices identified at http://www.linux-usb.org, cross-checking anything not in my previous patch with USB Audio/ASIO specifications from Roland's documentation.  I also translated a likely typo at https://linuxmusicians.com/viewtopic.php?p=105323&sid=b1577d0cd04094e4f3a5822171ea7b6b#p105323 for the Boutique SH-01A.

All this lead me to add a few more capture_implicit_fb_quirks matches, in case more simplified matching based on only the Vendor ID of 0x0582 becomes too contentious.

Since I was adding the VB-99, I also added the quite similar VG-99.  The VG-99 code seems to already include a solution for it, but with so many of these devices supposedly working previously and no longer, I thought it would be wise to group it here for clarity.  My VG-99 continues to work with these new lines, so I doubt it will break its operation for anyone.
Comment 7 Takashi Iwai 2021-04-12 17:00:28 UTC
FWIW, the capture table cleanup patch was already merged in my for-next branch for 5.13 kernel.

And, recently we've been discussion about the improvement for BOSS GT-1 and others.  It seems that BOSS devices could work with the proper implicit feedback mode, but the caveat is that you have to start the playback at first.
Might it be the case for Roland devices, too?

The test patch for BOSS devices is attached below.

Also, one more other parallel development: there is one test fix for the Behringer devices.  This might be relevant with other similar devices.  The test patch is attached below, too.

In anyway, it'd be appreciated if you can upload the lsusb -v outputs of the relevant Roland devices, too.  Then we can check at least whether it smells like an implicit feedback case or not; e.g. many devices have ASYNC types for both directions when the implicit feedback is required.
Comment 8 Takashi Iwai 2021-04-12 17:01:09 UTC
Created attachment 296343 [details]
More fixes for BOSS devices
Comment 9 Takashi Iwai 2021-04-12 17:02:59 UTC
Created attachment 296345 [details]
USB audio clock selector fix
Comment 10 Lucas Endres 2021-04-14 20:34:40 UTC
(In reply to Takashi Iwai from comment #7)
> FWIW, the capture table cleanup patch was already merged in my for-next
> branch for 5.13 kernel.
> 
> And, recently we've been discussion about the improvement for BOSS GT-1 and
> others.  It seems that BOSS devices could work with the proper implicit
> feedback mode, but the caveat is that you have to start the playback at
> first.
> Might it be the case for Roland devices, too?

Yes, it definitely is, although not for every Roland/Edirol device.

For my Roland/Edirol devices which have only broken playback with the "IMPLICIT_FB_BOTH" table entries here, they function perfectly with "IMPLICIT_FB_FIXED" instead.  However, they still function perfectly without either capture table quirk line.

The Edirol UA-101 can't have either the "IMPLICIT_FB_BOTH" or "IMPLICIT_FB_FIXED" line applied to it, for it to be detected as a capture or playback device.

This fixes the crackles on the Boutique D-05's playback and the INTEGRA-7's 48-96 kHz playback, which was silent with my first patches (44100 Hz always works for it)!

Here are the detailed results of using IMPLICIT_FB_BOTH for all my USB Roland/Edirol devices:

Edirol UA-4FX can't capture:
arecord -D hw:UA4FX -f S24_3LE -r 48000 -c 2 ./file.wav
Recording WAVE './sc8850.wav' : Signed 24 bit Little Endian in 3bytes, Rate 48000 Hz, Stereo
arecord: xrun:1672: read/write error, state = PREPARED

But it plays as usual:
aplay -D hw:UA4FX -f S24_3LE -r 48000 -c 2 ./other-file.wav 
Playing WAVE './other-file.wav' : Signed 24 bit Little Endian in 3bytes, Rate 44100 Hz, Stereo


Edirol UA-101 isn't being detected as a playback or recording device in both its "full speed" and "high speed" modes


Roland VG-99 can't capture:
arecord -D hw:VG99 -f S24_3LE -r 44100 -c 2 ./file.wav
Recording WAVE './file.wav' : Signed 24 bit Little Endian in 3bytes, Rate 44100 Hz, Stereo
arecord: xrun:1672: read/write error, state = PREPARED

But it plays as usual:
aplay -D hw:VG99 -f S24_3LE -r 44100 -c 2 ./other-file.wav 
Playing WAVE './other-file.wav' : Signed 24 bit Little Endian in 3bytes, Rate 44100 Hz, Stereo


Edirol UA-25EX can't capture:
arecord -D hw:UA25EX -f S24_3LE -r 48000 -c 2 ./file.wav
Recording WAVE './file.wav' : Signed 24 bit Little Endian in 3bytes, Rate 48000 Hz, Stereo
arecord: xrun:1672: read/write error, state = PREPARED

But it plays as usual:
aplay -D hw:UA25EX -f S24_3LE -r 48000 -c 2 ./other-file.wav 
Playing WAVE './other-file.wav' : Signed 24 bit Little Endian in 3bytes, Rate 48000 Hz, Stereo


Roland R-26 both captures and plays perfectly in all its sampling frequencies:
arecord -D hw:R26AUDIO -f S32_LE -r 44100 -c 2 ./file.wav
Recording WAVE './file.wav' : Signed 32 bit Little Endian, Rate 44100 Hz, Stereo
^CAborted by signal Interrupt...

aplay -D hw:R26AUDIO -f S32_LE -r 44100 -c 2 ./file.wav
Playing WAVE './file.wav' : Signed 32 bit Little Endian, Rate 44100 Hz, Stereo

arecord -D hw:R26AUDIO -f S32_LE -r 48000 -c 2 ./file.wav
Recording WAVE './file.wav' : Signed 32 bit Little Endian, Rate 48000 Hz, Stereo
^CAborted by signal Interrupt...

aplay -D hw:R26AUDIO -f S32_LE -r 48000 -c 2 ./file.wav
Playing WAVE './file.wav' : Signed 32 bit Little Endian, Rate 48000 Hz, Stereo

arecord -D hw:R26AUDIO -f S32_LE -r 88200 -c 2 ./file.wav
Recording WAVE './file.wav' : Signed 32 bit Little Endian, Rate 88200 Hz, Stereo

aplay -D hw:R26AUDIO -f S32_LE -r 88200 -c 2 ./file.wav
Playing WAVE './file.wav' : Signed 32 bit Little Endian, Rate 88200 Hz, Stereo

arecord -D hw:R26AUDIO -f S32_LE -r 96000 -c 2 ./file.wav
Recording WAVE './file.wav' : Signed 32 bit Little Endian, Rate 96000 Hz, Stereo
^CAborted by signal Interrupt...

aplay -D hw:R26AUDIO -f S32_LE -r 96000 -c 2 ./file.wav
Playing WAVE './file.wav' : Signed 32 bit Little Endian, Rate 96000 Hz, Stereo


Roland INTEGRA-7 both captures and now works with playback in all it's sampling frequencies!:
arecord -D hw:INTEGRA7 -f S32_LE -r 44100 -c 2 ./file.wav
Recording WAVE './file.wav' : Signed 32 bit Little Endian, Rate 44100 Hz, Stereo
^CAborted by signal Interrupt...

aplay -D hw:INTEGRA7 -f S32_LE -r 44100 -c 2 ./file.wav
Playing WAVE './file.wav' : Signed 32 bit Little Endian, Rate 44100 Hz, Stereo

arecord -D hw:INTEGRA7 -f S32_LE -r 48000 -c 2 ./file.wav
Recording WAVE './file.wav' : Signed 32 bit Little Endian, Rate 48000 Hz, Stereo

aplay -D hw:INTEGRA7 -f S32_LE -r 48000 -c 2 ./file.wav
Playing WAVE './file.wav' : Signed 32 bit Little Endian, Rate 48000 Hz, Stereo

arecord -D hw:INTEGRA7 -f S32_LE -r 96000 -c 2 ./file.wav
Recording WAVE './file.wav' : Signed 32 bit Little Endian, Rate 96000 Hz, Stereo
^CAborted by signal Interrupt...

aplay -D hw:INTEGRA7 -f S32_LE -r 96000 -c 2 ./file.wav
Playing WAVE './file.wav' : Signed 32 bit Little Endian, Rate 96000 Hz, Stereo


Roland Boutique D-05 still captures perfectly, and now has crystal clear playback too!:
arecord -D hw:Boutique -f S32_LE -r 96000 -c 2 ./file.wav
Recording WAVE './file.wav' : Signed 32 bit Little Endian, Rate 96000 Hz, Stereo
^CAborted by signal Interrupt...

aplay -D hw:Boutique -f S32_LE -r 96000 -c 2 ./file.wav
Playing WAVE './file.wav' : Signed 32 bit Little Endian, Rate 96000 Hz, Stereo


> The test patch for BOSS devices is attached below.
> 
> Also, one more other parallel development: there is one test fix for the
> Behringer devices.  This might be relevant with other similar devices.  The
> test patch is attached below, too.

I applied that patch too, but didn't notice any issues with Roland devices because of it.

> 
> In anyway, it'd be appreciated if you can upload the lsusb -v outputs of the
> relevant Roland devices, too.  Then we can check at least whether it smells
> like an implicit feedback case or not; e.g. many devices have ASYNC types
> for both directions when the implicit feedback is required.

I'm leaving out the Edirol UA-101 since it's not relevant at all.  Here are the rest:

Bus 002 Device 004: ID 0582:00a3 Roland Corp. EDIROL UA-4FX
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass          255 Vendor Specific Class
  bDeviceSubClass         0 
  bDeviceProtocol       255 
  bMaxPacketSize0         8
  idVendor           0x0582 Roland Corp.
  idProduct          0x00a3 EDIROL UA-4FX
  bcdDevice            1.00
  iManufacturer           1 EDIROL
  iProduct                2 UA-4FX
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x00ca
    bNumInterfaces          3
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              360mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      2 
      bInterfaceProtocol      2 
      iInterface              0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      2 
      bInterfaceProtocol      2 
      iInterface              0 
      ** UNRECOGNIZED:  07 24 01 01 00 01 00
      ** UNRECOGNIZED:  0b 24 02 01 02 03 18 01 80 bb 00
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            9
          Transfer Type            Isochronous
          Synch Type               Adaptive
          Usage Type               Data
        wMaxPacketSize     0x0140  1x 320 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       2
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      2 
      bInterfaceProtocol      2 
      iInterface              0 
      ** UNRECOGNIZED:  07 24 01 02 00 01 20
      ** UNRECOGNIZED:  0b 24 02 03 02 03 18 01 80 bb 00
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            9
          Transfer Type            Isochronous
          Synch Type               Adaptive
          Usage Type               Data
        wMaxPacketSize     0x0138  1x 312 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      2 
      bInterfaceProtocol      1 
      iInterface              0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      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 02 03 18 01 80 bb 00
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0140  1x 320 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      3 
      bInterfaceProtocol      0 
      iInterface              0 
      ** UNRECOGNIZED:  06 24 f1 02 01 01
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0020  1x 32 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0020  1x 32 bytes
        bInterval               0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      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            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0020  1x 32 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0020  1x 32 bytes
        bInterval               1


Bus 004 Device 006: ID 0582:00b2 Roland Corp. VG-99
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass          255 Vendor Specific Class
  bDeviceSubClass         0 
  bDeviceProtocol       255 
  bMaxPacketSize0         8
  idVendor           0x0582 Roland Corp.
  idProduct          0x00b2 VG-99
  bcdDevice            1.00
  iManufacturer           1 Roland
  iProduct                2 VG-99
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x00a7
    bNumInterfaces          3
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xc0
      Self Powered
    MaxPower                2mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      2 
      bInterfaceProtocol      2 
      iInterface              0 
      ** UNRECOGNIZED:  06 24 f1 01 00 00
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      2 
      bInterfaceProtocol      2 
      iInterface              0 
      ** UNRECOGNIZED:  07 24 01 01 00 01 00
      ** UNRECOGNIZED:  0b 24 02 01 02 03 18 01 44 ac 00
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            9
          Transfer Type            Isochronous
          Synch Type               Adaptive
          Usage Type               Data
        wMaxPacketSize     0x0120  1x 288 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      2 
      bInterfaceProtocol      1 
      iInterface              0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      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 02 03 18 01 44 ac 00
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0120  1x 288 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      3 
      bInterfaceProtocol      0 
      iInterface              0 
      ** 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     0x0020  1x 32 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0020  1x 32 bytes
        bInterval               0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      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            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0020  1x 32 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0020  1x 32 bytes
        bInterval               1


Bus 004 Device 007: ID 0582:00e6 Roland Corp. EDIROL UA-25EX (Advanced mode)
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass          255 Vendor Specific Class
  bDeviceSubClass         0 
  bDeviceProtocol       255 
  bMaxPacketSize0         8
  idVendor           0x0582 Roland Corp.
  idProduct          0x00e6 EDIROL UA-25EX (Advanced mode)
  bcdDevice            1.01
  iManufacturer           1 Roland
  iProduct                2 UA-25EX
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x009b
    bNumInterfaces          3
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              480mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      2 
      bInterfaceProtocol      0 
      iInterface              0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      2 
      bInterfaceProtocol      0 
      iInterface              0 
      ** UNRECOGNIZED:  07 24 01 01 00 01 00
      ** UNRECOGNIZED:  0b 24 02 01 02 03 18 01 80 bb 00
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            9
          Transfer Type            Isochronous
          Synch Type               Adaptive
          Usage Type               Data
        wMaxPacketSize     0x0140  1x 320 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      2 
      bInterfaceProtocol      0 
      iInterface              0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      2 
      bInterfaceProtocol      0 
      iInterface              0 
      ** UNRECOGNIZED:  07 24 01 07 00 01 00
      ** UNRECOGNIZED:  0b 24 02 01 02 03 18 01 80 bb 00
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0140  1x 320 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      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            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0020  1x 32 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0020  1x 32 bytes
        bInterval               0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      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            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0020  1x 32 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0020  1x 32 bytes
        bInterval               1


Bus 002 Device 006: ID 0582:013e Roland Corp. R-26
Couldn't open device, some information will be missing
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          0x013e R-26
  bcdDevice            0.00
  iManufacturer           1 Roland
  iProduct                2 R-26(AUDIO)
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x007c
    bNumInterfaces          3
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              500mA
    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 
      ** UNRECOGNIZED:  06 24 f1 01 00 00
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      2 
      bInterfaceProtocol      2 
      iInterface              0 
      ** UNRECOGNIZED:  07 24 01 01 00 01 00
      ** UNRECOGNIZED:  0b 24 02 01 02 04 18 01 00 77 01
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x0d  EP 13 OUT
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0070  1x 112 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 
    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 02 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
        wMaxPacketSize     0x0070  1x 112 bytes
        bInterval               1


Bus 001 Device 005: ID 0582:015b Roland Corp. INTEGRA-7
Couldn't open device, some information will be missing
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          0x015b INTEGRA-7
  bcdDevice            1.00
  iManufacturer           1 Roland
  iProduct                2 INTEGRA-7
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x00b0
    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 
      ** UNRECOGNIZED:  06 24 f1 01 00 00
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      2 
      bInterfaceProtocol      2 
      iInterface              0 
      ** UNRECOGNIZED:  07 24 01 01 00 01 00
      ** UNRECOGNIZED:  0b 24 02 01 02 04 18 01 00 77 01
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x0d  EP 13 OUT
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0070  1x 112 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 
    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 02 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
        wMaxPacketSize     0x0070  1x 112 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      3 
      bInterfaceProtocol      0 
      iInterface              0 
      ** 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
    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            2
          Transfer Type            Bulk
          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


Roland Boutique D-05:
Bus 004 Device 008: ID 0582:01ff Roland Corp. Boutique
Couldn't open device, some information will be missing
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          0x01ff 
  bcdDevice            1.00
  iManufacturer           1 Roland
  iProduct                2 Boutique
  iSerial                 3 BQ_D382DDA054B5533321C1F1743
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x010e
    bNumInterfaces          4
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              500mA
    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 
      ** UNRECOGNIZED:  06 24 f1 01 00 00
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      2 
      bInterfaceProtocol      2 
      iInterface              0 
      ** UNRECOGNIZED:  07 24 01 01 00 01 00
      ** UNRECOGNIZED:  0b 24 02 01 02 04 18 01 00 77 01
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x0d  EP 13 OUT
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0070  1x 112 bytes
        bInterval               1
        INTERFACE CLASS:  06 24 f1 04 12 00
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       2
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      2 
      bInterfaceProtocol      2 
      iInterface              0 
      ** UNRECOGNIZED:  07 24 01 01 00 01 00
      ** UNRECOGNIZED:  0b 24 02 01 02 04 18 01 00 77 01
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x0d  EP 13 OUT
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0070  1x 112 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 
    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 02 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
        wMaxPacketSize     0x0070  1x 112 bytes
        bInterval               1
        INTERFACE CLASS:  06 24 f1 04 12 00
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       2
      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 02 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
        wMaxPacketSize     0x0070  1x 112 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      3 
      bInterfaceProtocol      0 
      iInterface              0 
      ** UNRECOGNIZED:  06 24 f1 02 01 01
      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
    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     0x0040  1x 64 bytes
        bInterval               4
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x85  EP 5 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               4


Thanks very much Takashi, and sorry this took me a while to gather!  Next, I'll upload my latest patch with the known working devices fixed.
Comment 11 Lucas Endres 2021-04-14 20:48:44 UTC
Created attachment 296391 [details]
Known working Roland devices IMPLICIT_FB_BOTH, others IMPLICIT_FB_FIXED

Here's the added Roland devices patch which is working perfectly for all my devices, along with many I'm unable to test.
Comment 12 Takashi Iwai 2021-04-15 10:25:47 UTC
Could you submit the patch to alsa-devel ML (and Cc to me)?  I'd happily take it for 5.13 merge.  The number of entries is a bit scary, but we can clean up later once when we figure out the condition to match which for what mode.

I guess that:
- When both EPs are ASYNC, it's implicit feedback for both
- For ASYNC capture EP but adaptive playback EP, maybe capture-only quirk
Comment 13 Lucas Endres 2021-04-16 03:48:43 UTC
Created attachment 296401 [details]
Patch suggested to add to kernel 5.13

It's been mailed, but to keep things together, I'll post it here too:

Here's the patch proposed to be included in the next kernel release.  Thanks for the support!
I removed the Rubix22, Rubix24, and Rubix44 from it, since I found a blog post about the Rubix44 working with Linux already (google translated from Czech): https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwiY1_zzxYHwAhUJTawKHU7wAyMQ7gEwBnoECAIQBw&url=https%3A%2F%2Ftranslate.google.com%2Ftranslate%3Fhl%3Den%26sl%3Dcs%26u%3Dhttps%3A%2F%2Fblog.frantovo.cz%2Fc%2F365%2FRoland%252520Rubix44%252520%2525E2%252580%252593%252520extern%2525C3%2525AD%252520zvukov%2525C3%2525A1%252520karta%26prev%3Dsearch%26pto%3Daue&usg=AOvVaw2H_Kumf2nAZW6pojLLtyZY

I also took your suggestion that a "Synch Type" of "Asynchronous" for both the "In" and the "Out" Endpoints probably means we should use IMPLICIT_FB_BOTH_DEV (and IMPLICIT_FB_FIXED_DEV otherwise) and edited it again with the help of "lsusb -v" results around the Internet.  Here are the conclusions I came to with what I could find through google, but the unavailable (unlisted) others, I'm leaving IMPLICIT_FB_FIXED_DEV to be safe.  These should all be certain (so are my devices but I didn't relist them here):

0582:0109 both
0582:0111 both
0582:0114 fixed
0582:0127 both
0582:012b fixed
0582:012f both
0582:0137 fixed
0582:0138 both
0582:014d both
0582:0159 fixed
0582:017c both
0582:01b5 both
0582:01fd both

Hopefully, after this is in the kernel, people will notice if they have noise through playback, because it takes headphones for me.  Of course anybody showing "lsusb -v" for their device should be able to discern the need for IMPLICIT_FB_BOTH_DEV too.
Comment 14 Takashi Iwai 2021-05-04 08:16:10 UTC
Now 5.13-rc1 contains the fixes covering all Roland / BOSS devices.
Particularly the commit 316791b556f7c4aeb7a7fea8f400f4434e71d1bf
    ALSA: usb-audio: Generic application of implicit fb to Roland/BOSS devices
is the key change.

Let's close this bug now.
Comment 15 Lucas Endres 2021-05-04 17:30:55 UTC
(In reply to Takashi Iwai from comment #14)
> Now 5.13-rc1 contains the fixes covering all Roland / BOSS devices.
> Particularly the commit 316791b556f7c4aeb7a7fea8f400f4434e71d1bf
>     ALSA: usb-audio: Generic application of implicit fb to Roland/BOSS
> devices
> is the key change.
> 
> Let's close this bug now.

Thanks for all you've done Takashi!  It'll probably be a bit before Debian testing updates to the current 5.12.{0,1} mainline, but it will be great to try all my Roland devices again on a prepackaged kernel.  I expect it's perfect for everyone, due to your brilliance!

Note You need to log in before you can comment on or make changes to this bug.