Denon Prime hardware does not use the RK3288’s built-in audio interfaces for DJ output. Instead, the SoC hands off digital audio over an internal USB 2.0 bus to a dedicated XMOS USB audio controller, which feeds professional-grade AKM converters. MIXXX targets these converters directly through ALSA, with no intermediate audio server in the path.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/gueritta/primemixxx/llms.txt
Use this file to discover all available pages before exploring further.
Hardware Signal Chain
Why Direct ALSA
Engine OS is a stripped-down Buildroot Linux environment with no PulseAudio, JACK, or PipeWire installed. The only audio infrastructure present isalsa-utils version 1.2.4. MIXXX’s ALSA backend communicates directly with the kernel’s ALSA layer, which maps to the XMOS USB audio device via the snd-usb-audio kernel module. There is no intermediate daemon to configure, no session management, and no permission model beyond the running user’s access to /dev/snd/*.
Sound Cards on Prime Go
Card 0: Surface (USB Control Surface)
Handles MIDI/HID communication with the hardware controls: jog wheels, faders, buttons, pads, and encoders. Not for audio output. Configuring MIXXX to output to card 0 will produce silence.
Card 1: JP11 (XMOS Audio Interface)
The main XMOS audio interface connected to the AK4621 CODEC and AK4413 DAC. This is the correct target for all MIXXX audio output. Use
hw:1,0 or the named form hw:JP11,0.ALSA Diagnostic Commands
Releasing ALSA Hardware Locks
Engine OS’s DJ application (“Planck”) takes exclusive control of the ALSA interfaces at boot. MIXXX cannot open the JP11 ALSA device while Engine OS holds the lock. The TKGL bootstrap module handles this automatically by callingsystemctl stop engine before launching MIXXX. If you are launching MIXXX manually (for debugging or from a switcher script), you must release the lock first:
hw:JP11,0 while Engine OS is running will result in a Device or resource busy error from ALSA.
Pre-Configured soundconfig.xml
MIXXX normally enumerates all available ALSA PCM devices via PortAudio before presenting the audio preferences dialog. On Prime hardware, this enumeration can be slow or problematic (see the PortAudio NDEBUG section below). Providing asoundconfig.xml file causes MIXXX to skip enumeration and open the specified device directly:
/media/az01-internal/mixxx/settings/soundconfig.xml. The --settingsPath argument in the launcher points MIXXX to this directory, so no additional configuration is needed.
ALSA Buffer Tuning
Buffer size is the primary lever for latency. Smaller buffers reduce latency but increase the risk of xruns (buffer underruns) when the CPU is briefly unavailable to the audio callback.| Parameter | Value | Derived latency |
|---|---|---|
| Device | hw:JP11,0 | Direct hardware, no software conversion |
| Format | S32_LE | 32-bit signed little-endian |
| Channels | 4 | Main L/R + booth/headphone |
| Sample rate | 44100 Hz | — |
latency setting | 5 | — |
period_size | 1024 frames | 23.2 ms per callback |
buffer_size | 2048 frames | 46.4 ms total ring buffer |
PortAudio NDEBUG Fix
The Buildroot PortAudio package (V19.7.0-devel) is compiled without the NDEBUG preprocessor define, leaving all C assert() calls active in the release binary. During ALSA device enumeration, PortAudio’s GropeDevice() function probes plugin PCMs on the JP11 hardware. Some of these PCMs report 0 channels, triggering:
pa_linux_alsa.c before MIXXX has finished initialising.
Fix: Add
-DNDEBUG to PortAudio’s CFLAGS in package/portaudio/portaudio.mk via a post-configure hook. This disables all assertions at compile time.The complete modified file is available at patches/portaudio-ndebug.mk in the repository. Apply it during the Buildroot compile step, not on the device.Verification: A standalone test binary (minipa_arm, built from test/minipa.c) calls Pa_Initialize() + Pa_GetDeviceCount() and confirms:- 4 ALSA devices found (no crash)
- JP11 device:
PCM inmusic,jp11-audio-codec-0 (hw:1,0)— 2 inputs, 4 outputs
Pa_Initialize() crashes before returning and MIXXX never reaches its main window.Verification Checklist
Run these checks after any audio configuration change to confirm the full chain is working:Verify soundconfig.xml path
JP11: PCM inmusic,jp11-audio-codec-0 (hw:1,0).