Low-Latency Audio Setup Guide for Debian

Transforming Debian into a professional digital audio workstation requires configuring the system for deterministic, low-latency performance to prevent audio dropouts (xruns). Achieving this involves installing a real-time kernel, granting real-time execution privileges to the user, configuring the sound server infrastructure, and prioritizing audio hardware interrupts. This guide outlines the essential packages and configuration steps needed to optimize Debian for professional audio production.

1. The Real-Time Kernel

Standard Debian kernels use standard preemption, which can introduce scheduling delays unsuitable for real-time audio. Debian provides a pre-compiled PREEMPT_RT kernel in its standard repositories.

To install the real-time kernel:

sudo apt update
sudo apt install linux-image-rt-amd64 linux-headers-rt-amd64

Rebooting into this kernel ensures that high-priority audio threads can preempt background system tasks immediately.

2. Real-Time Privileges

Audio servers require permission to use real-time scheduling priority and unlimited locked memory. Without these permissions, the system cannot guarantee low-latency operation.

Install the configuration package:

sudo apt install realtime-privileges

During or after installation, ensure your user belongs to the realtime and audio groups:

sudo usermod -aG realtime,audio $USER

This package automatically creates /etc/security/limits.d/audio.conf (or realtime.conf), granting members of the specified group high real-time priority (rtprio 95) and unlimited memory locking (memlock unlimited). Log out and log back in for group changes to take effect.

3. Professional Audio Architecture

You can choose between a modern PipeWire setup or the traditional ALSA/JACK architecture.

Option A: PipeWire (Modern Standard)

Modern Debian releases (Debian 12 Bookworm and newer) default to PipeWire, which handles both consumer audio and pro-audio JACK clients seamlessly.

Install the necessary PipeWire pro-audio packages:

sudo apt install pipewire pipewire-audio-client-libraries pipewire-jack wireplumber

To run JACK applications, use the pw-jack wrapper or set up the PipeWire JACK library replacement according to the package instructions.

Option B: JACK2 (Traditional Setup)

If your workflow relies strictly on standard JACK:

sudo apt install jackd2 qjackctl

When prompted during the jackd2 installation, select Yes to enable real-time priority.

4. Interrupt Prioritization (rtirq)

To prevent USB interfaces or PCIe soundcards from being starved of CPU cycles by other peripherals (such as graphics cards or network controllers), install rtirq-init. This script automatically raises the scheduling priority of the IRQ threads associated with your audio hardware.

Install the package:

sudo apt install rtirq-init

Once installed, check /etc/default/rtirq to ensure your audio interface type (e.g., snd_usb_audio or snd_hda_intel) is listed first in the RTIRQ_NAME_LIST variable, then enable the service:

sudo systemctl enable --now rtirq

5. CPU Governor Configuration

Dynamic CPU frequency scaling can cause dropouts during frequency transitions. For audio tasks, the CPU governor should be locked to performance.

Install the CPU frequency management tools:

sudo apt install cpupower-gui
# Alternatively, via command-line utilities:
sudo apt install linux-cpupower

Set all CPU cores to performance mode:

sudo cpupower frequency-set -g performance