Please e-mail me any new codes that you discover. I'm also very interested in any software that you write to control the CD player. Finally, drop me a line if this is useful to you - I could use the kudos. :)
9 A 1 0 0 1 1 0 1 0 ^^^^^^^ <- address ^^^ <- 1 = report from CD player; 0 = message to CD player address cd-player 000 CD1 001 CD2 010 CD3 111 All CDs
Text on the CD players is represented by ASCII strings. The strings are not null terminated in most cases, nor do they have length fields associated with them. Instead, the string is finished when the data stops coming in - a short delay of a 10th of a second or so should be adequate for end determination in the few cases where this might be a problem. A new packet from the converter always begins with a linefeed (0x0A), so in back to back transmissions the end of one packet and the beginning of the next can be easily determined.
All commands should be preceeded by an address byte and all responses will start with an address byte, except where noted. For example, to send the play command to CD1, issue:
90 00The CD player will respond with:
98 00
| Play |
|---|
| call: 00 |
| response: 00 |
| variables: none |
| description: The CD player will load and play the current CD. As soon as track information is loaded, it will return that information. See track info. |
| Stop |
| call: 01 |
| response: 01 |
| variables: none |
| description: This stops the current CD. |
| Pause |
| call: 02 |
| response: 02 |
| variables: none |
| description: This puts the current CD into Pause. |
| Pause Queue |
| call: 03 |
| response: 02 - if previously playing 00 - if previously paused |
| variables: none |
| description: The CD player is toggled between a paused state and playing the current CD. |
| Track Forward |
| call: 08 |
| response: see Track Info. |
| variables: none |
| description: Skip forward one track. The CD player must be queued with a Pause command or actually playing for this command to work. |
| Track Back |
| call: 09 |
| response: see Track Info. |
| variables: none |
| description: Skip back to the beginning of this track or, if already there, to the previous track. The CD player must be queued with a Pause command or actually playing for this command to work. |
| Scan Forward |
| call: 10 |
| response: none |
| variables: none |
| description: The CD player scans forward from the current position. The CD must be in a play or pause mode. Normal cross track boundary messages are returned (see Track Info). Stop scanning forward with the Resume command. |
| Scan Backward |
| call: 11 |
| response: none |
| variables: none |
| description: The CD player scans backward from the current position. The CD must be in a play or pause mode. Normal cross track boundary messages are returned (see Track Info). Stop scanning forward with the Resume command. |
| Scan Forward |
| call: 12 |
| response: none |
| variables: none |
| description: The CD player scans forward from the current position. The CD must be in a play or pause mode. Normal cross track boundary messages are returned (see Track Info). Stop scanning forward with the Resume command. |
| Scan Backward |
| call: 13 |
| response: none |
| variables: none |
| description: The CD player scans backward from the current position. The CD must be in a play or pause mode. Normal cross track boundary messages are returned (see Track Info). Stop scanning forward with the Resume command. |
| Resume |
| call: 1F |
| response: ?? |
| variables: none |
| description: Resumes normal play mode operation after a scan forward or back. |
| Remote On |
| call: 20 |
| response: 70 00 80 00 dsk trk |
| variables: none |
| description: Puts the CD player into "Remote" mode. This amounts to turning off the display and disabling the buttons (except power). |
| Remote Off |
| call: 21 |
| response: 70 00 C0 00 dsk trk |
| variables: none |
| description: Puts the CD player into Normal operating mode. |
| Time Report |
| call: 25 |
| response: 51 trk index min sec |
| variables: dsk - the current disk number trk - the current track being played index - the index in the current track min,sec - the length of the track in minutes and seconds |
| description: Sends an update every second. |
| Report Off |
| call: 26 |
| response: none |
| variables: none |
| description: Stops reporting second updates.. |
| Power On |
| call: 2E |
| response: 2E |
| variables: none |
| description: Powers up the CD player. |
| Power Off |
| call: 2F |
| response: 2F |
| variables: none |
| description: Turns off the CD player. |
| Download Title |
| call: 40 dsk |
| response: 40 dsk ascii_text |
| variables: dsk - the disk need not be loaded for this to work ascii_text - the title information that the CD player has for this disk |
| description: The CD player sends the title information for a particular CD. Only works for CDP CX250 or higher. |
| Get CD Info |
| call: 44 dsk |
| response: 60 dsk mintrk maxtrk min sec ??? |
| variables: dsk - the disk number currently loaded mintrk - the lowest track on the disk maxtrk - the highest track on the disk min,sec - the length of the CD in minutes and seconds ??? - unknown, seems fairly unique... frame offset? |
| description: Retrieves information about a CD that is currently loaded. |
| Get Track Info |
| call: 45 dsk trk |
| response: 62 dsk trk min sec 15 - the disk isn't loaded or the track doesn't exist |
| variables: dsk - the disk number currently loaded trk - the track you're interested in |
| description: Get information about a particular track on the currently loaded CD. The disk must be loaded before using this command. |
| Play Disk |
| call: 50 dsk trk |
| response: see Track Info. |
| variables: dsk - the disk number to be played trk - the track to be played |
| description: Jumps to the given track on the given disk and begins playing. |
| Set Disk |
| call: 51 dsk trk |
| response: see Track Info. |
| variables: dsk - the disk number to be played trk - the track to be played |
| description: Queues the CD player to the given disk and track number, but does not start playing it. |
| Track Info |
| call: none |
| response: 50 dsk trk min sec |
| variables: dsk - the current disk number trk - the current track being played min,sec - the length of the track in minutes and seconds |
| description:This information is returned whenever a new track is about to be played. This can either be the result of a command or it could have happened naturally as play continues from the end of one track and on to the next. |
| CD Data Loaded |
| call: none |
| response: 52 dsk |
| variables: dsk - the disk number currently loaded |
| description:The CD Player now has data for the disk available. Use Get CD Info to retrieve it. |
| Finding CD |
| call: none |
| response: 54 dsk |
| variables: dsk - the disk number currently loaded |
| description:This message is sent when the CD player starts moving to a new disk location. |
| Loading CD |
| call: none |
| response: 58 dsk |
| variables: dsk - the disk number currently loaded |
| description:This message is returned when a CD is spinning up inside the player. |
| Blank |
| call: 00 |
| response: 00 |
| variables: none |
| description: description. |
The track switching control codes were deciphered by me directly. The other codes supplied by Maciej Jesmanowicz. The Control-A1 interface requires each command to be preceeded by the nibble 0xE.
These codes are only for the CX200. The other models have keys that are not listed in this table. The listed key codes are probably identical between the products in a family, however.
| Power | call: EA 91 | Track 1 | call: E0 11 |
|---|---|---|---|
| Continue | call: EB 91 | Track 2 | call: E8 11 |
| Shuffle | call: EA D1 | Track 3 | call: E4 11 |
| Program | call: EF 91 | Track 4 | call: EC 11 |
| Disk | call: E5 31 | Track 5 | call: E2 11 |
| Track | call: ED 31 | Track 6 | call: EA 11 |
| Block | call: E3 31 | Track 7 | call: E6 11 |
| Repeat | call: E3 51 | Track 8 | call: EE 11 |
| Check | call: EB 51 | Track 9 | call: E1 11 |
| Play | call: E4 D1 | Track 0/10 | call: E0 51 |
| Pause | call: E9 D1 | Track >10 | call: EE 51 |
| Stop | call: E1 D1 | Enter | call: ED 11 |
| Skip Back | call: E0 D1 | Skip Forward | call: E8 D1 |
| Scan Back | call: EC D1 | Scan Forward | call: E2 D1 |
| Disk Back | call: EB D1 | Disk Forward | call: E7 D1 |
| Clear | call: EF 11 |