Focusrite Scarlett 6i6 2nd Gen

I open this thread for two purposes: First to ask for help getting my new 6i6 2nd Gen running (will send it back if I don’t succeed) and second as a reference for people considering to buy one.

Here is what I can confirm to work:

  • All 6 ins and all 6 outs (tested S/PDIF by connecting in&out)
  • Gain knobs for in1/in2
  • 48V phantom power (powers in1 and in2)
  • Headphone 1 (plays sound of out1/2)
  • Headphone 2 (plays sound of out3/4)
  • Monitor Knob (controls out 1/2, but not headphone 1)
  • MIDI Led (blinks when midi data comes in, but not when data is sent out)

However, I cannot access the 6i6 2nd Gen internal settings, so that the following does not work:

  • INST and PAD settings for in1/in2
  • Internal mixer, e.g. for latency free monitoring or to route the out5/6 signals to headphone 2

Does anyone manage to access the internal settings?

I’m currently using ArchLinux with a kernel 4.10.5 (SMP) on a Thinkpad X250. I use jack 0.125.0 and alsa-lib 1.1.3. Planning to switch to AVLinux for audio work.

I just checked the most up to date Linux kernel and unfortunately the internal mixer of the 2nd generation Scarlett is not yet supported. I started reverse engineering the protocol some time ago in order to add this functionality to the Linux driver but this will definitely take some time.

As I need to change the internal mixer only rarely I just attach my 18i8 to a Windows system.

Regards, Arnd

Hello there! Fellow 6i6 2nd gen user who is late to the party. I have set up the direct routing via the Focusrite Control in Windows. I am running Ardour on Mint and am using Cadence for managing JACK. So far things are going great except the monitoring. May I ask how you have that set up? It is my understanding that inputs 1&2 route directly to the headphone jack 1 and inputs 3&4 rout to the 2nd headphone jack. Am I mistaken?

@Arnd: “I started reverse engineering the protocol some time ago in order to add this functionality to the Linux driver but this will definitely take some time.”

How is the progress on this? I have the 6i6 but no access to a Windows computer.

@Arnd: “I started reverse engineering the protocol some time ago in order to add this functionality to the Linux driver but this will definitely take some time.”

Just a noob question: does your reverse engineering work concern also the “inst” and “pad” options of the front input?
Are those options related to the kernel, as well as the internal mixer?
If not is there any chance to have them available in any GNU/linux related sw, instead of having to go back to w… every time?

Hi Arnd-

I’ve just purchased a 2nd generation 6i6 and am wondering if you’ve made any progress on reverse engineering the protocol? I’ve got access to a USB bus analyzer and some kernel driver experience (but no ALSA), so I’d be happy to help however it’d make sense.

Thank you!


i can provide a little help for the frontend to provide the users a gui for the interface. Let me know if you have something @jsonnabend @Arnd


It may be easier that you think. Back in 2013 I just ran MixControl on a Windows System inside VirtualBox on a Linux host, and used wireshark to monitor USB commands.

It took me about an hour to move each knob, slider, write down the URB, command, address. Documenting it all and writing a Python prototype script took another day or two, same for an initial a kernel driver.

…and then 3 years to get it upstream in vanilla Linux – most of that work was done by others, in particular Tobias Hoffmann and Chris Arges.

Note, that you do need to unload the ALSA driver to prototype (otherwise you get a “device resource busy”). If this wasn’t the case, the whole mixer-interface could be implemented in userspace.

Anyway to get started: check out

Hi all!

I’ve written a Linux mixer driver for the 18i20 2nd gen. See for the code and pre-built Fedora (works for me) and Ubuntu (untested) kernels.

My driver adds ALSA controls for:

  • Master volume knob indicator
  • Volume controls for the 10 analogue HW outputs
  • HW/SW volume switches for the 10 analogue HW outputs
  • Output mux (where the sound for the HW outputs comes from; defaults to PCM outputs 1-20)
  • Capture mux (where the sound for PCM recording comes from; defaults to HW inputs 1-18)
  • Matrix mux (where the sound going into the mixer comes from; 18 inputs default off)
  • Mixer matrix (18 inputs * 10 outputs = 180 controls)
  • Mute and dim indicators
  • Level meters

Comments and feedback on the code (if you’re familiar with kernel code; I’m not!) or if the driver works for you would be very welcome.



Nice and kudos for looking into this! Better drive support is for Linux is needed for a variety of new[er] devices.

I don’t have a 2nd gen Scarlett myself, so I can’t help testing…
Curious. Is there a reason why you’ve created a new file mixer_scarlett_gen2.c is the interface significantly different from the 1st generation?

Yes, the USB interface is completely different between Gen 1 and 2. I couldn’t figure out how to reuse anything from mixer_scarlett.c, although reading it was very helpful.

Hi, just leaving this here in case anyone is interested…

Just purchased a Focusrite Scarlett 8i6 3rd Generation audio interface… I can confirm basic functionality (record, playback, all hardware controls, headphone output and direct monitoring are working out of the box in ubuntu 20.04 (Linux kernel 5.4). Ardour is working fine with Alsa but not with jack however, but this is fine for my needs. alsamixer is not picking up the internal mixer (no settings), but I just made changes to the internal mixer in windows and then booted into linux afterwards and this worked.

I have some programming experience, so I could potentially be interested in having a go at coding an alsamixer patch for the gen 3 interfaces… however I would definitely need mentoring to get me up and going.

cheers Daniel Cavalli