timlebrun / arduino-cdj

Pioneer CDJ (800 Mk2) reverse engineering project

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CDJ800 (MK2) HID Arduino Code

This is a repository containing all reverse engineering data i can find about the internal SPI bus of my CDJ800 Mk2s.
My goal is to replace the MAIN board with a microcontroller and enable them to control a software via MIDI of USB-HID.

As of now, I won't have a working CDJ anymore to continue working on this...
I fried the one I had on hand while rerouting the debug wiring Feel free to fork this and/or add to it

DISPLAY → MAIN

Structure

0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 0x11 0x12 0x13
0x01 0x10 ? ? VNLS PITH PITL JGPH JGPL JGAH JGAL JTCH BTN1 BTN2 BTN3 BTN4 BTN5

All the BTN registers are ON when pushed and OFF when not.

0x03 VNLS

Single uint_8
Vinyl Speed Adjust rotary knob.

0x04 PITH & 0x05 PITL - Pitch

16 bits Integer
PITH (pitch high byte) and PITL (pitch low byte)
Pitch fader value

0x08 JGPH & 0x09 JGPL - Jog Wheel Position

16 bits Integer
JGPH (jog position high byte) and JGPL (jog position low byte)
Jog Wheel relative position value (allows to determine the way of rotation)

0x0a JGAH & 0x0b JGAL - Jog Wheel Acceleration

16 bits Integer
JGAH (jog acceleration high byte) and JGAL (jog acceleration low byte)
Jog Wheel acceleration (deceleration actually, stands by at 0xFFFF)

0x0e BTN1

  • 0x10 - Loop In
  • 0x20 - Reverse
  • 0x40 - Loop Out
  • 0x80 - Cue

0x0f BTN2

  • 0x01 - Play
  • 0x02 - Loop Exit

0x10 BTN3

  • 0x01 - Previous Track
  • 0x02 - Next Track
  • 0x04 - Search Forward
  • 0x08 - Search Backward

0x11 BTN4

  • 0x01 - Previous Folder
  • 0x02 - Next Folder
  • 0x04 - Quick Return (not tested)
  • 0x08 - Eject
  • 0x10 - Jog Mode
  • 0x20 - Tempo Wide / 10%
  • 0x40 - Master Tempo

0x12 BTN5

  • 0x01 - Call Next Cue
  • 0x02 - Call Previous Cue
  • 0x04 - Memory
  • 0x08 - Delete
  • 0x10 - Text Mode
  • 0x20 - Time Mode

MAIN → DISPLAY

This one still has to be reverse engineered. But this seems to be a complete frame, with no CD in, on starup.

A few stuff that caught my eye :

  • The last column is a CRC (same as documented for the CDJ1000).
  • The 18th (before last) seems to describe the jog wheel indacator state (same as documented for the CDJ1000);
  • Bytes 0x0b, 0x0b & 0x0d of package 0x20 seem related to the pitch (BPM values maybe ?)
  • 0xd0 or 0x47 seems to be related to the vinyl mode
Counter 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 Jog CRC
0x00 0x50 0x11 0x50 0x00 0x01 0x04 0x10 0x10 0x15 0x00 0x00 0x00 0x58 0x00 0x00 0x00 0x00 0x43
0x10 0xf0 0x2b 0x81 0x04 0xb8 0x40 0x08 0xa1 0x3f 0x00 0xb3 0x00 0x00 0x00 0x00 0x00 0x00 0x33
0x20 0xa8 0x20 0x88 0x80 0x02 0x0a 0x28 0x88 0x0a 0x00 0xee 0xb6 0xd6 0x00 0x00 0x00 0x00 0x10
0x30 0xa6 0x36 0xf0 0xc1 0x13 0x0f 0x3d 0x70 0x6a 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xc6
0x40 0x02 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x02
0x50 0x00 0x00 0x00 0x00 0x04 0x00 0x00 0x00 0x00 0x00 0x00 0xd0 0x47 0x00 0x00 0x00 0x00 0x1b

License

I guess its complicated since its actually proprietary stuff ?
If u want to use this data, I don't mind, just please credit me a little.
And keep me updated i'm interested about what can be done with it !

About

Pioneer CDJ (800 Mk2) reverse engineering project


Languages

Language:C++ 91.5%Language:C 8.5%