Linux DJ
Turntable with timecode vinyl connected to an audio interface
DJ Workflow·/notes/

Digital Vinyl System on Linux 2026: Mixxx 2.5 DVS Setup With PipeWire, Calibration, and Latency Notes

DVS on Linux is real and usable in 2026. Here is how to set up Mixxx 2.5 with timecode vinyl, calibrate it properly through PipeWire, and keep latency low enough to actually scratch.

Digital vinyl systems let you control digital tracks with real turntables and timecode records. The turntable sends a timecode signal through a phono preamp into an audio interface. Software decodes the timecode to track needle position, speed, and direction, then plays the digital track accordingly. Push the record forward, the track plays forward. Scratch it, the track scratches. Stop it, silence.

DVS on Linux was fragile for years. JACK routing was manual, calibration tools were underdeveloped, and latency was hard to get low enough for scratching. In 2026, Mixxx 2.5 with PipeWire makes it genuinely usable. Not perfect - there are still tradeoffs compared to commercial systems - but usable for real performance.

Hardware requirements

Audio interface

You need a multi-channel audio interface with at least 4 inputs and 4 outputs. Two inputs for timecode (one per deck), two outputs for main audio, and ideally two more outputs for headphone cueing.

Interfaces confirmed working for DVS on Linux:

InterfaceInputs/OutputsConnectionLinux supportNotes
Focusrite Scarlett 4i44 in / 4 outUSB 2.0Class-compliantReliable, well-tested
Focusrite Scarlett 18i2018 in / 20 outUSB 2.0Class-compliantOverkill but flexible
Behringer UMC404HD4 in / 4 outUSB 2.0Class-compliantBudget option, works
MOTU M44 in / 4 outUSB-CClass-compliantClean preamps, solid driver
Native Instruments Traktor Audio 66 in / 6 outUSB 2.0Class-compliantDesigned for DVS, phono preamps built in
RME Babyface Pro FS12 in / 12 outUSB 2.0Class-compliantPremium option, excellent performance

The critical requirement is phono-level input. Turntable output is phono level (-40 to -60 dBV). Most audio interfaces accept line level (-10 dBV or +4 dBu). You need either:

  • An interface with built-in phono preamps (Traktor Audio 6, some Allen & Heath mixers)
  • External phono preamps between turntables and interface (any decent DJ phono preamp works)
  • A DJ mixer with phono inputs that routes to the interface (using the mixer's built-in preamps)

Do not plug turntables directly into line-level inputs. The signal will be too quiet and the timecode decoder will not lock.

Timecode vinyl

Mixxx supports these timecode formats:

  • Serato CV02/CV02.5 (most common, widely available)
  • Traktor Mk1/Mk2
  • MixVibes DVS

Serato timecode vinyl is the easiest to obtain and has the most robust decoding in Mixxx. Any of these will work, but Serato CV02.5 is what we recommend for new setups.

Turntables

Any turntable with reasonable speed stability works. Direct-drive turntables (Technics SL-1200 and clones like Audio-Technica AT-LP120, Reloop RP-7000, Pioneer PLX-1000) are preferred because belt-drive tables can introduce speed variations that confuse the timecode decoder. If your belt-drive table has a stable motor, it can work, but direct-drive is the safe choice.

PipeWire audio routing for DVS

DVS needs specific audio routing: timecode signal from the interface into Mixxx's vinyl control inputs, and Mixxx's audio output back to the interface.

Step 1: Verify your interface in PipeWire

wpctl status

Find your audio interface in the output. It should appear as both a source (inputs) and a sink (outputs). Note the node IDs.

pw-cli ls Node | grep -A5 "your_interface_name"

Step 2: Ensure all channels are available

By default, WirePlumber may present your interface as a stereo device. For DVS you need all 4+ inputs accessible. Apply the pro-audio profile to your interface:

-- ~/.config/wireplumber/wireplumber.conf.d/dvs-interface.conf
alsa_monitor.rules = {
  {
    matches = {
      {
        { "device.name", "equals", "alsa_card.usb-Focusrite_Scarlett_4i4-00" },
      },
    },
    apply_properties = {
      ["api.alsa.use-acp"] = false,
      ["device.profile"] = "pro-audio",
      ["audio.rate"] = 48000,
      ["audio.allowed-rates"] = "48000",
    },
  },
}

Find your device name:

pw-cli ls Device | grep alsa_card

Restart WirePlumber:

systemctl --user restart wireplumber

Verify all channels appear:

pw-cli ls Port | grep "your_interface_name"

You should see individual ports for each input and output channel.

Step 3: Set PipeWire quantum

For DVS, the quantum determines how quickly Mixxx responds to needle movement. The requirements depend on your use case:

Use caseMinimum quantumLatency at 48 kHzFeel
Mixing (blending, beatmatching)256~10.7 msComfortable
Back-cueing, basic scratching128~5.3 msResponsive
Aggressive scratching, juggling64~2.7 msTight

For most DVS use including light scratching:

pw-metadata -n settings 0 clock.force-quantum 128

The quantum selection guide covers how to test if your system handles 128 reliably. The low-latency checklist covers the system tuning that makes it stick.

Mixxx DVS configuration

Step 1: Enable vinyl control

Open Mixxx, go to Preferences > Vinyl Control.

  • Check "Enable Vinyl Control" for Deck 1 and Deck 2.
  • Set the timecode type to match your vinyl (Serato CV02.5, Traktor, or MixVibes).
  • Set the vinyl speed to 33 RPM or 45 RPM to match the record you are using.

Step 2: Configure sound inputs

Go to Preferences > Sound Hardware.

  • Sound API: PipeWire (or JACK if routing through PipeWire's JACK layer)
  • Vinyl Control 1: Set to your interface's inputs 1-2 (the channels receiving timecode from Deck 1's turntable)
  • Vinyl Control 2: Set to your interface's inputs 3-4 (timecode from Deck 2's turntable)
  • Main Output: Set to your interface's outputs 1-2
  • Headphones: Set to outputs 3-4 (or a separate device)

