Lucas, you can always email the maintainers if you're 100% sure this patch will work for everybody etc., just be sure to read /usr/src/linux/MAINTAINERS first. Em Ter, 30 de mar de 2021 23:21, Lucas <jaffa225man@xxxxxxxxx> escreveu: > At the risk of being redundant, I'm resending this with a simpler "[PATCH]" > subject to reach a broader audience, since no comment has been made yet: > > TLDR? Please just glance at the patch at the end and include it in the > kernel. :) > > Some days ago, I found this excellent informational post, and that Mike > Oliphant's patch is in mainline now: > > http://blog.nostatic.org/2020/01/getting-boss-gt-1-effects-processor-to.html > > 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! (The previously asserted VG-99 didn't need to be included in the > patch for it to work.) > > I've also tested all three for playback capability, since that's implied > when a device is using implicit feedback, which I hadn't realized the first > time around. Anyway, they all seem to be working as expected for playback > too. There are two caveats for playback, though: > > 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 > isn't 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. > > You may know this, as the detection of these devices shows partial > compatibility with the existing kernel, but here are the commands I've had > to use for their 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: > arecord -D hw:INTEGRA7 -f S32_LE -c 2 -r 96000 ./file.wav > (Then change MENU->SYSTEM->SOUND->Sampling Rate to 44.1 [kHz], > otherwise its 96[kHz], > and change 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: > (Through its built-in controls, first configure the 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 > (Then via use of similar commands, & the "AUDIO I/F" tab on its > main screen having both "LOOP BACK" & "DIRECT MONITOR" enabled, I was able > to begin a new composite recording, voicing-over what I'd recorded earlier, > by playing it back while interjecting - very fun!) > > > > The behavior on the vanilla kernel (whether or not "pasuspender -- cat" is > running concurrently) follows. > 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 > (After a brief timeout, it says this & ends:) > 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 > (After a brief timeout, it says this & ends:) > aplay: pcm_write:2061: write error: Input/output error > > INTEGRA-7: > 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 > (After a brief timeout, it says this & ends:) > arecord: pcm_read:2153: read error: Input/output error > (Then change MENU->SYSTEM->SOUND->Sampling Rate to 44.1 [kHz], > otherwise its 96[kHz], > and change 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 > (After a brief timeout, it says this & ends:) > 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 > (After a brief timeout, it says this & ends:) > aplay: pcm_write:2061: write error: Input/output error > > R-26: > 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 > (After a brief timeout, it says this & ends:) > 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 > (After a brief timeout, it says this & ends:) > aplay: pcm_write:2061: write error: Input/output error > > > > 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. > > 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 for any comments or looking into adding this, > > Lucas Endres > > > > The patch follows (I removed my previous VG-99 additions since it already > works): > 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-30 17:49:08.143196280 > -0500 > @@ -71,27 +71,87 @@ 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, 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, 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 */ >