Does Focusrite Scarlett 18i8 work under linux?

For my 18i8 I’ve found QasMixer to be slightly more usable than the plain AlsaMixer. It’s still generic of course. Robin’s attempt looks great.

Mirko

I use a Scarlett 18i8 1st generation with a OctoPre MK II for mobile recording with kxStudio 18.04. It works very well, except for one issue: The driver comes up with weird mixer states that do not reflect the actual mixer state in the device. I filed this as a bug here: https://bugzilla.kernel.org/show_bug.cgi?id=203089

Robin’s Scarlett Mixer is of great value to me. I even could use the 18i8 as a little monitor mixer!

I really enjoy the audio quality of the 18i8, which I bought used. Good value for the price this way. Now mixing down an EP that was recorded with a 6-piece band and this setup.

For 1st and 2nd generation it is not possible to read the current mixer settings from the device (I don’t know about 3rd gen). Drivers on other platform push the last used state to the device every time it is connected.

alsactrl can do the same on GNU/Linux. Check if you have /etc/init.d/alsa-utils (from alsa-utils) and if /var/lib/alsa/asound.state exists. Here, at one point the tool pushed state.usb from a Presonus AudioBox the Scarlett. That resulted in the device waking up with very strange settings. It nearly drove me mad to track this down and disable it. Maybe this is also the issue that you have?

PS. You can also store mixer settings on the device for standalone operation (there is a dedicated flash-mem for that). Those settings are set when the device is power-cycled. On Linux, there can still be a mismatch to mixer-display, if the driver or alsactrl doesn’t push the complete state to the device. But you can store sane defaults.

Sadly the switch to store data to the flash was hidden in the linux-kernel drivers [1]. Easiest is probably to use some other OS and Scarlett-mixer to save it once.

[1] The reason for this is that alsa-mixer has no “trigger/push” button, only toggle switches. The original driver saved current state to the flash on every toggle. kernel devs were worried that this may cause excessive writes, and wear out the flash.

1 Like

Thanks for all those details, Robin.

I’m not sure about asound.state, but at least there hasn’t been an issue from that direction. However, the device is never plugged in on booting up the system, since I use it only in my mobile setup with the laptop (which virtually always is in sleep mode). So the init script most likely does not affect this.

I solved this by a shell script that uses alsactl. First it “initializes” the mixer by loading a certain preset different from the defaults, and then it loads values that make sense to me. (Basically it is a workaround for pushing the complete state to the device.)

After that, it starts scarlett-mixer, which I need anyways. I might change it so that it saves the current settings after scarlett-mixer has finished. Sounds like a good idea.

This is not perfect, but easy enough for my purposes. With this little workaround, I really can do neat recordings with this mobile setup.

Hello all,

Audio interface newbie here! I 'd like to ask the following question regarding the Scarlett 18i8 1st Gen:

When used as a plain USB sound card (eg, YouTube, media player, etc) have you ever experienced any issues with the sound (when switching from the onboard sound card of your PC to the audio interface) getting either high or low pitched (as if you play vinyl records in higher or slower speeds).

I get this behaviour sometimes with or without JACK being involved. I 'm on KDE Neon (Ubuntu LTS based distribution) using Pulseaudio.

Thanks for any response :slight_smile:

IIRC You can/have to set the sample rate of the device first, then set Jack to match that sample rate. Not sure about Pulse and how to do it there, but if it isn’t handling the correct sample rate that the device is set to, then that would be your issue.

I haven’t used it on Linux yet to know how to set the sample rate there in the mixer software that is available. I have one sitting around at the moment but no Linux machine to plug it into at this moment, sorry.

   Seablade

Hi Seablade,

By doing some more reading my understanding is that Pulseaudio handles resampling. You can configure it so that the sound card follows the source’s sampling rate, but I haven’t tried that and it is suggested to better avoid it. I need to investigate this a bit more.

I 'd appreciate any other feedback from anyone on this matter. It’s really annoying :frowning:

Thanks

Funnily enough I just donated my Scarlet 18i8 today, so I no longer have access to double check, but I would suspect your problem lies in Pulseaudio based off your description. Most people would not have Pulse as the lowest layer on their audio totem pole, but instead have pulse feed into Jack or a similar situation, they just have very different goals in mind in terms of the needs of professional audio.

