From 1957eef6ef2805822d07479e7874a5e15b4748a6 Mon Sep 17 00:00:00 2001 From: felucia Date: Tue, 15 Sep 2026 00:16:42 +0200 Subject: [PATCH 1/3] Add CDJ3000 device IDs --- modules/ROOT/pages/handshake.adoc | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/ROOT/pages/handshake.adoc b/modules/ROOT/pages/handshake.adoc index dd16fd6..dd8d9f3 100644 --- a/modules/ROOT/pages/handshake.adoc +++ b/modules/ROOT/pages/handshake.adoc @@ -325,6 +325,7 @@ https://github.com/Swiftb0y/CDJHidProtocol/[this projects github repository] | *DJM450* | `0x08EF3F2F1E7A9017F6AF` | -- | `0x99D555432C70537A6F02` | -- | -- | -- | -- | -- | *DJM250MK2* | `0xD2F58B612C6206819139` | -- | `0x59B54BFEE44A5AC8E4C5` | -- | -- | -- | -- | -- | *DJM750MK2* | `0x866E33BD04852E71ED21` | -- | `0x490a44496383029BF371` | -- | -- | -- | -- | -- +| *CDJ3000* | `0x0B540B224A0AD0F73177` | `0x390EAC84A745F29D7F74` | `0x1B1F3761AF3CE074E230` | -- | -- | -- | -- | -- | *DJMV10* | `0x3C83DB259C76FE8DB2AB` | `0x1D3EAC55C613D297623D` | `0x70014D05BEF2E4DE60D6` | -- | -- | -- | -- | -- | *XDJXZ* | Not supported | `0x2D99858D0A5A913D4EBD` | Captures lead me to believe that there actually is no handshake taking place in this configuration| -- | -- | -- | -- | -- From 598447c6a96117ea0a984b74c8cae57e47c171b2 Mon Sep 17 00:00:00 2001 From: felucia Date: Tue, 15 Sep 2026 00:57:14 +0200 Subject: [PATCH 2/3] Add extrapolated PioneerDJ device IDs from rekordbox binary analysis --- modules/ROOT/pages/handshake.adoc | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/modules/ROOT/pages/handshake.adoc b/modules/ROOT/pages/handshake.adoc index dd8d9f3..119f502 100644 --- a/modules/ROOT/pages/handshake.adoc +++ b/modules/ROOT/pages/handshake.adoc @@ -319,9 +319,9 @@ https://github.com/Swiftb0y/CDJHidProtocol/[this projects github repository] | *CDJ2000NXS2* | `0x02F2F4510ED30A2C1042` | `0XC0BD940FB700BB8FC75B` | `0x02F2F4510ED30A2C1042` | -- | -- | -- | -- | -- | *DJM900NXS2* | `0x43F4CDEE2C07C9590742` | `0xD557CE8F5EF07BC27E98` | `0xC03251EE5DF69245025B` | -- | -- | -- | -- | -- -| *CDJTOUR1* | `0x768DCEDA0DD7F010434E` | -- | -- | -- | -- | -- | -- | -- -| *DJMTOUR1* | `0x502876738F3DC7CF1DA7` | -- | -- | -- | -- | -- | -- | -- -| *XDJ1000MK2* | `0xABA778D3B506E22EBBAE` | -- | -- | -- | -- | -- | -- | -- +| *CDJTOUR1* | `0x768DCEDA0DD7F010434E` | -- | `0x768DCEDA0DD7F010434E`^1^ | -- | -- | -- | -- | -- +| *DJMTOUR1* | `0x502876738F3DC7CF1DA7` | -- | `0xB28E86FA4962F5A97893`^1^ | -- | -- | -- | -- | -- +| *XDJ1000MK2* | `0xABA778D3B506E22EBBAE` | -- | `0xABA778D3B506E22EBBAE`^1^ | -- | -- | -- | -- | -- | *DJM450* | `0x08EF3F2F1E7A9017F6AF` | -- | `0x99D555432C70537A6F02` | -- | -- | -- | -- | -- | *DJM250MK2* | `0xD2F58B612C6206819139` | -- | `0x59B54BFEE44A5AC8E4C5` | -- | -- | -- | -- | -- | *DJM750MK2* | `0x866E33BD04852E71ED21` | -- | `0x490a44496383029BF371` | -- | -- | -- | -- | -- @@ -329,11 +329,31 @@ https://github.com/Swiftb0y/CDJHidProtocol/[this projects github repository] | *DJMV10* | `0x3C83DB259C76FE8DB2AB` | `0x1D3EAC55C613D297623D` | `0x70014D05BEF2E4DE60D6` | -- | -- | -- | -- | -- | *XDJXZ* | Not supported | `0x2D99858D0A5A913D4EBD` | Captures lead me to believe that there actually is no handshake taking place in this configuration| -- | -- | -- | -- | -- +| *DDJ-RZ* | -- | -- | `0x644F87919E74AF27397B`^1^ | -- | -- | -- | -- | -- +| *DDJ-RZX* | -- | -- | `0xF0A346BDE8D8E18401BC`^1^ | -- | -- | -- | -- | -- +| *XDJ-RX* | -- | -- | `0xB17A383E50EAE1091BAB`^1^ | -- | -- | -- | -- | -- +| *XDJ-RX2* | -- | -- | `0x58182BF69B5F279246FF`^1^ | -- | -- | -- | -- | -- +| *XDJ-RR* | -- | -- | `0x969AF20C918F630C7D41`^1^ | -- | -- | -- | -- | -- +| *DDJ-RB* | -- | -- | `0x4458F9B509AE9D5BE516`^1^ | -- | -- | -- | -- | -- +| *DDJ-RR* | -- | -- | `0x0A1DC98D1438279D0F7F`^1^ | -- | -- | -- | -- | -- +| *DDJ-WeGO4* | -- | -- | `0x6D63D5F86510C71F6F8A`^1^ | -- | -- | -- | -- | -- +| *DDJ-1000* | -- | -- | `0x87A08EEAC09034760B90`^1^ | -- | -- | -- | -- | -- +| *DDJ-800* | -- | -- | `0xEA5580A6D0D9E47F2053`^1^ | -- | -- | -- | -- | -- +| *DDJ-400* | -- | -- | `0x074A26AA2EBE92E3EF95`^1^ | -- | -- | -- | -- | -- +| *DDJ-200* | -- | -- | `0x27AA50C3BC8996A1CB97`^1^ | -- | -- | -- | -- | -- +| *DDJ-XP1* | -- | -- | `0xE176C4544F0A15BC0A90`^1^ | -- | -- | -- | -- | -- +| *DDJ-XP2* | -- | -- | `0x2DB2BFFA0433A5D497B3`^1^ | -- | -- | -- | -- | -- +| *RBDMX1* | -- | -- | `0x9302D5E679ED0A9EED73`^1^ | -- | -- | -- | -- | -- +| *INTERFACE2* | -- | -- | `0x0A85D9F952DC6DB0A50A`^1^ | -- | -- | -- | -- | -- |=== NOTE: From my experiments, it looks like Atomix VirtualDJ actually poses as Rekordbox instead of using its own identifiers. +NOTE: 1 - Device ID extrapolated from the Rekordbox binary, not individually validated using real hardware. + +NOTE: The CDJ-3000X and CDJ-15000X don't appear to require the handshake. + == Keepalive Once a successful handshake occurred, the host has to keep the connection alive From a11a87fa79d1527a6bd9a67197cc32fac3c064da Mon Sep 17 00:00:00 2001 From: felucia Date: Tue, 15 Sep 2026 21:50:37 +0200 Subject: [PATCH 3/3] Add empty CDJ-3000X/CDJ-1500X rows and thank you note --- modules/ROOT/pages/handshake.adoc | 4 ++++ modules/ROOT/pages/startup.adoc | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/modules/ROOT/pages/handshake.adoc b/modules/ROOT/pages/handshake.adoc index dd8d9f3..c4ed887 100644 --- a/modules/ROOT/pages/handshake.adoc +++ b/modules/ROOT/pages/handshake.adoc @@ -329,11 +329,15 @@ https://github.com/Swiftb0y/CDJHidProtocol/[this projects github repository] | *DJMV10* | `0x3C83DB259C76FE8DB2AB` | `0x1D3EAC55C613D297623D` | `0x70014D05BEF2E4DE60D6` | -- | -- | -- | -- | -- | *XDJXZ* | Not supported | `0x2D99858D0A5A913D4EBD` | Captures lead me to believe that there actually is no handshake taking place in this configuration| -- | -- | -- | -- | -- +| *CDJ3000X* | -- | -- | -- | -- | -- | -- | -- | -- +| *CDJ1500X* | -- | -- | -- | -- | -- | -- | -- | -- |=== NOTE: From my experiments, it looks like Atomix VirtualDJ actually poses as Rekordbox instead of using its own identifiers. +NOTE: The CDJ-3000X and CDJ-1500X don't appear to require the handshake. + == Keepalive Once a successful handshake occurred, the host has to keep the connection alive diff --git a/modules/ROOT/pages/startup.adoc b/modules/ROOT/pages/startup.adoc index f0313eb..8d07439 100644 --- a/modules/ROOT/pages/startup.adoc +++ b/modules/ROOT/pages/startup.adoc @@ -119,4 +119,5 @@ vendor Device ID for the DJM-900NXS2] Also thanks to "finn" for providing me their DJM-450 Rekordbox Device ID via PM. Thank you to https://github.com/musicmindmachine[@musicmindmachine] for https://github.com/Swiftb0y/CDJHidProtocol/issues/9[finding an issue in the -handshake procedure] and correcting me. +handshake procedure] and correcting me. Thank you to https://github.com/felucia2[felucia] +for contributing https://github.com/Swiftb0y/CDJHidProtocol/pull/11[CDJ-3000] and other Device IDs.