Repository navigation
Releases
v0.4.1
Added
- [devtools] Developer Mode (#39): a control API and
cdj3k-emu ctl,--headless,--ephemeral(a throwaway copy of slot N as slot N+4) and a read-only debug window. Reference:docs/control-api.md
Modified
- [network] On macOS 15, where vmnet refuses bridged mode for the app and isolates host-mode instances from each other, both modes go through a root
socket_vmnetbundled with the app. Starting it asks for the admin password; it stops when no slot uses it (#47) - [emulation] The service-mode combo is held until the app sends its first panel frame, instead of for a fixed 5 s (#38)
Fixed
- [ui] Slow jog turns reached the deck as a still platter: below about 53°/s at JOG ADJUST 0.5 (#42)
- [ui] Hot cue pad brightness did not render correctly
- [ui] The CDJ-3000 nav pod bloom spilled onto the extended screen beside BACK
- [ui] The first rotary or BEAT LOOP turn after a guest restart moved more than one row (#39)
- [emulation] A track on a hot-attached FAT drive whose name had non-ASCII characters failed to open with E-8302
- [emulation] A USB drive's partitions could be read before the drive reported its size (#39)
- [emulation] Shutdown and quit, slot settings that could lose a slot's identity, and smaller fixes in the guest, firmware, update and UI code
- [build] QEMU's
meson installfailed on Linux hosts (missingvhost-user-gpu)
Downloads
| Host | Package |
|---|---|
| macOS 15 or later | universal |
| Windows 10 2004 or later | arm64 · x64 |
| Debian, Ubuntu | aarch64 · x86_64 |
| Fedora, RHEL, openSUSE | aarch64 · x86_64 |
| Any Linux distribution | aarch64 · x86_64 |
Pull requests
What's Changed
- fix: shutdown, quit and slot settings fixes after 0.4.0 by @nsaintot in #36
- Hold the service-mode combo until the app's first MOSI frame by @nsaintot in #38
- feat: developer tools, ephemeral slots and E2E by @nsaintot in #39
- fix(panel): show the hot cue pads' drive level by @nsaintot in #41
- fix(ui): send slow jog turns to the deck by @nsaintot in #42
- fix(ui): keep CDJ-3000 nav pod bloom off the extended screen by @nsaintot in #43
- test(streams): fix flaky jog_shm test on macOS CI by @nsaintot in #44
- fix(qemu): build vhost-user-gpu so meson install succeeds on Linux by @erhan- in #45
- fix(initramfs): mount hot-attached FAT drives with utf8 by @9c5s in #48
- fix(net): reach vmnet through a root socket_vmnet on macOS 15 (#47) by @nsaintot in #49
New Contributors
Full Changelog: v0.4.0...v0.4.1
v0.4.0
Added
- [emulation] CDJ-1500X support (#26): its own slate, with a tilt view of the front panel and USB slot
- [mods] Deck mods (#31): per-slot mods in Manage Emulation › Manage Mods. Add an archive or a folder, or Add from URL…; reorder, switch each mod on or off, and read each mod's status and journal after a boot. Emulation › Enable Mods switches them all. Format:
docs/mods.md - [updates] Auto-updater (#16): checks at launch, every 6 hours and from Check for Update…; offers Skip This Version, Remind Me Later, and automatic download and install
- macOS: Sparkle installs the new
.dmgat restart - Windows and AppImage: the update downloads while the decks play and installs at restart, or at quit with Later
.deband.rpm: the package is downloaded and verified to the downloads folder; the app shows theaptordnfcommand that installs it- The update feeds are signed with Ed25519
- macOS: Sparkle installs the new
- [build] CI runs a sentrux quality gate (#33)
Modified
- [ui] Delete, Restart and install on a slot that another window runs act at once and show that window's reply, also when it is minimized (#32)
- [packaging] The
.rpmrequires library sonames instead of Fedora package names, so it installs on openSUSE (#27) - [build] egui 0.36; building from source needs Rust 1.95 (#29)
Fixed
- [emulation] The usb mount was lost after a network mode change (#28)
Removed
- [build]
boot.shandunpack-initramfs.sh(#33)
Downloads
| Host | Package |
|---|---|
| macOS 15 or later | universal |
| Windows 10 2004 or later | arm64 · x64 |
| Debian, Ubuntu | aarch64 · x86_64 |
| Fedora, RHEL, openSUSE | aarch64 · x86_64 |
| Any Linux distribution | aarch64 · x86_64 |
Pull requests
What's Changed
- ci: release naming stability by @nsaintot in #24
- feat: auto-updater (#16) by @nsaintot in #25
- feat: CDJ-1500X support by @nsaintot in #26
- fix(rpm): depend on sonames, not distro package names by @nsaintot in #27
- fix: CDJ-3000 networking, jog stutter on local macOS builds, USB after network change by @nsaintot in #28
- build: egui/eframe 0.29 → 0.36, Rust 1.99.0 (MSRV 1.95) by @nsaintot in #29
- feat: deck mods by @nsaintot in #31
- feat: per-window socket instead of request files by @nsaintot in #32
- refactor: sentrux quality gate, structural sweep and style guide by @nsaintot in #33
- fix(streams): read the LCD mappings through atomic loads by @nsaintot in #34
- ci: release notes from the tag message by @nsaintot in #35
Full Changelog: v0.3.0...v0.4.0
v0.3.0
What's Changed
Added
- [platform] Windows host (#17), x64 and arm64 installers
- (sub-bullets unchanged)
- [platform] Linux host (#13), x86_64 and aarch64 as
.deb,.rpmand AppImage- (sub-bullets unchanged)
- [platform] Intel Macs (#21): one universal app; Intel runs under TCG, flagged by a TCG menu
- [emulation] Rekorbox LINK support (#11)
- [ui] Root SSH option in the setup window, for development purpose
- [packaging]
SHA256SUMS.txtwith every release; releases are built and smoke-tested by CI (#22, #23)
Modified
- [platform] macOS 15.0 or newer is required (was 13)
- [firmware] Firmware provisioning runs inside a throwaway guest; the host needs no shell tools
- [firmware] The CDJ-3000X cabinet now opens noticeably faster: ~4 s instead of ~34 s under TCG; an already-installed slot needs Reinstall to get this improvement
- [emulation] Software emulation keeps up: the CDJ-3000X plays at 1x under TCG and the X server thread is no longer starved
- [emulation] USB attach and PC Link sent during boot are no longer lost; the deck's USB menu no longer stays grayed after a firmware install
- [emulation] Fewer false cautions at boot: no E-8307 for the deck's own PC Link gadget, no E-7026 WLAN module error (#12)
- [audio] The CDJ-3000X no longer plays silence under TCG
- [network] Network bridges are now cleaned after use (Linux, macOS TAP)
- [ui] The boot shade clears on the deck's first panel frame instead of x paints of the screen (#12)
- [ui] Jog Haptics shows only when a Force Touch trackpad is present; Instances no longer marks a killed slot as running
- [packaging] Release files are named
CDJ3K-Emulator-<version>-<os>-<arch>
Removed
- [packaging] The unused copy of the firmware's kernel modules in the app bundle
- [build]
bundle.sh, replaced bypackaging/macos/{stage,build}.sh
Downloads
| Host | Package |
|---|---|
| macOS 13+, Apple silicon | CDJ3K-Emulator-0.3.0.dmg |
| Debian / Ubuntu, x86_64 · aarch64 | CDJ3K-Emulator-0.3.0-linux-x86_64.deb · CDJ3K-Emulator-0.3.0-linux-aarch64.deb |
| Fedora / RHEL, x86_64 · aarch64 | CDJ3K-Emulator-0.3.0-linux-x86_64.rpm · CDJ3K-Emulator-0.3.0-linux-aarch64.rpm |
| Any distribution, x86_64 · aarch64 | CDJ3K-Emulator-0.3.0-linux-x86_64.AppImage · CDJ3K-Emulator-0.3.0-linux-aarch64.AppImage |
Full Changelog: v0.2.0...v0.3.0
v0.3.0-rc1
First release candidate with Linux support, beside macOS. Built from #13 at 1a4f47a.
Downloads
| Host | Package |
|---|---|
| macOS 13+, Apple silicon | CDJ3K-Emulator-0.3.0-rc1.dmg (notarized) |
| Debian / Ubuntu, x86_64 · aarch64 | cdj3k-emu_0.3.0-rc1_amd64.deb · cdj3k-emu_0.3.0-rc1_arm64.deb |
| Fedora / RHEL, x86_64 · aarch64 | cdj3k-emu-0.3.0-rc1-1.x86_64.rpm · cdj3k-emu-0.3.0-rc1-1.aarch64.rpm |
| Any distribution, x86_64 · aarch64 | CDJ3K-Emulator-0.3.0-rc1-x86_64.AppImage · CDJ3K-Emulator-0.3.0-rc1-aarch64.AppImage |
Checksums are in SHA256SUMS. The Linux packages need glibc 2.35 or newer (Ubuntu 22.04+, Debian 12+, Fedora 36+) and install to /opt/cdj3k-emu.
Linux
- aarch64 with KVM uses hardware acceleration. x86_64 runs under software emulation (TCG): a slower deck and occasional audio pops. A gauge beside the slot pill says so, and why.
- Audio through PipeWire; Pro DJ Link bridged on a NIC (macvtap) or a bridge; USB passthrough through udisks.
- Requires GL 3.3, Wayland or X11, PipeWire, udisks2, and 3 GiB free in
/dev/shm. - KVM and real-time audio on native aarch64 Linux have not been measured yet: reports welcome.
All platforms
- Firmware provisioning runs inside a throwaway guest, so the host needs no shell tools.
- The setup window has a visual Root SSH option for development.
v0.2.0
What's Changed
Added
- [emulation] CDJ-3000X support (#10): runs beside the CDJ-3000. Touchscreen, Device Library Plus, PC Link, and install from the deck's
.UPDor its ISO - [pc-link] PC Link (#8): the deck appears to macOS as USB-HID + USB-MIDI hardware for djay, Traktor, Ableton and other DAWs. The PC Link menu item is the cable; several instances can be plugged in at once
- [ui] Emulation manager/Slot selector: new slates to manage the handle the slots and emulation models
- [ui] LEDs: adjusted the rendering pipeline with false color (real world leds) instead of straight RGB pass
Modified
- [network] No more admin prompt for vmnet networking (#7): QEMU opens vmnet itself, and instances share one segment by UUID. TAP mode still asks for admin
- [firmware] Firmware installs run beside a running emulation and go in at the slot's next start; a failed install no longer empties the slot
- [emulation] Launching a slot another window already owns brings that window forward
- [emulation] The service-mode button combo is held more reliably at boot
-
- [ui] Knob positions and some other settings moved from the app-wide settings to each slot's; an existing install loses them once
- [ui] "Restart MIDI Services" and the raw-disk "Retry" dialogs now act
- [build] Building from source needs Rust 1.88
Fixed
- [network] vmnet no longer hangs on macOS 26+
- [network] TAP mode: the bridge stays up while QEMU starts; the guest no longer ends up with a 169.254 address
Removed
- [mods] In-tree EP122 mods, the EP122 Mods menu item,
--no-modsand the STEMS sidecar. The mods ship separately from cdj3k-mods - [network] The bundled
socket_vmnetdaemon
Full Changelog: v0.1.2...v0.2.0
Installing the .dmg
Mount the DMG and drag the .app to Applications. Notarized and stapled; no quarantine workaround needed.
CDJ3K-Emulator-0.2.0.dmg SHA-256: d2d0d88b2edeb7286b6bc5500ebaef778c19c612623ec88a25e6acf92dcf70af
v0.1.2
What's Changed
Added
- [packaging] Self-contained, notarized app: Homebrew dylibs are bundled, signed with a timestamped Developer ID, notarized and stapled. No Homebrew needed (fixes #2)
- [mods] Emulation > EP122 Mods toggle, off by default and saved per instance;
--no-modsturns it off for one launch - [mods] EP122 mods from cdj3k-mods, linked into the shim, with the STEMS sidecar (
stemd_client) - [emulation]
CDJ3K_EMU_TCG=1selects TCG over HVF
Modified
- [network] Host-only mode is DHCP-less and renamed Host-only (link-local)
- [network] The shared
socket_vmnetdaemon stays up while any instance uses it; quitting the first instance no longer cuts the network for the others - [emulation] Guest RAM raised to 3 GiB (no more oom-killer events)
- [emulation] Raw syscall failures report their own errno instead of EPERM
- [docs] README: dead doc links fixed
Full Changelog: v0.1.1...v0.1.2
Installing the .dmg
Mount the DMG and drag the .app to Applications; no quarantine workaround needed from this release
CDJ3K-Emulator-0.1.2.dmg SHA-256: ff35b434c49b6dee591103b45d5edb5e666b30b6cc927b8389e92535a21f0dba
v0.1.1
What's Changed
Added
- [network] Host-only (link-local) mode: instances join one shared
socket_vmnetsegment, visible from the host (#1)
Modified
- [network] Host-only and bridged modes share the same
socket_vmnetpaths (#1) - [docs] README: duplicate audio and SPI sub-CPU entries removed, stale ALC entry corrected, demo GIFs added
Full Changelog: v0.1.0...v0.1.1
Installing the .dmg
The bundled .dmg is not signed. Gatekeeper will refuse to open it with "CDJ3K Emulator is damaged and can't be opened". After mounting the DMG and dragging the .app to Applications, clear the quarantine bit:
xattr -dr com.apple.quarantine "/Applications/CDJ3K Emulator.app"v0.1.0 — initial public release
First public release of cdj3k-emu
See the README for what's in scope (and what isn't) and the NOTICE for the third-party license inventory.
Getting the firmware
cdj3k-emu does not ship Pioneer firmware. Supply your own .UPD file and decryption key — the in-app Install Firmware wizard handles the rest. Only firmware 3.00 or newer (Rockchip RK3399) is supported; see Firmware compatibility.
Installing the .dmg
The bundled .dmg is not signed. Gatekeeper will refuse to open it with "CDJ3K Emulator is damaged and can't be opened". After mounting the DMG and dragging the .app to Applications, clear the quarantine bit:
xattr -dr com.apple.quarantine "/Applications/CDJ3K Emulator.app"Then launch normally. macOS 13+ on Apple Silicon required; 15+ recommended for in-kernel vGIC. (hardware accelarated)