I 'd agree the problem seems to be Pulseaudio (maybe in combination with the Scarlett’s ALSA driver). I 've done a LOT of reading and testing today about this issue. I 've implemented a script which I control via systemd and things look much better now :slight_smile:

You are right that my goals are different compared to most of the people participating here, so pulseaudio is still meaningful for my setup. I 'm not a professional musician or sound/mixing/production engineer of any sorts (I 'm an IT/Linux guy by profession), but music is a great passion of mine.

I 've owned this Scarlett for quite a while now, but never really had the time to learn it and the coronavirus lockdowns helped in this respect. I 'm not sure if I 'll keep it (the Behringer UMC404HD or UMC1820 look very interesting), but for now I think I 'm all sorted with this interface, Pulseaudio as well as JACK (more or less they all play nicely together). I just need a pair of small monitor speakers (I 'm leaning towards the Fluid Audio F5) and I 'll be all good.

Tomorrow I 'll post what I did to make it work for my needs. Thanks for your feedback :+1:

Well I said that I 'd provide details of my solution, but I failed to do so until now :stuck_out_tongue: Here they are (it’s for KDE Neon/Ubuntu, just adapt for your preferred Linux distribution/DE):

  1. Install the JACK pulseaudio module:

sudo apt-get install pulseaudio-module-jack

  1. Edit /etc/pulse/default.pa to include the folowing for JACK:

### Automatically connect sink and source if JACK server is present
.ifexists module-jackdbus-detect.so
.nofail
load-module module-jackdbus-detect channels=2
#set-default-sink jack_out
.fail
.endif

(I think step 1 edits default.pa to include the above, but you can confirm)

and also make the audio interface the default when it’s turned on:

### Make some devices default
set-default-sink alsa_output.usb-Focusrite_Scarlett_18i8_USB_785502B1-00.analog-surround-71

  1. Implement the following script to bring the Scarlett to a known state (as unfortunately by default volume is muted for all the outputs, main as well as headphones, when turning on. I think it’s mentioned by one other member in one of the previous posts):

cat /etc/pulse/switch_soundcards.sh

#!/bin/bash

### Script to switch between the USB audio interface and the laptop's onboard sound card ###

### pacmd list cards
### pactl list short sinks

while true
 do

### Switch to the USB audio interface once it is detected and disable the onboard sound card
  while true
   do cat /proc/asound/cards | grep Scarlett > /dev/null
     if [[ `echo $?` == '0' ]]
      then echo "Enabling USB audio interface"
       sleep 1
#      ./QjackCtrl.sh action=start
       alsactl -f /etc/pulse/asound.state restore USB
#      pacmd unload-module module-stream-restore
#      pacmd load-module module-stream-restore restore_device=false
       pulseaudio --kill
#      pacmd set-card-profile alsa_card.pci-0000_00_1b.0 off
#      pacmd set-default-sink jack_out
       break
    fi
    sleep 1
   done

### Switch to the onboard sound card once the USB audio interface gets disconnected/turned off
  while true
   do cat /proc/asound/cards | grep Scarlett > /dev/null
     if [[ `echo $?` != '0' ]]
      then echo "Enabling onboard soundcard"
#      ./QjackCtrl.sh action=kill
#       pulseaudio --kill
#       pacmd set-card-profile alsa_card.pci-0000_00_1b.0 output:analog-stereo+input:analog-stereo
      break
     fi
    sleep 1
   done

done
  1. Enable pulseaudio to start as a service for your user (not necessary, but gives some flexibility):

systemctl --user enable pulseaudio
systemctl --user start pulseaudio

  1. Create a systemd service to call the script you put together in step 3:

cat /etc/systemd/user/soundcards.service

[Unit]
Description=Service to switch between a USB audio interface and the onboard soundcard
Wants=pulseaudio.service
After=pulseaudio.service

[Service]
Type=simple
ExecStart=/etc/pulse/switch_soundcards.sh
Restart=always
RestartSec=3

[Install]
WantedBy=default.target

  1. Enable and start that service for your user:

systemctl --user enable soundcards
systemctl --user start soundcards

Of course all these may not be necessary, but this way I get some consistent behaviour with Pulseaudio and the Scarlett 18i8 1st Gen.

Hope all the above will help other people trying to make the particular audio interface play nicely with pulse :slight_smile:

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.