Step 3: Set buffer size

In the same Sound Hardware preferences:

  • Buffer Size: Start with 256 samples if mixing, 128 if scratching.
  • Sample Rate: 48000 Hz

Click Apply and confirm there are no error messages.

Timecode calibration

Calibration is the step most guides rush through. Get this wrong and your vinyl control will drift, skip, or feel sluggish.

Signal quality check

With your turntable running and the timecode record playing:

  1. Open the Vinyl Control preferences in Mixxx.
  2. Watch the signal quality indicator for each deck. It should show a stable circular pattern (the Lissajous figure).
  3. The signal quality percentage should be above 85%. Below 80% and you will get tracking errors.

If signal quality is poor:

  • Check gain staging. The input gain on your interface should be set so the timecode signal peaks around -6 dBFS to -3 dBFS. Too quiet and the decoder cannot track. Too hot and the signal clips, corrupting the timecode pattern.
  • Check grounding. Turntable ground wires must connect to your phono preamp or interface ground terminal. Without grounding, 50/60 Hz hum overwhelms the timecode signal.
  • Inspect the record. Dusty or scratched timecode vinyl degrades signal quality. Clean it. If it is heavily worn, replace it - timecode vinyl wears faster than regular records because the signal is in the high-frequency range where stylus wear is most damaging.
  • Check channel assignment. Left and right channels carry different timecode components. If they are swapped, the decoder tracks incorrectly. Verify your phono cables are not crossed.

Speed calibration

With the turntable running at 33 RPM:

  1. Observe Mixxx's detected speed for the deck. It should show a steady value close to 1.00x.
  2. If it fluctuates more than +/- 0.01x, your turntable has speed instability. Adjust the turntable's pitch slider to center and check platter spin stability.
  3. If the detected speed is consistently off (0.98x or 1.02x), your turntable's quartz lock may be inaccurate. Compensate with the turntable's pitch adjustment rather than in software.

Latency calibration

DVS has an inherent round-trip delay: timecode signal enters the interface, PipeWire delivers it to Mixxx, Mixxx decodes position and renders audio, PipeWire delivers audio to the interface output. This total latency determines how responsive the vinyl feels.

Measure your system's actual latency:

  1. Set a track to vinyl control mode.
  2. Stop the turntable.
  3. Give the platter a quick push-start.
  4. Count the perceptible delay between physical movement and audio response.

At quantum 128 / 48 kHz, typical round-trip latency is 8-12 ms including interface buffering. This is usable for mixing and moderate scratching. For aggressive scratching, 5-8 ms is the target, which requires quantum 64 and a tuned system.

Mixxx does not have a DVS-specific latency compensation setting. The latency is determined by the audio buffer size and PipeWire quantum. Reduce the buffer to reduce latency.

Scratching performance

Scratching demands the lowest latency because the performer expects an immediate physical connection between hand movement and sound. The perceptual threshold varies:

  • Under 5 ms round-trip: Feels like direct control. Experienced scratch DJs will be comfortable.
  • 5-10 ms round-trip: Perceptible delay for fast cutting and transforms. Usable but not invisible.
  • 10-15 ms round-trip: Fine for baby scratches and simple techniques. Noticeable on fast movements.
  • Above 15 ms round-trip: Most DJs will feel the lag on any technique involving quick direction changes.

Getting under 5 ms on Linux requires quantum 64 with a properly tuned system (PREEMPT_RT kernel, rlimits configured, USB autosuspend disabled, performance governor). Not every system can do it. Quantum 128 at 8-10 ms is the realistic floor for most setups and is sufficient for the majority of DVS use.

Troubleshooting

Timecode tracking drops out intermittently

This is almost always an audio signal issue, not a software issue.

  1. Check signal quality in Mixxx's vinyl control display.
  2. Look for the Lissajous figure becoming irregular during dropouts.
  3. Common causes: loose RCA connections, dirty stylus, worn timecode vinyl, gain set too low, missing ground connection.

