Here's my interesting, slightly-surprising results, but first the test criteria:
I enabled the playback quirk table line as "IMPLICIT_FB_GENERIC_DEV" for each of these devices being tested, and changed endpoint.c's "if (snd_usb_endpoint_implicit_feedback_sink(ep))" to evaluate false for the Roland/BOSS vender ID of 0x0582 (with the vender matching method by Geraldo).
EDIROL UA-4FX failed to capture, but plays well (only tested 48 kHz): arecord -D hw:UA4FX -f S24_3LE -r 48000 -c 2 ./file.wav Recording WAVE './test.wav' : Signed 24 bit Little Endian in 3bytes, Rate 48000 Hz, Stereo arecord: xrun:1672: read/write error, state = PREPARED
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 48000 Hz, Stereo
EDIROL UA-101 "full speed" USB 1.1 mode doesn't capture or play (only tested 48 kHz): arecord -D hw:UA101 -f S32_LE -r 48000 -c 2 ./file.wav arecord: main:830: audio open error: Connection timed out
aplay -D plughw:UA101 -f S32_LE -r 48000 -c 2 ./other-file.wav aplay: main:830: audio open error: Connection timed out
EDIROL UA-101 "high speed" USB 2 mode captures and plays well (only tested 48 kHz): arecord -D plughw:UA101 -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 plughw:UA101 -f S32_LE -r 48000 -c 2 ./file.wav Playing WAVE './file.wav' : Signed 32 bit Little Endian, Rate 48000 Hz, Stereo
Roland R-26 captures and plays fine: 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 captures and plays well (playback at 96 kHz is new!) 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 (Wow, now audible at 96 kHz with this endpoint.c trick!)
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
Roland VG-99 doesn't capture, but plays well: 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
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
And, of course, you already know the Roland Boutique D-05 captures and finally plays back perfectly with this trick.
Next, I'm going to use these findings to tailor the patch to only those devices benefiting from it. I had already suspected the EDIROL UA-* devices didn't need this, but I was fairly sure they would still be compatible. They aren't and neither is the VG-99. Improvements are in the INTEGRA-7 (with it's playback mode of 96 kHz working crystal clearly) and Boutique D-05, but possibly also the R-26 (which I haven't noticed clock skew on either way)
Thanks!
Here's the patch used to test these, to reveal any accidentally left out details: diff -Nurp linux-5.11.9.orig/sound/usb/endpoint.c linux-5.11.9.roland-geraldo-nascimento/sound/usb/endpoint.c --- linux-5.11.9.orig/sound/usb/endpoint.c 2021-03-24 05:54:19.000000000 -0500 +++ linux-5.11.9.roland-geraldo-nascimento/sound/usb/endpoint.c 2021-04-10 00:14:30.836421501 -0500 @@ -1343,6 +1343,7 @@ int snd_usb_endpoint_start(struct snd_us { int err; unsigned int i; + bool skip_implicit_fb_urb_hold;
if (atomic_read(&ep->chip->shutdown)) return -EBADFD; @@ -1375,7 +1376,14 @@ int snd_usb_endpoint_start(struct snd_us if (!ep_state_update(ep, EP_STATE_STOPPED, EP_STATE_RUNNING)) goto __error;
- if (snd_usb_endpoint_implicit_feedback_sink(ep)) { + //if (snd_usb_endpoint_implicit_feedback_sink(ep)) { + skip_implicit_fb_urb_hold = false; + + if (USB_ID_VENDOR(ep->chip->usb_id) == 0x0582) // && + // USB_ID_PRODUCT(ep->chip->usb_id) == 0x01ff) + skip_implicit_fb_urb_hold = true; + + if (snd_usb_endpoint_implicit_feedback_sink(ep) && !skip_implicit_fb_urb_hold) { for (i = 0; i < ep->nurbs; i++) { struct snd_urb_ctx *ctx = ep->urb + i; list_add_tail(&ctx->ready_list, &ep->ready_playback_urbs); diff -Nurp linux-5.11.9.orig/sound/usb/implicit.c linux-5.11.9.roland-geraldo-nascimento/sound/usb/implicit.c --- linux-5.11.9.orig/sound/usb/implicit.c 2021-04-01 20:55:06.079399075 -0500 +++ linux-5.11.9.roland-geraldo-nascimento/sound/usb/implicit.c 2021-04-10 00:22:41.942550829 -0500 @@ -71,27 +71,155 @@ 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, 0x0130), /* BOSS BR-80 */ - IMPLICIT_FB_SKIP_DEV(0x0582, 0x0171), /* BOSS RC-505 */ - IMPLICIT_FB_SKIP_DEV(0x0582, 0x0185), /* BOSS GP-10 */ - IMPLICIT_FB_SKIP_DEV(0x0582, 0x0189), /* BOSS GT-100v2 */ - 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_GENERIC_DEV(0x0582, 0x007d), /* Edirol UA-101 High Speed */ + IMPLICIT_FB_GENERIC_DEV(0x0582, 0x008d), /* Edirol UA-101 Full Speed */ + IMPLICIT_FB_GENERIC_DEV(0x0582, 0x00a3), /* Edirol UA-4FX */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00a6), /* Roland JUNO-G */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00a9), /* Roland MC-808 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00ad), /* Roland SH-201 */ + IMPLICIT_FB_GENERIC_DEV(0x0582, 0x00b2), /* Roland VG-99 */ + IMPLICIT_FB_GENERIC_DEV(0x0582, 0x00b3), /* Roland VG-99 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00c2), /* Roland SonicCell */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00c4), /* Edirol M-16DX */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00c5), /* Roland SP-555 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00c7), /* Roland V-Synth GT */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00d1), /* Roland Music Atelier */ + 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, 0x00eb), /* Roland VS-100 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00f8), /* Roland JUNO Series */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00fc), /* Roland VS-700C */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00fd), /* Roland VS-700 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00fe), /* Roland VS-700 M1 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x00ff), /* Roland VS-700 M2 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0100), /* Roland VS-700 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0101), /* Roland VS-700 M2 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0102), /* Roland VB-99 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0109), /* BOSS eBand JS-8 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0111), /* Roland GAIA SH-01 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0113), /* BOSS ME-25 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0114), /* Roland SD-50 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0117), /* Roland VS-20 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0119), /* Roland OCTAPAD SPD-30 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x011c), /* Roland Lucina AX-09 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x011e), /* BOSS BR-800 */ + 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, 0x0124), /* Roland M-300 */ + 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, 0x0132), /* Roland TRI-CAPTURE */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0134), /* Roland V-Mixer */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0138), /* BOSS RC-300 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x013a), /* Roland JUPITER-80 */ + IMPLICIT_FB_GENERIC_DEV(0x0582, 0x013e), /* Roland R-26 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0145), /* Roland SPD-SX */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x014b), /* BOSS eBand JS-10 */ + 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, 0x0154), /* Roland JUPITER-50 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0158), /* Roland TD-30 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x0159), /* Roland DUO-CAPTURE EX */ + IMPLICIT_FB_GENERIC_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, 0x01df), /* Roland Rubix22 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x01e0), /* Roland Rubix24 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x01e1), /* Roland Rubix44 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x01e5), /* BOSS GT-001 */ + IMPLICIT_FB_SKIP_DEV(0x0582, 0x01fd), /* Roland Boutique SH-01A */ + IMPLICIT_FB_GENERIC_DEV(0x0582, 0x01ff), /* Roland Boutique 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, 0x007d, 0x0d, 0x01), /* Edirol UA-101 High Speed */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x008d, 0x0d, 0x01), /* Edirol UA-101 Full Speed */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00a3, 0x0d, 0x01), /* Edirol UA-4FX */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00a6, 0x0d, 0x01), /* Roland JUNO-G */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00a9, 0x0d, 0x01), /* Roland MC-808 */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00ad, 0x0d, 0x01), /* Roland SH-201 */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00b2, 0x0d, 0x01), /* Roland VG-99 */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00b3, 0x0d, 0x01), /* Roland VG-99 */ + 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, 0x00c5, 0x0d, 0x01), /* Roland SP-555 */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00c7, 0x0d, 0x01), /* Roland V-Synth GT */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00d1, 0x0d, 0x01), /* Roland Music Atelier */ + 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, 0x00eb, 0x0d, 0x01), /* Roland VS-100 */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00f8, 0x0d, 0x01), /* Roland JUNO Series */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00fc, 0x0d, 0x01), /* Roland VS-700C */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00fd, 0x0d, 0x01), /* Roland VS-700 */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00fe, 0x0d, 0x01), /* Roland VS-700 M1 */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x00ff, 0x0d, 0x01), /* Roland VS-700 M2 */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0100, 0x0d, 0x01), /* Roland VS-700 */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0101, 0x0d, 0x01), /* Roland VS-700 M2 */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0102, 0x0d, 0x01), /* Roland VB-99 */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0109, 0x0d, 0x01), /* BOSS eBand JS-8 */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0111, 0x0d, 0x01), /* Roland GAIA SH-01 */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0113, 0x0d, 0x01), /* BOSS ME-25 */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0114, 0x0d, 0x01), /* Roland SD-50 */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0117, 0x0d, 0x01), /* Roland VS-20 */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0119, 0x0d, 0x01), /* Roland OCTAPAD SPD-30 */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x011c, 0x0d, 0x01), /* Roland Lucina AX-09 */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x011e, 0x0d, 0x01), /* BOSS BR-800 */ + 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, 0x0124, 0x0d, 0x01), /* Roland M-300 */ + 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, 0x0134, 0x0d, 0x01), /* Roland V-Mixer */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0138, 0x0d, 0x01), /* BOSS RC-300 */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x013a, 0x0d, 0x01), /* Roland JUPITER-80 */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x013e, 0x0d, 0x01), /* Roland R-26 */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x0145, 0x0d, 0x01), /* Roland SPD-SX */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x014b, 0x0d, 0x01), /* BOSS eBand JS-10 */ + 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, 0x0154, 0x0d, 0x01), /* Roland JUPITER-50 */ + 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, 0x01df, 0x0d, 0x01), /* Roland Rubix22 */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x01e0, 0x0d, 0x01), /* Roland Rubix24 */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x01e1, 0x0d, 0x01), /* Roland Rubix44 */ IMPLICIT_FB_FIXED_DEV(0x0582, 0x01e5, 0x0d, 0x01), /* BOSS GT-001 */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x01fd, 0x0d, 0x01), /* Roland Boutique SH-01A */ + IMPLICIT_FB_FIXED_DEV(0x0582, 0x01ff, 0x0d, 0x01), /* Roland Boutique D-05 */ IMPLICIT_FB_FIXED_DEV(0x0582, 0x0203, 0x0d, 0x01), /* BOSS AD-10 */
{} /* terminator */ @@ -278,6 +406,11 @@ static int audioformat_implicit_fb_quirk } }
+ ///* Don't apply playback quirks for the devices with capture quirk */ + //p = find_implicit_fb_entry(chip, capture_implicit_fb_quirks, alts); + //if (p && p->type == IMPLICIT_FB_FIXED) + // return 0; /* no quirk */ + /* Generic UAC2 implicit feedback */ if (attr == USB_ENDPOINT_SYNC_ASYNC && alts->desc.bInterfaceClass == USB_CLASS_AUDIO &&
On Fri, Apr 9, 2021 at 2:09 PM Lucas jaffa225man@gmail.com wrote:
I wholeheartedly agree with everything you wrote, Mike. Takashi is the person who knows best how to implement these changes, and is definitely the most capable. I will get back to you about retesting my other Roland devices with this trick, although I only have a few of the many devices I'd ultimately like this solution implemented for. Also, I haven't noticed the sync-related clicking with the other devices I own, but I'm confident they won't be hurt by the change. I'll let you both know, though, when I get around to testing them.
Thanks as ever,
Lucas