CDJ-900NXS Mods
Documentation

Using the mods

Everything you need to build the update, put it on your CDJ-900NXS and use each mod. The player must run the official firmware 1.31; the patcher only accepts that update.

Install

  1. Get the official C900NXS.UPD for firmware 1.31 from Pioneer DJ. The patcher checks its SHA-256 and refuses any other file.
  2. Run the patcher with Python 3. Tick the mods with the arrow keys and Space, build with Enter.
    $ python cdj900nxs_patcher.py C900NXS.UPD
    Ticking a mod also ticks what it needs (utility needs code, hotcuekeys needs cuecolours); unticking one unticks what depends on it (beatjump needs hotcuekeys). credit (ticked at the start) makes the boot screen say Pionope Mods by Givou where it said Ver 1.31; untick it to keep the stock text.
  3. Read the disclaimer and type yes to accept it. Nothing is built without it.
  4. The new file is written to out/<date>-<mods>/C900NXS.UPD, with a report.txt listing every check.
  5. Copy C900NXS.UPD to the root of a FAT32 USB stick and run the update from the player as you would for an official update.
What the patcher guarantees. Only the main application is replaced. The boot loader and recovery loader (flash 0x0–0x3FFFF), the S-record header and entry record, and the DRIV and PANL sections are copied from the original byte for byte and checked again on the finished file. The file is labelled 1.32 so that the player does not skip it as the version it already has; the player still reports 1.31.

Without a terminal that can read single keys, name the mods instead and accept the disclaimer with --accept:

$ python cdj900nxs_patcher.py C900NXS.UPD --mods code,utility,overview,cuecolours,hotcuekeys --accept

Back to stock

Build the original application, relabelled so the player accepts it, and update as above:

$ python cdj900nxs_patcher.py C900NXS.UPD --stock

Keep this file on a stick before you try any mod.

code arnoldasr

Three display changes tested together as one build: the detail waveform in RGB colours, the BPM shown with two decimals (stacked beside the tempo) and a two-line phase meter.

RGB detail waveform
RGB detail waveform.

utility arnoldasr

UTILITY › SLIP FLASHING becomes PHASE METER; its value chooses which phase meter is shown. Needs code.

UTILITY with PHASE METER
UTILITY › PHASE METER.

overview arnoldasr

The overview waveform's colour table becomes a red-to-white gradient. Data only, no code.

cuecolours ours

When a track is loaded the player asks its database for the cues. This mod also asks for the extended cue list (the one newer players read from rekordbox's export), which carries the colours and the hot cues.

Overview with coloured memory cues and hot cues A to F
Coloured memory cues and hot cues A–F on the overview.

hotcuekeys ours

The CDJ-900NXS has no hot cue pads. This mod lends it three: the top three BEAT DIVIDE keys left of the jog. It needs cuecolours, which reads the hot cues from your USB.

UTILITY with HOT CUE KEYS
UTILITY › HOT CUE KEYS, the new last item.

The hot key mode

  1. Open UTILITY (hold MENU) and set HOT CUE KEYS to ON. The player remembers it.
  2. Press QUANTIZE briefly: the hot key mode switches on, and a red HOT KEYS box appears beside the QUANTIZE label. Press briefly again to switch it off (the box turns grey).
  3. Hold QUANTIZE for about a second to switch quantize as usual.
HOT KEYS box beside QUANTIZE
Hot key mode on: the red HOT KEYS box.

In the mode the BEAT DIVIDE keys are hot cues, top to bottom:

A
3/4
B
1/3
C
1/2
–
1/4
–
1/8

1/4 and 1/8 do nothing in the mode and stay dark: the player has three hot cue buffers, and A–C keep them, so each of the three starts at once.

With the mode off, or HOT CUE KEYS set to OFF, the keys do what they always did.

Play a hot cue

Press the key briefly. The deck jumps to the hot cue and plays — also when it was paused.

Gate

Press the key and keep holding it. The deck jumps and starts playing at once, exactly as with a short press; nothing waits. When you let go:

Set a hot cue

On a key without a hot cue (LED off):

  1. Pause the deck at the place you want.
  2. Hold the key for 0.8 s. The hot cue is set there in green, its LED blinks twice and then stays dim, and the box appears on the waveforms.

Keys that already have a hot cue are not overwritten — delete the old one first.

Delete a hot cue

  1. Hold DELETE (beside MEMORY under the screen).
  2. While holding it, press the hot cue key. Its LED blinks twice and goes off, and the box disappears from the waveforms. You can delete several keys while holding DELETE.
  3. Let go of DELETE.
While DELETE is held in the hot key mode, the deck does not see it, so no memory cue is lost. If you let go of DELETE without pressing a hot cue key, the press is passed on and DELETE deletes the called memory cue as always.

The LEDs

In the hot key mode the LEDs of 3/4, 1/3 and 1/2 show hot cues A–C; 1/4 and 1/8 are off (SLIP no longer changes them):

off — no hot cue dim — hot cue there two bright blinks — pressed, set or deleted

Good to know

beatjump emulator only

With UTILITY › BEAT JUMP set to 1, 2, 4 or 8 (the item replaces SCREEN SAVER; the screen saver stays on), TRACK SEARCH ⏮ ⏭ jumps that many beats back or forward along the beat grid, keeping the position within the beat. OFF restores TRACK SEARCH.

Rebuilt: the first version jumped off the grid on a player and, after quick presses, reported a corrupted file. The new one has only run in the emulator so far; please report how it behaves on a player.

ledsaver emulator only

UTILITY › LED ANIMATION (the last item) is ON from the first start; set it to OFF to switch it off (the player keeps the choice). When the player's own screen saver dims the display (5 minutes without a track loaded, or 100 minutes paused or at the cue), the LEDs play a loop of about three seconds:

Any key ends it, as it ends the screen saver. The keys without levels (CUE, PLAY …) can only switch on and off; the rings too.

Test status

ModByStatus
codearnoldasrran on a player
utilityarnoldasrran on a player
overviewarnoldasrran on a player
cuecoloursoursran on a player
hotcuekeysourspartly tested mode, HOT KEYS box and LEDs on a player; the hot cue buffers (A–C at once), gate, set and delete in the emulator
beatjumpoursemulator only rebuilt on the hot cue engine
ledsaveroursemulator only LED map from the LED tests on a player
creditoursemulator only boot screen text (ticked at the start, can be unticked)

FAQ

Does this touch the boot loader?

No. The patcher copies the boot loader and recovery loader from the official file byte for byte and checks them again before writing. Only the main application changes.

Can I go back?

Yes, build --stock and run the update. Keep that file ready before flashing mods.

Do I need rekordbox?

Cue colours and hot cues come from a USB stick exported with rekordbox. Without them the mods show what the stock player shows.

Why is the version still 1.31?

The update file says 1.32 so the player installs it; the application inside still reports 1.31 (in UTILITY and on the LINK screen). Only the boot screen says Pionope Mods by Givou instead of Ver 1.31.