Sony CD commands (DSP:144 (148); 145 (149); 146 (150))
This is for Sony CD players equipped with
Control-A1 ports (mostly megachangers). The
A1 protocol and its IR commands originated on CD megachangers, and as a result
we know more about these commands than any other device’s commands. We also know a lot about the codes it sends
back, as the A1 protocol is 2-way. See
the CD return commands page for more info.
The device codes in parentheses are only used for commands with a disk
number over 200 (see the <disc> parameter for more info). Code 144 is for CD mode 1, 145 for mode 2 and
146 for code 3.
SonyDSP:144 (148); 145 (149); 146 (150)
Command Code |
Parameter List and Function |
0 |
none Play. Returns Playing (0). |
1 |
none Stop. Returns
Stopped (1). |
2 |
none Pause
(discrete). Returns Paused (2). |
3 |
none Toggles
Play/Pause. Returns Playing or Paused. |
8 |
none Next Track |
9 |
none Previous
Track. First press goes to beginning
of current track like the normal button. |
14 |
none? Query disc memory
info. Returns 113, which has info on
what is programmed about that disc. |
15 |
none Query deck
status. Returns 112, which has info on
repeat/shuffle/program modes. |
16 |
none Fast Forward
until another transport command sent. |
17 |
none Rewind until
another transport command sent. |
18 |
none Fast Forward (high
speed) until another transport command sent. |
19 |
none Rewind (high
speed) until another transport command sent. |
31 |
none Resume playing
after searching. Works the same as
Play (0). Might go back to pause if you
started searching from pause. |
32 |
none Remote mode
on. Disables various front panel
buttons and changes command/response behavior. Very weird. |
33 |
none Remote mode
off. Puts player back to normal after
command 32. |
34 |
none Query player
capacity. |
36 |
none? Reports start of
tracks. Does not work on all models,
but returns 9 at start of tracks when enabled. |
37 |
none Verbose
mode. Every second sends response 81
back, and you get five of them on the minute marks. Turned off at the start of the next track,
so it isn’t very useful. I wonder if
the IR would even be workable with this on since so much is getting sent
back. |
38 |
none Brief mode. Turns off verbose mode. |
39 |
none Returns 71 if
disc has CD Text or 14 if it does not. |
46 |
none Power On |
47 |
none Power Off |
50 |
none Query
artist/group mode. Returns 150. |
64 |
<disc> Query Disc
Memo. Returns 64 with the first 13 characters,
plus 128 with the remaining characters on players that support longer memos. |
65 |
<disc> Query delete
file. Returns 65 with the data from
the delete file, unless it hasn’t been set up yet, in which case you get a 17
back. |
66 |
<group> Query group
memo. Returns group name in a 66
response. |
67 |
<group> Query group’s
discs. Returns 67, 68, 69 and 120 with
the bit-packed disc list. |
68 |
<disc> Query disc
info. Returns disc stats in a 96
response. If the disc isn’t loaded you
get response 20. |
69 |
<disc> <track> Query track
info. Returns the track length
contained in response 69. If the track
doesn’t exist or there’s no disc you get a 21 response. |
70 |
<disc> Query slave disc
memo. This is from the slave changer
when in megachanger mode. Returns 70
with the first 13 characters, plus 129 with the remaining characters on
players the support longer memos. |
72 |
<disc> Query enhanced
disc memo. On older players it works
like command 64. On newer ones it
returns 72 and 73 with the CD text if it exists and the disc is available,
otherwise it returns the disc’s memo in 72 and 73. |
74 |
<track> Returns 74 and 75
with the track’s name on a CD text disc.
If <track>=0 then it returns the info for the current
track. Returns 29 if there is no CD
text. On older players,
took a BCD byte as the parameter and returned the value in normal binary
returned as response 93. |
80 |
<disc> [<track>] Plays specified
disc and track. Track can be omitted
to start from track 1. |
81 |
<disc> [<track>] Cues up specified
disc and track and leaves in pause.
Track can be omitted to start from track 1. |
94 |
[<seconds fade>] Fade out in
specified number of seconds. 30 is the
default if invalid or omitted. |
95 |
[<seconds fade>] Fade in in
specified number of seconds. 30 is the
default if invalid or omitted. |
99 |
<disc> Gets some sort of
info for disc. Returns either 99 with
the data or 25 if not available. We
don’t know what this data is however. |
100 |
none? Gets some sort of
info for current track. Might take
<disc> and <track> parameters.
Returns 100 with data if everything goes right. Returns 26 if there is no data or 15 if no current
disc/track (presumably making the lack of parameters invalid) or something
else isn’t right. We don’t know what
data this returns or what the parameters are. |
106 |
none Query deck
model. Returns 13 byte string with
model number. |
114 |
none Query deck
contents. Returns bit-packed list of
discs the player thinks it has. The
player loses the list when the door is opened, and has to go all the way
around when closed to get accurate results in the response. |
116 |
<group> Sets/clears group
mode. Clears if parameter is 0,
otherwise selects the specified group.
Returns 150. |
128 |
<disc> <ASCII> Sets disc memo to
the string specified. On models that support
longer memos, the additional characters can be specified with command
131. A string of all zeros clears the
memo. |
131 |
<disc> <packet> <ASCII>
x? Sets second part
of disc memo for models that support it.
The second byte is the packet number, usually set to 2. We don’t know how long the string can be
since the limit for current models is 20 characters total, but I would guess
it would be 13. |
136 |
unknown This is some type
of programming command; it leaves the player in program mode with a parameter
of 1. |
138 |
<packet> ( <disc2 H> <disc2
L> <track> ) This sets program
1. It is always 18 bytes long. The first parameter is the packet number
for sending more than 5 steps. The
track can be set to 171 (0xAB) to mean all tracks on the disc. Note that discs are specified using 2
bytes, avoiding the whole mess with the regular <disc> parameter. |
144 |
unknown Returns all the
memos for all the discs? |
146 |
<artist> Returns all artist
memos for the specified artist as 146 responses. Returns all of them if <artist>=0. |
147 |
<artist> <packet> <ASCII>
Sets the artist
memo for the specified artist. Packet
number is 1 for first 13 bytes and 2 for the remaining 7, as the maximum
length for this is 20. |
148 |
<packet> Returns 148
response with artist data. Packet
number can be set to 0 to get all Artist data. |
149 |
<disc> <artist> Assigns artist
for disc. Use artist 0 to clear the
artist from that disc. Returns the changed
148 response. |
150 |
<artist> Sets/clears
artist mode. Clears if parameter is 0, otherwise selects the specified
artist. Returns 150. |
152 |
<disc> [1] Gets CD text for
the disc and all the tracks. Returns a
72 and 73, and a bunch of 74 and 75 responses. If the second byte is 1, then only the
first 14 characters (1 packet) is returned for the disc and each track. A 14 response is returned if CD text is not
available or does not exist. |
Parameters
Parameter Name |
Description and Format |
<artist> |
The artist
number, presumably in BCD (it’s not specifically mentioned in the source). |
<ASCII> |
An ASCII
character. Usually followed by x# in
the parameter listing to indicate the maximum string length. |
<disc> |
The disc number,
however it is complicated. Originally,
the capacity of a megachanger was only 100, so they used BCD for discs 1 to
100 (0x01 to 0x99, and 0x00 for 100).
Later, they made 200 disc changers, so they numbered them from 0x9A
(disc 100) to 0xFE (disc 200). Add 54
to the disc number to get the parameter in this case. Then they made them even bigger, so for
discs over 200, add 4 to the device code and subtract 200 from the disc
number to get the parameter. In short: 0x01 to 0x99
(BCD): disc 1 to 99 0x00 or 0x9A:
disc 100 0x9B to 0xFE:
disc 101 to 200 0x01 to 0xC8:
disc 201 to 400, using device number in parentheses (normal device+4) |
<disc2 H/L> |
The disc number
in hexadecimal. The H byte is the high
order byte and the L byte is the low-order byte. |
<group> |
The group number,
presumably in BCD (it’s not specifically mentioned in the source). Usually the valid range is only 1 to 8
anyway. |
<packet> |
The packet number
when sending multiple commands. See
the individual command for usage. |
<seconds fade> |
The number of
seconds for the fade commands. Valid
range is 1 to 30. |
<track> |
Track number in
BCD. |