Scarlett 18i20 gen 3 Linux - Crackling Audio

Talk about your MIDI interfaces, microphones, keyboards...

Moderators: MattKingUSA, khz

puleglot
Established Member
Posts: 135
Joined: Thu Jan 23, 2020 3:14 pm
Has thanked: 3 times
Been thanked: 13 times

Re: Scarlett 18i20 gen 3 Linux - Crackling Audio

Post by puleglot »

lapsio wrote: Sun Mar 22, 2020 11:32 pm Dramatic turn of events :D
Ooops. Sorry for that. I'll test patches with my MOTU M4 next time. :D
subs->cur_audiofmt is not defined at this point. So we need to use subs->altset_idx, or pass fmt->altset_idx to set_sync_ep_implicit_fb_quirk() and use it instead.
lapsio wrote: Mon Mar 23, 2020 12:24 am I think it's important to note that I'm still kinda ghetto-patching my 5.3.7 sources which are different in several places comparing to mainline kernel which you seem to be using to create diffs. For examplle code you posted patch for had following form in my pcm.c file:
The code you pointed out was fixed by one line patch:
https://git.kernel.org/pub/scm/linux/ke ... 92f9d4587b
And there were not much changes besides that. So I still think 5.3* should be fine to test my patches.
puleglot
Established Member
Posts: 135
Joined: Thu Jan 23, 2020 3:14 pm
Has thanked: 3 times
Been thanked: 13 times

Re: Scarlett 18i20 gen 3 Linux - Crackling Audio

Post by puleglot »

OK, that should at least not crash the kernel:

Code: Select all

diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c
index bd258f1ec2dd..4f6709dc8b9f 100644
--- a/sound/usb/pcm.c
+++ b/sound/usb/pcm.c
@@ -365,6 +365,10 @@ static int set_sync_ep_implicit_fb_quirk(struct snd_usb_substream *subs,
 		ep = 0x81;
 		ifnum = 2;
 		goto add_sync_ep_from_ifnum;
+	case USB_ID(0x1235, 0x8215): /* Focusrite Scarlett 18i20 3rd Gen */
+		ep = 0x81;
+		ifnum = 2;
+		goto add_sync_ep_from_ifnum;
 	case USB_ID(0x0582, 0x01d8): /* BOSS Katana */
 		/* BOSS Katana amplifiers do not need quirks */
 		return 0;
@@ -387,10 +391,11 @@ static int set_sync_ep_implicit_fb_quirk(struct snd_usb_substream *subs,
 add_sync_ep_from_ifnum:
 	iface = usb_ifnum_to_if(dev, ifnum);
 
-	if (!iface || iface->num_altsetting < 2)
+	if (!iface || subs->altset_idx == 0 ||
+	    subs->altset_idx >= iface->num_altsetting)
 		return -EINVAL;
 
-	alts = &iface->altsetting[1];
+	alts = &iface->altsetting[subs->altset_idx];
 
 add_sync_ep:
 	subs->sync_endpoint = snd_usb_add_endpoint(subs->stream->chip,
lapsio
Established Member
Posts: 39
Joined: Thu Sep 01, 2016 7:34 am

Re: Scarlett 18i20 gen 3 Linux - Crackling Audio

Post by lapsio »

Oh wow. It's like almost there actually.

48kHz -i10 -o10 works:

Code: Select all


[  685.458854] usb 1-1: Re-using EP 81 in iface 2,3 @00000000efebfc96
[  685.459052] usb 1-1: Setting params for ep #81 (type 0, 12 urbs), ret=0
[  685.459321] usb 1-1: setting usb interface 1:3
[  685.459322] usb 1-1: Re-using EP 1 in iface 1,3 @000000009c0f52e0
[  685.459323] usb 1-1: Re-using EP 81 in iface 2,3 @00000000efebfc96
[  685.459494] usb 1-1: Setting params for ep #1 (type 0, 12 urbs), ret=0
[  685.459495] usb 1-1: match_endpoint_audioformats: (fmt @0000000099aa5a6c) score 1
[  685.459496] usb 1-1: match_endpoint_audioformats: (fmt @000000004456e9d2) score 1
[  685.459497] usb 1-1: match_endpoint_audioformats: (fmt @0000000069f9c2c7) score 2
[  685.459502] usb 1-1: Setting params for ep #81 (type 0, 12 urbs), ret=0
[  685.459503] usb 1-1: Starting data EP @000000009c0f52e0
[  685.459716] usb 1-1: Starting sync EP @00000000efebfc96
[  685.460934] usb 1-1: Starting data EP @00000000efebfc96

48kHz -i18 -o18 works (similar output)
48kHz -i20 -o20 works (similar output)
96kHz -i18 -o18 works (similar output)
96kHz -i10 -o10 works (similar output)
192kHz -i10 -o10 works (similar output)

capture also works properly and they indeed launch interface in selected resolutions, it's quire easy to verify since at 192kHz Scarlett 18i20 disables outputs using Custom Mix routing and that's exactly what happens when JACK is launched at 192kHz.

ALSA works
pulseaudio works

48kHz -i10 (-o20) doesn't work

Code: Select all


2020-03-23T10:27:50.011778+01:00 linux-a7l6 kernel: [  253.815529] usb 1-1: setting usb interface 2:3
2020-03-23T10:27:50.011788+01:00 linux-a7l6 kernel: [  253.815532] usb 1-1: Re-using EP 81 in iface 2,3 @00000000efebfc96
2020-03-23T10:27:50.011789+01:00 linux-a7l6 kernel: [  253.815968] usb 1-1: Setting params for ep #81 (type 0, 12 urbs), ret=0
2020-03-23T10:27:50.011789+01:00 linux-a7l6 kernel: [  253.816379] usb 1-1: setting usb interface 1:1
2020-03-23T10:27:50.011790+01:00 linux-a7l6 kernel: [  253.816381] usb 1-1: Re-using EP 1 in iface 1,1 @00000000dc3a7b64
2020-03-23T10:27:50.011790+01:00 linux-a7l6 kernel: [  253.816381] usb 1-1: Re-using EP 81 in iface 2,1 @0000000076cfa7cb
2020-03-23T10:27:50.011790+01:00 linux-a7l6 kernel: [  253.816585] usb 1-1: Setting params for ep #1 (type 0, 12 urbs), ret=0
2020-03-23T10:27:50.011791+01:00 linux-a7l6 kernel: [  253.816586] usb 1-1: match_endpoint_audioformats: (fmt @0000000099aa5a6c) score 2
2020-03-23T10:27:50.011792+01:00 linux-a7l6 kernel: [  253.816587] usb 1-1: match_endpoint_audioformats: (fmt @000000004456e9d2) score 1
2020-03-23T10:27:50.011803+01:00 linux-a7l6 kernel: [  253.816587] usb 1-1: match_endpoint_audioformats: (fmt @0000000069f9c2c7) score 1
2020-03-23T10:27:50.011805+01:00 linux-a7l6 kernel: [  253.816596] usb 1-1: Setting params for ep #81 (type 0, 12 urbs), ret=0
2020-03-23T10:27:50.011805+01:00 linux-a7l6 kernel: [  253.816596] usb 1-1: Starting data EP @00000000dc3a7b64
2020-03-23T10:27:50.011806+01:00 linux-a7l6 kernel: [  253.816827] usb 1-1: Starting sync EP @0000000076cfa7cb
2020-03-23T10:27:50.011806+01:00 linux-a7l6 kernel: [  253.818047] usb 1-1: Starting data EP @00000000efebfc96
2020-03-23T10:27:50.023766+01:00 linux-a7l6 kernel: [  253.830086] xhci_hcd 0000:00:14.0: WARN: buffer overrun event for slot 4 ep 2 on endpoint
2020-03-23T10:27:50.023788+01:00 linux-a7l6 kernel: [  253.830207] xhci_hcd 0000:00:14.0: WARN: buffer overrun event for slot 4 ep 2 on endpoint
2020-03-23T10:27:50.023789+01:00 linux-a7l6 kernel: [  253.830344] xhci_hcd 0000:00:14.0: WARN: buffer overrun event for slot 4 ep 2 on endpoint
2020-03-23T10:27:50.023789+01:00 linux-a7l6 kernel: [  253.830464] xhci_hcd 0000:00:14.0: WARN: buffer overrun event for slot 4 ep 2 on endpoint
2020-03-23T10:27:50.023790+01:00 linux-a7l6 kernel: [  253.830609] xhci_hcd 0000:00:14.0: WARN: buffer overrun event for slot 4 ep 2 on endpoint
2020-03-23T10:27:50.023791+01:00 linux-a7l6 kernel: [  253.830708] xhci_hcd 0000:00:14.0: WARN: buffer overrun event for slot 4 ep 2 on endpoint
2020-03-23T10:27:50.027764+01:00 linux-a7l6 kernel: [  253.830833] xhci_hcd 0000:00:14.0: WARN: buffer overrun event for slot 4 ep 2 on endpoint
2020-03-23T10:27:50.027794+01:00 linux-a7l6 kernel: [  253.830963] xhci_hcd 0000:00:14.0: WARN: buffer overrun event for slot 4 ep 2 on endpoint
2020-03-23T10:27:50.027796+01:00 linux-a7l6 kernel: [  253.830966] retire_capture_urb: 7574 callbacks suppressed
2020-03-23T10:27:50.027796+01:00 linux-a7l6 kernel: [  253.830967] usb 1-1: frame 0 active: -75
2020-03-23T10:27:50.027797+01:00 linux-a7l6 kernel: [  253.830969] usb 1-1: frame 1 active: -75
2020-03-23T10:27:50.027802+01:00 linux-a7l6 kernel: [  253.830970] usb 1-1: frame 2 active: -75
2020-03-23T10:27:50.027803+01:00 linux-a7l6 kernel: [  253.830971] usb 1-1: frame 3 active: -75
2020-03-23T10:27:50.027803+01:00 linux-a7l6 kernel: [  253.830972] usb 1-1: frame 4 active: -75
2020-03-23T10:27:50.027804+01:00 linux-a7l6 kernel: [  253.830973] usb 1-1: frame 5 active: -75
2020-03-23T10:27:50.027805+01:00 linux-a7l6 kernel: [  253.830975] usb 1-1: frame 6 active: -75
2020-03-23T10:27:50.027805+01:00 linux-a7l6 kernel: [  253.830976] usb 1-1: frame 7 active: -75
2020-03-23T10:27:50.027805+01:00 linux-a7l6 kernel: [  253.831085] xhci_hcd 0000:00:14.0: WARN: buffer overrun event for slot 4 ep 2 on endpoint
2020-03-23T10:27:50.027806+01:00 linux-a7l6 kernel: [  253.831207] xhci_hcd 0000:00:14.0: WARN: buffer overrun event for slot 4 ep 2 on endpoint
2020-03-23T10:27:50.027806+01:00 linux-a7l6 kernel: [  253.831333] xhci_hcd 0000:00:14.0: WARN: buffer overrun event for slot 4 ep 2 on endpoint

48kHz -o10 (-i20) doesn't work

Code: Select all


[  336.795120] usb 1-1: setting usb interface 2:1
[  336.795123] usb 1-1: Re-using EP 81 in iface 2,1 @0000000076cfa7cb
[  336.795518] usb 1-1: Setting params for ep #81 (type 0, 12 urbs), ret=0
[  336.795818] usb 1-1: setting usb interface 1:3
[  336.795819] usb 1-1: Re-using EP 1 in iface 1,3 @000000009c0f52e0
[  336.795820] usb 1-1: Re-using EP 81 in iface 2,3 @00000000efebfc96
[  336.796016] usb 1-1: Setting params for ep #1 (type 0, 12 urbs), ret=0
[  336.796017] usb 1-1: match_endpoint_audioformats: (fmt @0000000099aa5a6c) score 1
[  336.796017] usb 1-1: match_endpoint_audioformats: (fmt @000000004456e9d2) score 1
[  336.796018] usb 1-1: match_endpoint_audioformats: (fmt @0000000069f9c2c7) score 2
[  336.796026] usb 1-1: Setting params for ep #81 (type 0, 12 urbs), ret=0
[  336.796027] usb 1-1: Starting data EP @000000009c0f52e0
[  336.796258] usb 1-1: Starting sync EP @00000000efebfc96
[  336.797572] usb 1-1: Starting data EP @0000000076cfa7cb
[  336.974386] usb 1-1: Starting data EP @000000009c0f52e0
[  336.974833] usb 1-1: Starting sync EP @00000000efebfc96
[  336.974921] usb 1-1: Starting data EP @0000000076cfa7cb
[  337.150445] usb 1-1: Starting data EP @000000009c0f52e0
[  337.150791] usb 1-1: Starting sync EP @00000000efebfc96
[  337.150857] usb 1-1: Starting data EP @0000000076cfa7cb
[  337.326478] usb 1-1: Starting data EP @000000009c0f52e0
[  337.326937] usb 1-1: Starting sync EP @00000000efebfc96
[  337.327045] usb 1-1: Starting data EP @0000000076cfa7cb
[  337.502444] usb 1-1: Starting data EP @000000009c0f52e0
[  337.502854] usb 1-1: Starting sync EP @00000000efebfc96
[  337.502949] usb 1-1: Starting data EP @0000000076cfa7cb
[  337.678431] usb 1-1: Starting data EP @000000009c0f52e0
[  337.678861] usb 1-1: Starting sync EP @00000000efebfc96
[  337.678964] usb 1-1: Starting data EP @0000000076cfa7cb
[  337.854411] usb 1-1: Starting data EP @000000009c0f52e0
[  337.854757] usb 1-1: Starting sync EP @00000000efebfc96
[  337.854814] usb 1-1: Starting data EP @0000000076cfa7cb

But uh. Idk. I mean if I didn't test that before patching I'd probably assume mixed i/o configs are just not supposed to work because like... I don't really see any use case for that realistically. tbh I don't really see any reason to launch interface with less than max available inputs/outputs in general as long as it works properly with full i/o... I believe raw ALSA and pulseaudio do 10/10 at 48kHz just because in such config they can map channels to 7.1 system dictionary more easily. That's the only reasoning I can see behind that.

For me it basically works. I'll test for few days again to search for some audible side effects/crackling etc but I guess I tested most of it already.

The only side effect I see is that sometimes Scarlett just crashes physically and disconnects when JACK is restarting it to change sample rate but it kinda also happened randomly before patching so I guess that's just how this unit operates sometimes. Also it's rare and switching it off/on solves the problem so w.e.

Code: Select all


2020-03-23T10:37:33.823824+01:00 linux-a7l6 kernel: [  837.387140] usb 1-1: setting usb interface 2:1
2020-03-23T10:37:33.823837+01:00 linux-a7l6 kernel: [  837.387142] usb 1-1: Re-using EP 81 in iface 2,1 @000000008c495897
2020-03-23T10:37:33.823838+01:00 linux-a7l6 kernel: [  837.387433] usb 1-1: Setting params for ep #81 (type 0, 12 urbs), ret=0
2020-03-23T10:37:33.823838+01:00 linux-a7l6 kernel: [  837.387777] usb 1-1: setting usb interface 1:1
2020-03-23T10:37:33.823838+01:00 linux-a7l6 kernel: [  837.387778] usb 1-1: Re-using EP 1 in iface 1,1 @00000000683d7406
2020-03-23T10:37:33.823839+01:00 linux-a7l6 kernel: [  837.387779] usb 1-1: Re-using EP 81 in iface 2,1 @000000008c495897
2020-03-23T10:37:33.823866+01:00 linux-a7l6 kernel: [  837.387982] usb 1-1: Setting params for ep #1 (type 0, 12 urbs), ret=0
2020-03-23T10:37:33.823867+01:00 linux-a7l6 kernel: [  837.387983] usb 1-1: match_endpoint_audioformats: (fmt @000000000c0318a1) score 2
2020-03-23T10:37:33.823868+01:00 linux-a7l6 kernel: [  837.387984] usb 1-1: match_endpoint_audioformats: (fmt @00000000dfbd255e) score 1
2020-03-23T10:37:33.823869+01:00 linux-a7l6 kernel: [  837.387984] usb 1-1: match_endpoint_audioformats: (fmt @000000002ca408d6) score 1
2020-03-23T10:37:33.823869+01:00 linux-a7l6 kernel: [  837.387991] usb 1-1: Setting params for ep #81 (type 0, 12 urbs), ret=0
2020-03-23T10:37:33.823870+01:00 linux-a7l6 kernel: [  837.387991] usb 1-1: Starting data EP @00000000683d7406
2020-03-23T10:37:33.823870+01:00 linux-a7l6 kernel: [  837.388209] usb 1-1: Starting sync EP @000000008c495897
2020-03-23T10:37:33.823871+01:00 linux-a7l6 kernel: [  837.389214] usb usb1-port1: disabled by hub (EMI?), re-enabling...
2020-03-23T10:37:33.823871+01:00 linux-a7l6 kernel: [  837.389216] usb 1-1: USB disconnect, device number 6

puleglot
Established Member
Posts: 135
Joined: Thu Jan 23, 2020 3:14 pm
Has thanked: 3 times
Been thanked: 13 times

Re: Scarlett 18i20 gen 3 Linux - Crackling Audio

Post by puleglot »

lapsio wrote: Mon Mar 23, 2020 9:53 am Oh wow. It's like almost there actually.
Great! :)
lapsio wrote: Mon Mar 23, 2020 9:53 am ...
48kHz -i10 (-o20) doesn't work
...
48kHz -o10 (-i20) doesn't work
...
Yes, this is expected. Support for these modes is complicated and I don't think Mac and Win drivers support them either.
lapsio wrote: Mon Mar 23, 2020 9:53 am

Code: Select all

...
2020-03-23T10:37:33.823871+01:00 linux-a7l6 kernel: [  837.389214] usb usb1-port1: disabled by hub (EMI?), re-enabling...
2020-03-23T10:37:33.823871+01:00 linux-a7l6 kernel: [  837.389216] usb 1-1: USB disconnect, device number 6
What's your usb topology (lsusb -t)? Maybe reconnecting to a different port could help.
Last edited by puleglot on Thu Mar 26, 2020 1:15 pm, edited 1 time in total.
puleglot
Established Member
Posts: 135
Joined: Thu Jan 23, 2020 3:14 pm
Has thanked: 3 times
Been thanked: 13 times

Re: Scarlett 18i20 gen 3 Linux - Crackling Audio

Post by puleglot »

lapsio wrote: Sun Mar 22, 2020 3:54 am 192 kHz:
20/20 - interface unit physically crashes and usb resets (or XRUN)
18/18 - jack launches but sound is distorted
...
96 kHz:
20/20 - interface unit physically crashes and usb resets (or XRUN)
These modes are not supported by this device. So either the patch for quirks-table.h is needed (my 2nd patch), or some other quirks enforcing max sample rate constraints should be implemented. I will think about it. 2nd gen 18i20 also has similar problem AFAIS.
lapsio
Established Member
Posts: 39
Joined: Thu Sep 01, 2016 7:34 am

Re: Scarlett 18i20 gen 3 Linux - Crackling Audio

Post by lapsio »

Though probably something more noticeable is sudden lack of switches in alsamixer. I remember there to be selectable clock source. Which is quite random switch to be there tbh considering lack of other way more important ones xD

But probably even more important topic - how about digital i/o mode setting? I mean on Windows you can select S/PDIF or dual ADAT mode in Focusrite Control and it kinda dictates ports availability. I'm not sure if this setting persists across device restarts (like routing for example) since I don't have any ADAT slave device I could test.

I believe routing is not affected by anything. It's persistent across reboots and it's port-bound, not mode-bound since for example if you assign illegal output numbers like 19-20 and then change digital i/o mode or samplerate to higher, Scarlett "keeps" old routing assignment even though technically it's illegal now and doesn't make sense as assigned channels are no longer available in that mode and you couldn't normally select it if you didn't do that before in 48kHz.

But idk about digital i/o mode. Clock source probably doesn't persist since it was available from alsamixer
puleglot
Established Member
Posts: 135
Joined: Thu Jan 23, 2020 3:14 pm
Has thanked: 3 times
Been thanked: 13 times

Re: Scarlett 18i20 gen 3 Linux - Crackling Audio

Post by puleglot »

geoffrey is working on mixer support for gen3 Scarletts:
viewtopic.php?f=6&t=20669
lapsio
Established Member
Posts: 39
Joined: Thu Sep 01, 2016 7:34 am

Re: Scarlett 18i20 gen 3 Linux - Crackling Audio

Post by lapsio »

It really makes me wonder why other people say that Scarlett 18i20 g3 works for them on Linux while it requires patches on all my machines ._.

Unless they just don't hear crackling but it's hard for me to believe nobody hears that, especially on headphones. Or maybe they didn't really test it that much, just decided that it works if they hear audio. Weird.
puleglot
Established Member
Posts: 135
Joined: Thu Jan 23, 2020 3:14 pm
Has thanked: 3 times
Been thanked: 13 times

Re: Scarlett 18i20 gen 3 Linux - Crackling Audio

Post by puleglot »

Yeah, a lot of people doesn't notice that. I had similar experience with MOTU M2/M4 which is also using implicit feedback for synchronization. Some people started to hear crackling only when I pointed it out to them. :)
puleglot
Established Member
Posts: 135
Joined: Thu Jan 23, 2020 3:14 pm
Has thanked: 3 times
Been thanked: 13 times

Re: Scarlett 18i20 gen 3 Linux - Crackling Audio

Post by puleglot »

I also wonder which Scarlett Gen 3 models also using implicit feedback. Maybe all of them? :)
puleglot
Established Member
Posts: 135
Joined: Thu Jan 23, 2020 3:14 pm
Has thanked: 3 times
Been thanked: 13 times

Re: Scarlett 18i20 gen 3 Linux - Crackling Audio

Post by puleglot »

Also note that audibility of these crackling artifacts probably depends on how system timer deviates from devices' internal clock.
triiif
Established Member
Posts: 4
Joined: Sun Mar 22, 2020 11:58 am

Re: Scarlett 18i20 gen 3 Linux - Crackling Audio

Post by triiif »

puleglot wrote: Mon Mar 23, 2020 7:42 am OK, that should at least not crash the kernel:

Code: Select all

diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c
index bd258f1ec2dd..4f6709dc8b9f 100644
--- a/sound/usb/pcm.c
+++ b/sound/usb/pcm.c
@@ -365,6 +365,10 @@ static int set_sync_ep_implicit_fb_quirk(struct snd_usb_substream *subs,
 		ep = 0x81;
 		ifnum = 2;
 		goto add_sync_ep_from_ifnum;
+	case USB_ID(0x1235, 0x8215): /* Focusrite Scarlett 18i20 3rd Gen */
+		ep = 0x81;
+		ifnum = 2;
+		goto add_sync_ep_from_ifnum;
 	case USB_ID(0x0582, 0x01d8): /* BOSS Katana */
 		/* BOSS Katana amplifiers do not need quirks */
 		return 0;
@@ -387,10 +391,11 @@ static int set_sync_ep_implicit_fb_quirk(struct snd_usb_substream *subs,
 add_sync_ep_from_ifnum:
 	iface = usb_ifnum_to_if(dev, ifnum);
 
-	if (!iface || iface->num_altsetting < 2)
+	if (!iface || subs->altset_idx == 0 ||
+	    subs->altset_idx >= iface->num_altsetting)
 		return -EINVAL;
 
-	alts = &iface->altsetting[1];
+	alts = &iface->altsetting[subs->altset_idx];
 
 add_sync_ep:
 	subs->sync_endpoint = snd_usb_add_endpoint(subs->stream->chip,
Hello i have applied this patch to a 5.5.11 , but tweaking the line
case USB_ID(0x1235, 0x8212): // focusrite 4i4 gen3
for the focusrite 4i4 gen3 and i can confirm it removes the cracks from Bitwig !! so happy :D thank you

48000Hz, 2048frames, 3buffer --> 128ms
if i lower the frames number, i can get cracks on complex songs.
now that it is solved, i saw also you mention complex edit to quirks-table.h . I would love to know if with the right edit, i could go lower in frames and get better latency. I tried one build to adapt to the 4i4 without knowing what i was doing :D so it failed ...

best regards
Last edited by triiif on Wed Mar 25, 2020 11:04 pm, edited 1 time in total.
puleglot
Established Member
Posts: 135
Joined: Thu Jan 23, 2020 3:14 pm
Has thanked: 3 times
Been thanked: 13 times

Re: Scarlett 18i20 gen 3 Linux - Crackling Audio

Post by puleglot »

triiif wrote: Wed Mar 25, 2020 10:41 pm now that it is solved, i saw also you mention complex edit to quirks-table.h .
This is only needed for cards that support different set of sample rates in different modes, like 18i20 and probably 18i8. These sample rate constraints cannon be exposed in a standard UAC2 way, so Focusrite exposes them via non class compliant audio format descriptors that is currently not understood by the driver.
puleglot
Established Member
Posts: 135
Joined: Thu Jan 23, 2020 3:14 pm
Has thanked: 3 times
Been thanked: 13 times

Re: Scarlett 18i20 gen 3 Linux - Crackling Audio

Post by puleglot »

BTW, I'm working on a more generic solution that would be able to find implicit feedback endpoint on all class compliant devices without needing any quirks.

And I would like to see lsusb -v -d output for 18i8 gen3. :)
lapsio
Established Member
Posts: 39
Joined: Thu Sep 01, 2016 7:34 am

Re: Scarlett 18i20 gen 3 Linux - Crackling Audio

Post by lapsio »

triiif wrote: Wed Mar 25, 2020 10:41 pm Hello i have applied this patch to a 5.5.11 , but tweaking the line
case USB_ID(0x1235, 0x8212): // focusrite 4i4 gen3
for the focusrite 4i4 gen3 and i can confirm it removes the cracks from Bitwig !! so happy :D thank you
Ah, good to hear I was not the only person on the planet that had this problem xD
I was able to go well down to like 20-30ms latency with 512 or 256 frames. The only problem I had at this spec was that sometimes after some time of playback something "breaks" and interface goes completely nuts, generating random, terrible harsh noise (I think it keeps repeating 1 buffer infinitely) until unit is rebooted.

but anything more reasonable like 40ms should be more reliable. What happens that you can't go down with latency? Does JACK run in RT FIFO priority? I doubt it's possible to go below 20-ish something because that's latency stated in spec sheet.
Post Reply