S-Link CD Player Command Reference

Last Update: February 2, 2003

This command list has been generated by trial and error with S-Link equiped CD changers. Listed are all the commands we have seen generate either a coded response or some activity on the changers themselves. Commands identified as unknown generated gibberish as yet to be deciphered or some other tell-tale response. The descriptions in this list are a best guess since I don't have access to the actual specification. All constants are in hexadecimal unless otherwise noted. I've added notes where it seemed necessary to clarify description, or data fields. The general format of a command is:

[device code] [command code] [extended data field(s)...]

Note: Unless the command expects a disc number, always use the lower device code (i.e. use 0x90, 0x91 or 0x93; not 0x94, 0x95 or 0x96).

If you find a mistake or learn something new, I'd love to hear about it. I'm especially interested in experiments with devices other than CD changers. Happy hunting.

Based on the original version of this document by Jeff and Brian, Peter has been adding revisions based on work with a 400 CD changer, the CDP-CX450 (The cheaper CDP-CX400 is not available in the UK). The document is now a compilation of our experiments and other web sources.

A lot of the commands and responses are only supported on the later players. However, this is not very important if you want to control everything from a computer and display all the information on your monitor.

We would like to build up a list of which models support which commands - if you can help by testing our work, please get in touch. In particular, we would like to know what the 0x22 query capacity command returns for different models. The returned 0x61 message includes a byte of data which may encode what level of features the deck supports.

Code Description Extended Data Format
0x00 Play
Response Playing (0x00)
No Extended Data
0x01 Stop
Response Stopped (0x01)
No Extended Data
0x02 Pause
Response Paused (0x02)
No Extended Data
0x03 Toggle Pause
Note: Response Paused (0x02) if was playing, Playing (0x00) if was paused
No Extended Data
0x08 Next Track No Extended Data
0x09 Previous Track
Note: Send once to go back to the begining of the current track, send again to go back to the start of the previous track
No Extended Data
0x0E Query Disc Memory Information
Note: Get a 0x71 back. This tells you if the disk has a memo set, delete file or CDText.
Unknown
0x0F Query Deck Status
Note: This command can be used to determine if a CD player is in one of its various special modes. (i.e. shuffle, repeat, program play, etc.) Get a 0x70 back.
No Extended Data
0x10 Fast Forward
Note: This appears to be the same as 0x12 on CDP-CX??? decks tested. This command will continue until a play or resume command is sent.
No Extended Data
0x11 Fast Rewind
Note: This appears to be the same as 0x13 on CDP-CX??? decks tested. This command will continue until a play or resume command is sent.
No Extended Data
0x12 Forward
Note: On all decks tested this is an extremely fast advance (60x or so). This command will continue until a play or resume command is sent.
No Extended Data
0x13 Rewind
Note: On all decks tested this an extremely fast rewind (60x or so). This command will continue until a play or resume command is sent.
No Extended Data
0x1F Resume
This resumes normal play after a scan forward or reverse command. You can also send a play command to have this result.
Unknown
0x20 Disable front panel (Remote Mode On)
Note: This doesn't lock out all console buttons, and it isn't even consistent between models. Also this changes the command/response behaviour in unpredictable ways which have proven vexing. I would recommend never using this mode.
No Extended Data
0x21 Enable front panel (Remote Mode Off)
Note: This is the default setting.
No Extended Data
0x22 Query Player Capacity No Extended Data
0x23 Unknown
Note: Generates no response on CDP-CX450 so may not be supported.
Unknown
0x24 Report Start Of Tracks (?)
Note: This command was found by Kamal Mostafa and is documented in both the Nirvis and Jukebox Control files. It does not appear to be supported on the CDP-CX450.

Expected response is the return of 0x09 messages at the start of tracks.

