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 */
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.
Created attachment 296177 [details] Simplify quirk table by matching with capture table
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.
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.
Created attachment 296183 [details] Adds only the simplified proposed Roland IDs to the last patch
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.
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.
Created attachment 296343 [details] More fixes for BOSS devices
Created attachment 296345 [details] USB audio clock selector fix
(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.
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.
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
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.
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.
(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!