Building primemixxx from source produces a self-contained ARMv7 bundle of MIXXX 2.5.6 and all its dependencies — Qt 5.15.8, ALSA, audio codecs, and MIDI libraries — ready to be deployed to the SD card on your Denon Prime Go or Prime 4.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.
Prerequisites
Before running any build script, install the following on your build machine:- u-boot tools — for
mkimage(packs firmware.dtb) - 7-zip — for unpacking the original firmware archive
- QEMU ARM user-mode + binfmt — allows running ARMv7 binaries natively on x86 during the build
- Base development packages —
build-essential,git,wget,cpio,file,unzip,rsync,bc - Buildroot 2021.02.10 — cloned by
clone-buildroot.sh(see Step 2 below)
Makefile Targets
The top-levelMakefile delegates to shell scripts. All targets are .PHONY and can be run with make <target> or directly as ./<script>.sh.
| Target | Script | Purpose |
|---|---|---|
unpack | ./unpack.sh | Download and unpack original Denon firmware |
clone-buildroot | ./clone-buildroot.sh | Clone Buildroot 2021.02.10 into buildroot/ |
compile-buildroot | ./compile-buildroot.sh | Build toolchain + all packages (requires sudo for loopback mount) |
configure-buildroot | ./configure-buildroot.sh | Apply primemixxx defconfig to Buildroot |
clean-buildroot-target | ./clean-buildroot-target.sh | Remove Buildroot’s target/ tree to force a clean reinstall of all packages |
pack | ./pack.sh | Pack modified rootfs images into a firmware .dtb |
dist | ./dist.sh | Produce a distributable SD card tarball |
generate-updater-win | ./generate-updater-win.sh | Build original Windows updater tool |
generate-new-updater-win | ./generate-new-updater-win.sh | Build cross-platform Go updater (requires Go 1.22+) |
generate-package-ignorelist | ./generate-package-ignorelist.sh | Regenerate the package ignore list for firmware packing |
unpack-updater | ./unpack-updater.sh | Unpack a firmware .img using the updater tool |
Build Pipeline
Unpack original firmware
Download and unpack the original Denon firmware. This extracts the device tree source (
.dts) and compressed rootfs images that primemixxx modifies.Clone Buildroot
Clone the exact Buildroot version used by this project. Using a different version will cause toolchain or package incompatibilities.
Build toolchain and packages
Run the full Buildroot compilation. This compiles the ARMv7 cross-toolchain, MIXXX, Qt 5.15.8, all audio libraries, and every other package in the defconfig. Plan for 1–4 hours on first run.
compile-buildroot.sh requires sudo to set up loopback mounts when packing the rootfs image. The script only escalates for that specific step — the rest runs as your normal user.MIXXX Bundle Pipeline
After Buildroot finishes, collect the MIXXX binary and all its runtime dependencies into amixxx-bundle/ directory that can be deployed to the device’s SD card.
Collect MIXXX bundle
Gather MIXXX, Qt 5.15.8 plugins, MIDI mappings, ALSA libraries, audio codecs, and all other shared libraries from the Buildroot output directory. The script uses The script also fixes the Mali GPU driver at this step: Buildroot ships the r0p0 DDK, but the device has hardware r1p0. The collected bundle replaces
readelf to recursively resolve all NEEDED entries and copies the result to mixxx-bundle/.libEGL.so and libGLESv2.so with symlinks to the device’s native /usr/lib/libmali.so.14.0.Create a Distributable SD Card Bundle
To produce theprime-series-sdcard-*.tar.gz release archive for end users:
Fast Iteration
When iterating on launcher scripts, MIDI mappings, or settings without changing the MIXXX binary, skip the full bundle collection step:dev-deploy-to-device.sh run.
PortAudio NDEBUG Fix
If MIXXX crashes with Without this, PortAudio’s internal
SIGABRT during ALSA device enumeration at startup, the PortAudio build is missing the -DNDEBUG flag. The fix is already applied in patches/portaudio-ndebug.mk via a post-configure hook that patches the generated Makefile after ./configure runs. Copy this file to buildroot/2021.02.10/package/portaudio/portaudio.mk to apply it:assert(maxChans > 0) fires during ALSA device enumeration on the JP11/AKM DAC and aborts the process before any audio device is opened. After replacing the .mk file, rebuild PortAudio with make portaudio-rebuild inside the Buildroot tree.