Media Slot Queries

In order to correctly ask for the root menu for a media slot, you need to know what kind of media (rekordbox or unanalyzed) is present in the slot so you can send the proper Tr value in your menu requests. You might also want to show information about the entire media collection, such as its name, size, date created, number of tracks, number of playlists, and free space. All of these things can be determined by sending a packet like the one shown below to port 50002 on the player that holds the slot, with appropriate values for D (the device number you are posing as), Dr (the device owning the slot), and Sr (the slot you’re interested in). These bytes have the same values used in CDJ status packets.

0123456789abcdef5173707431576d4a4f4c050010Device Name (padded with 00)012000DlenrIP address000000Dr000000Sr
Media query packet.

Since this packet uses subtype 00, the length sent in lenr has the value 000c, reflecting the twelve bytes which follow it.

The player will respond by sending a packet like the one shown below to port 50002 on the IP address specified in your query packet (so you want to supply your own address to get the response). This contains the information about the media mounted in the slot.

0123456789abcdef5173707431576d4a4f4c060010Device Name (padded with 00)012000Dlenr000000Dr000000Sr30Media Name (UTF-16, padded with 0000)40506070Creation Date (UTF-16, padded with 0000)8090unknown UTF-16 text (sometimes “1000”)a0trackscol00Trset0000plistsb0Total spaceFree space
Media response packet.

Since this packet uses subtype 00, the length sent in lenr has the value 009c, reflecting the number of bytes which follow it.

The name of the media stick (as assigned in rekordbox) can be found as a UTF-16 encoded string starting at byte 2c, and up to 40 bytes long, padding with trailing null characters. This is followed by a textual representation of the creation date of the media database, encoded in the same way, starting at byte 6c, up to 28 bytes long. (Neither of these fields have meaningful values for “media” served by rekordbox mobile from its collection on a phone.)

The number of rekordbox tracks present in the database is found in bytes a6 and a7 (this will be zero if there is no rekordbox database present). The value col at byte a8 tells the player what color it should tint its user interface when it has loaded tracks from the media:

Table 1. Media UI color values.
Value Meaning

00

Default

01

Pink

02

Red

03

Orange

04

Yellow

05

Green

06

Aqua

07

Blue

08

Purple

Tr at byte aa reports the type of tracks available, with the same values used in CDJ status packets. In other words, it will have the value 01 when a rekordbox database is present, and 02 otherwise; this is the same value that must be sent as Tr in order to make a successful request for the root menu associated with this media. The value set at byte ab indicates whether there is a “My Settings” file present on the media. If it has a non-zero value, when the user links to that media (or navigates to its root menu), the player will pop up an alert saying to press the Menu button to load My Settings (which allows the player configuration to be quickly restored to the DJ’s preferred state).

The actual settings are found in the /PIONEER/ folder at the root of the mounted media, in the files MYSETTING.DAT, MYSETTING2.DAT, and DEVSETTING.DAT. The DJ’s Kuvo profile information is in the same folder, in the file djprofile.nxs. The details of these files have not yet been explored.

The number of rekordbox playlists present on the media (also zero if there is no rekordbox database) is found at bytes ae and af.

Finally, there are two eight-byte numbers at the end of the packet. The value at bytes b0 through b7 is the total capacity of the media (in bytes), and the value at bytes b8 through bf is the number of unused bytes left on it.