Unknown
0x25 Verbose Mode
Note: The decks produce a lot of traffic in this mode. The most significant change in behaviour is that when a disc is playing the disc, track, minute, and second is reported every second (message 0x51). The minute markers are posted five times. Note that verbose mode seems to get turned off at the start of the next track.
No Extended Data
0x26 Brief Mode
Note: Turns off verbose mode. This is the default mode for all the changers we have encountered.
No Extended Data
0x27 Does disc have CD Text?
Returns 0x47 if it does, or 0x0E if not.
No Extended Data
0x29 Unknown
Note: Generates no response on CDP-CX450 so may not be supported.
Unknown
0x2E Power On No Extended Data
0x2F Power Off No Extended Data
0x30 Unknown Unknown
0x31 Unknown Unknown
0x32 Query Artist/Group Mode
Note: Get a 0x96 back, see also commands 0x74 and 0x96.
No Extended Data
0x40 Query Disc Memo
Note: The first players with a memory for memo description for each disc stored only 13 bytes. This is returned as an 0x40.

More recent changers (e.g. CDP-CX450) have memory for a 20 byte memo description for each disc. To maintain backwards complatability the first 13 bytes are returned in a 0x40, the next 7 bytes of the name will be returned as a 0x80 response.

See also command 0x48.
[disc]
0x41 Query Delete File
Note: Each disc can have a Delete File which marks some tracks as not to be played in normal or random mode. Returns 0x41 unless no delete file has been setup, in which case get 0x11 back.
[disc]
0x42 Query Group Memo
Note: Returns the name of the group as an 0x42 message.
[group]
0x43 Query Group Discs
Note: Which discs are in the specified group. Result is bit-packed set of packets. See responses 0x43, 0x44, 0x45 and 0x78.
[group]
0x44 Query Disc Info
Note: Get disc statistics, length, tracks as a 0x60. If the disc is not loaded get 0x14.
[disc]
0x45 Query Track Info
Note: Get track length on a specific track as a 0x45. If the disc is not loaded get 0x15.
[disc] [track]
0x46 Unknown Unknown
0x47 Unknown Unknown
0x48 Query Enhanced Memo
Note: On older decks this is treated in the same way as the command 0x40.

On the newer decks gets back data as 0x48 and 0x49 rather than 0x40 and 0x80 responses. Also, if the disc has CDText AND the disc is currently loaded, the full CDText is returned by the 0x48 and 0x49 messages. If not, only the memo stored in the player's memory is returned (on my CDP-CX450 this is 20 bytes).

[disc]
0x49 Unknown Unknown
0x4A Convert BCD to Hex / Get Track Title
Note: On older decks this changes a BCD byte to a hexadecimal byte, returned as 0x5D.

On newer decks such as the CDP-CX450 the response on CD Text discs is the track name (0x4A and 0x4B), or a 0x1D if not. If pass argument of 0, returns the title of the current track.
[BCD] / [Track]
0x50 Play Disc, Track
Note: Deck will play disc and track specified. If parameters are omitted 1 is assumed (?).
[disc] [track]
0x51 Cue Disc, Track
Note: Deck will load disc and wait with track paused. If parameters are omitted 1 is assumed (?).
[disc] [track]
0x5E Fade Out
Note: Takes a seconds value from 1-30. If no value is given, or an invalid value is given, it assumes 30 seconds.
[seconds (hex)]
0x5F Fade In
Note: Same as 0x5E except the other direction.
[seconds (hex)]
0x63 Get XXXX Information for Disc
Note: This returns 0x63 with data, or 0x19. We don't know what the data means, possible ideas are some sort of marker on the disc to state its publisher and copy permissions.
[disc]
0x64 Get YYYY Information for current track
If the player is currently playing or pause, will sometimes get back a 0x64 message with 9 bytes of data. Sometimes get back just 0x1A with no data. Usually get back error 0x0F. Presumably 0x0F means the agruments where invalid (or no current disc), and 0x1A means the information is unavailable.
No Extended Data (?)
0x6A Query Deck Model
Note: Ask the deck what model it is. Returns 13 byte ASCII string.
No Extended Data
0x72 Query Deck Contents
Note: Ask the deck which slots have discs. This returns a bit-packed list of which slots contain discs as far as the deck knows. It should be noted that the deck forgets this when the door is opened and will return unreliable results until fully traversed so it can get a look at everything. See also message 0x70, Deck Mode.
No Extended Data
0x74 Set/Clear Group Mode
Sending argument 0x00 will turn Group Mode off. Returns message 0x96. See also commands 0x32 and 0x96.
[group]
0x80 Set Disc Memo (Part 1)
Note: Set a disc memo field. Accepts a 13 byte ASCII string as data. Filling the field with zeros resets the memory. See also command 0x83.
[disc] [13 bytes ASCII]
0x81 Unknown
Note: Jeff says this appears to be intended to copy memos around. I haven't been able to get any response at all on the CDP-CX450.
Unknown
0x83 Set Disc Memo (Part 2)
Note: To set a 20 letter disc name, use command 0x80 to set the first 13 letters. Then set the remaining seven letters with this command.

