This repository provides the user-space components required for full functionality of the Focusrite USB audio interfaces that use the Linux FCP driver: the Scarlett 4th Gen 16i16, 18i16 and 18i20, and the ISA C8X.
If you don't have to build from source:
-
Install the RPM or deb from the Releases page, and put your user in the
audiogroup:sudo usermod -a -G audio $USERLog out and back in for the group change to take effect.
If you have installed from source before, run
make uninstallin that checkout first. Source builds install to/usr/local/bin, which comes before/usr/bininPATH, so the old binaries shadow the packaged ones.which -a fcp-toolshows whether this has happened. -
The FCP driver comes with the kernel. The Scarlett 4th Gen 16i16, 18i16 and 18i20 need Linux 6.14 or later; the ISA C8X needs 6.18.39, 7.1.4, or 7.2+. Check with
uname -r.Debian 13 (trixie) ships 6.12, so a newer kernel is required from backports:
echo 'deb http://deb.debian.org/debian trixie-backports main' | sudo tee /etc/apt/sources.list.d/trixie-backports.list sudo apt update sudo apt install -t trixie-backports linux-image-amd64
Ubuntu 24.04 ships 6.8, so it needs the hardware enablement kernel:
sudo apt install linux-generic-hwe-24.04
Reboot into the new kernel.
-
Plug in the device and check that it was detected:
fcp-tool
It should report your interface, its card number, and the installed firmware version.
-
Install and run alsa-scarlett-gui. It controls the device and offers firmware updates when one is available.
The rest of this page covers building from source, the command-line tools, and troubleshooting.
FCP support in Linux consists of several components that work together:
-
Kernel Driver (linux-fcp)
- Allows
fcp-serverto communicate with the device; comes with the kernel, so there is nothing to install
- Allows
-
User-space Server (this repo:
fcp-server)- Communicates with the device via the kernel driver
- Creates ALSA controls and transfers control changes to and from the device
- Allows
alsa-scarlett-guiandfcp-toolto update the device firmware, reset the configuration, and reboot
-
Firmware Update Tool (this repo:
fcp-tool)- CLI utility for updating device firmware
- Uploads firmware to the device via
fcp-server
-
GUI Application (alsa-scarlett-gui)
- Provides a graphical interface for device control and firmware updates
- Uses the ALSA controls created by
fcp-server
The currently supported devices are:
- Scarlett 4th Gen 16i16, 18i16, and 18i20
- ISA C8X
The FCP driver itself supports all Focusrite USB audio interfaces since the 2nd Gen Scarletts, so support for the other devices will be added here later. Until then, the Linux Scarlett2 driver supports all the other 2nd Gen and later Scarlett, Clarett USB, Clarett+, and Vocaster devices.
-
A kernel with the FCP driver for your device, as listed in the Quick Start above. Check with
uname -r. -
Required packages for building:
# Debian/Ubuntu
sudo apt-get install build-essential libasound2-dev libsystemd-dev \
libssl-dev zlib1g-dev libjson-c-dev pkg-config
# Fedora
sudo dnf install make gcc alsa-lib-devel systemd-devel openssl-devel \
zlib-devel json-c-devel pkgconfig- Audio group membership is required to use
fcp-tool:
sudo usermod -a -G audio $USERLog out and back in for the group membership change to take effect.
Build from source:
- Download, build and install:
git clone https://github.com/geoffreybennett/fcp-support.git
cd fcp-support
make
sudo make installThis will:
- Build
fcp-serverandfcp-tool - Install binaries to
/usr/local/bin/ - Install systemd service file to
/usr/local/lib/systemd/system/ - Install udev rule to
/usr/local/lib/udev/rules.d/ - Install data files to
/usr/local/share/fcp-server/
- Reload systemd and udev:
sudo systemctl daemon-reload
sudo udevadm control --reload-rulesThe installation process sets up:
-
Systemd Service:
fcp-server@.service- Started automatically when a compatible device is detected
- One instance per device (e.g.,
fcp-server@1.service)
-
Udev Rules:
- Start systemd service when device is connected
- Normal operation:
- Plug in the device
- Server starts automatically
- Check status with
systemctl status fcp-server@*
- Troubleshooting:
- Watch the system log when connecting the device:
journalctl -f - Stop the FCP server:
sudo systemctl stop fcp-server@* - Get the card number with
aplay -l - Start the FCP server manually with debug logging:
LOG_LEVEL=debug fcp-server <card-number>
Firmware is distributed separately, from
scarlett4-firmware.
RPM and deb packages are on its
Releases
page, and Arch users can install scarlett4-firmware from the AUR. To
install the files by hand instead, put the .bin files in
/usr/lib/firmware/scarlett4, which is where fcp-tool and
alsa-scarlett-gui look for them. fcp-tool list-all reports the
versions it finds.
fcp-tool manages firmware from the command line:
# View all commands
fcp-tool help
# Update firmware (takes 1-2 minutes)
fcp-tool update
# Update firmware to a specific version
fcp-tool update -f /path/to/firmware.bin
# Maintenance commands
fcp-tool erase-config # Reset device configuration to firmware defaults
fcp-tool reboot # Reboot deviceReport issues at: https://github.com/geoffreybennett/fcp-support/issues
Please include:
- Device model
- Linux distribution and version
- Output of
dmesgandlsusb - Output as per troubleshooting steps above
- Author: Geoffrey D. Bennett
- Email: g@b4.vu
- GitHub: https://github.com/geoffreybennett
This software, including the driver, tools, and GUI is Free Software that I’ve independently developed using my own resources. It represents hundreds of hours of development work.
If you find this software valuable, please consider making a donation. Your show of appreciation, more than the amount itself, motivates me to continue improving these tools.
You can donate via:
- LiberaPay: https://liberapay.com/gdb
- PayPal: https://paypal.me/gdbau
- Zelle: g@b4.vu