Wireshark dissector for Pro DJ Link protocol
3
fork

Configure Feed

Select the types of activity you want to include in your feed.

Lua 98.8%
Shell 1.2%
58 3 0

Clone this repository

https://tangled.org/piss.beauty/djlink-dissector https://tangled.org/did:plc:7mnpet2pvof2llhpcwattscf/djlink-dissector
git@tangled.org:piss.beauty/djlink-dissector git@tangled.org:did:plc:7mnpet2pvof2llhpcwattscf/djlink-dissector

For self-hosted knots, clone URLs may differ based on your setup.

Download tar.gz
README.md

Pro DJ Link Dissector#

A thorough Wireshark dissector for the Pioneer DJ / AlphaTheta "Pro DJ Link" sync & communications protocol

Installation#

if you're on MacOS, easiest is to run copy_plugin.sh.

otherwise, copy the Lua file into your Wireshark's local plugins folder. look in "About Wireshark -> Folders" to find this i'm pretty sure.

Usage Tips#

your network#

mirroring switch#

You'll want a switch that offers traffic mirroring to get the most out of this, as you need it to see the traffic sent between players. use the switch's management interface to mirror traffic on all but one ethernet port to the last port, and connect your computer to that last port.

bridge network backup#

If you lack a mirroring switch, you can see traffic sent directly to/from a single XDJ/CDJ by connecting to the bridge network inside of it, via the usb port on the player. This port is usb-b, so you are likely to need to adapter to a more common usb format. You can also see broadcast packets on the local switch, but can't see other players talking to each other. it's also just more annoying to use in my experience, vs. the mirroring switch.

Display Filters#

use the following strings as Wireshark display filters to narrow down traffic, which can be noisy with multiple players.

pdjl

All Relevant Traffic#

this filter is highly recommended, as it shows everything in a reasonbly clean view. can be noisy, but provides the full picture.

we add the nfs filter because players share files betwen each other using NFSv2, which wireshark has a built-in dissector for.

pdjl || nfs
pdjl && udp 
(pdjl && tcp) || (tcp and not (tcp.analysis.retransmission or tcp.analysis.fast_retransmission or tcp.analysis.spurious_retransmission or tcp.analysis.duplicate_ack or tcp.analysis.keep_alive or tcp.analysis.keep_alive_ack or !tcp.ack.nonzero))

CDJ/XDJ status packets#

pdjl && len(udp.payload) == 292

CDJ/XDJ discovery / keep-alive packet#

the ip filter shuold always work, but if your network's broadcast address is diff, you can change or remove it.

pdjl && len(udp.payload) == 54 && ip.dst_host contains ".255.255"

Status#

Currently Supported#

  • Channel Claims
  • CDJ/XDJ Status
  • Discovery broadcast packets
  • Menu Requests
  • Analysis tag requests
  • QueryContext setup

Missing#

  • Anything to do with mixers

Credits#

Thank you to DeepSymmetry for all the protocol-level work and documentation.