I believe the second argument is a part number, and could be used in future players to set even longer disc names. Note that at this time we have no way of knowing how many letters each 0x83 command would be used for, but it would probably be 13 or 14.

You can get back 0x1B meaning the edit failed - try using a part number of 0x03.

[disc] [02] [ASCII]
0x84 Unknown Unknown
0x88 Programing?
Note: Probably used to set/edit program one. Responds with 0x1F (memo written) with no args. With args of 01 disc track will reports mode, stops, cues disc/track, and leaves the player in program entry mode.
Unknown
0x8A Edit Program One
Note: It appears that only program one can be changed. This is a limitation of the remote control as well.

This command is used by the two-way remote control for the CDP-CX450 to dowload a program created on the remote as program one on the deck.

The first byte might have something to do with the position in the playing order.

The sets of three bytes are as follows: Two bytes for a hex encoded disc number, one byte track number. To mean all the disc 0xAB is used.

If this works get a 0x1F (acknowledging memo set), if it fails get a 0x1B.

[unknown] followed by five sets of three bytes
0x90 Get All Disc Memos
Return the memo text for all the discs.
Unknown
0x91 Query Memo?
Note: This query produces unpredictable (or at least so far indecipherable) responses.
Unknown
0x92 Get (All) Artist Memos
Note: If give argument 0x00 returns all artist memos. Returns 0x92 response(s).
[artist]
0x93 Set Artist Name
The CDP-CX450 supports 20 character Artist Memos, to set a name over 13 letters long means sending two commands.
[artist] [packet number] [13 bytes ASCII]
0x94 Get (All) Artist Data
Note: If give argument 0x00 returns all the data. Returns 0x94 reponse(s).
[packet number]
0x95 Assign Artist for Disc
Note: Using artist 0x00 will clear the artist for that disc. Data returned is the 0x94 message that was changed.
[disc] [artist]
0x96 Set/Clear Artist Mode
Sending argument 0x00 will turn Artist Mode off. Returns message 0x96. See also commands 0x32 and 0x74.
[artist]
0x98 Get CD Text
Note: If the disc is currently loaded and has CD Text, this query returns the disc name (0x48 and 0x49s) and all the track names (0x4A and 0x4Bs). If the second byte is 0x01, it will only return the first packet. That means you get the first 14 letters of the disc name (0x48 only) and the first 14 letters of each track name (0x4A only). If the disc is not loaded or does not have CD Text you get an 0x0E back.
[disc] [optional arg of 0x01]
0xE0 Technically 0xE? are not valid command codes in the slink protocol. The linux device driver package uses the command codes 0xE0 thru 0xE8 as a flag to send a seven bit infrared remote codes across the Control-A1 bus or on Control-S data channels. Since these commands do not conform to the Control-A1 standard and appear to be legacy support, they are treated seperately in this reference. [IR command byte]


Back to S-Link Main Page