Audio plays but does not respond to vinyl

Vinyl control might be set to "Passthrough" mode instead of "Absolute" or "Relative" mode. Check the vinyl control mode in Mixxx's deck controls:

  • Absolute mode: Needle position maps to track position. Lift the needle, drop it at a different spot, audio follows.
  • Relative mode: Only needle movement matters, not position. Better for mixing because you can cue to any point with software controls and the vinyl only affects speed/direction from there.
  • Passthrough mode: The timecode signal is routed directly to the output. This is for monitoring the timecode signal, not for playback.

High latency despite low buffer settings

If Mixxx is set to 128 samples but the latency feels like 512:

pw-top

Check the QUANT column. If PipeWire's quantum is higher than Mixxx's buffer size, PipeWire is the bottleneck. Force the quantum to match:

pw-metadata -n settings 0 clock.force-quantum 128

Also check that Mixxx is using the PipeWire backend and not falling back to ALSA with a larger buffer.

One deck tracks but the other does not

Verify channel assignment in Sound Hardware preferences. Vinyl Control 1 should be on a different input pair than Vinyl Control 2. If both are set to the same inputs, only one can decode properly. Also check that both turntables are grounded and both timecode records are the same format.

Comparison with commercial DVS

Honest assessment of Mixxx DVS on Linux versus commercial alternatives:

AspectMixxx 2.5 on LinuxSerato DJ ProTraktor Pro 4rekordbox
Minimum usable latency5-8 ms (quantum 64-128)3-5 ms4-6 ms3-5 ms
Timecode tracking qualityGood (85-95% typical)Excellent (95%+)Excellent (95%+)Excellent (95%+)
Multi-format timecodeYes (Serato, Traktor, MixVibes)Serato onlyTraktor onlyrekordbox only
4-deck DVSYesYes (with hardware)YesYes (with hardware)
CostFreeSubscription + hardwareLicense + hardwareFree with Pioneer hardware
OSLinux, macOS, WindowsmacOS, WindowsmacOS, WindowsmacOS, Windows

The latency gap exists. Commercial DVS systems have tighter integration between their software and supported hardware, including custom drivers that bypass the OS audio stack on macOS and Windows. On Linux, we go through PipeWire and ALSA, which adds overhead. The 2-3 ms difference is perceptible during aggressive scratching but irrelevant for mixing and basic turntablism.

Where Mixxx wins: it is free, it runs on Linux, it supports multiple timecode formats, and its audio routing through PipeWire is more flexible than anything available on macOS or Windows. You can route timecode through effects chains, record the session, and monitor on multiple outputs simultaneously without third-party routing software.

FAQ

Can I use CDJs in HID mode instead of timecode vinyl? Yes. Mixxx supports HID control from Pioneer CDJ-2000NXS2, CDJ-3000, and other models. HID mode sends position data digitally over USB, eliminating the analog timecode path entirely. Latency is lower because there is no analog-to-digital-to-decode chain.

Does DVS work with the Flatpak version of Mixxx? Yes, with caveats. The Flatpak sandbox requires access to your audio interface through PipeWire portals. USB device access must be granted. If vinyl control inputs do not appear in preferences, the Flatpak may lack permissions. Add --device=all to the Flatpak run command.

Can I use a DJ mixer's built-in interface instead of a separate audio interface? If your DJ mixer has a USB audio interface (Allen & Heath Xone:DB4, Pioneer DJM-900NXS2, etc.) and it is class-compliant on Linux, yes. Route the timecode outputs from the mixer's interface into Mixxx. Some DJ mixers require proprietary drivers on macOS/Windows but work class-compliant on Linux with reduced channel counts.

My timecode signal looks good but the audio stutters when scratching. This is an audio processing issue, not timecode tracking. The stutter comes from XRuns during rapid direction changes. Scratching generates extreme acceleration in the audio engine. Lower your quantum, check the low-latency checklist, and ensure real-time scheduling is active.

Is 45 RPM timecode vinyl better than 33 RPM? 45 RPM vinyl spins faster, which means the timecode signal has more data per second and higher frequency content. This improves tracking precision and reduces latency in the timecode decoder. The downside is that 45 RPM records are shorter (you run out of record faster during long sets) and 45 RPM vinyl is less commonly stocked. For scratch-focused sets, 45 RPM is an advantage. For mixing, 33 RPM is fine.

Conclusion

DVS on Linux works. It is not a hack, not a proof-of-concept, and not limited to simple mixing. Mixxx 2.5 with PipeWire handles timecode decoding, multi-channel routing, and low-latency output well enough for real performance. The setup has more steps than commercial plug-and-play systems, and the absolute lowest latency is a few milliseconds higher, but the flexibility and cost make it a legitimate option. Get your audio routing right, calibrate your timecode signal properly, and make sure your system handles the quantum you need. The vinyl does the rest.

  • DVS
  • Mixxx
  • Timecode Vinyl
  • PipeWire
  • DJ Workflow
  • Linux Audio
  • 2026

Related Notes

← All notes