Here's what I have found, and I'm looking for any more info and/or ideas from here. Also, I'll admit I'm a novice programmer, but I can fix that. If you can supply the meat, I'll figure out the potatos.
Requests from PC to PCR:
All requests take the form:
5A A5 xx xx ED ED
-where xx xx is the length of the data field in big-endian (MSB first) format.
Known commands:
00 10 10 10 01 -- power on. see response 80
01 00 -- power off. see response 81
10 02 -- select channel
13 00 -- ? see response 93
25 08 xx 00 -- get channel info. see response A5
25 09 xx 00 -- get channel info. see response A5
31 -- get radio ID. see response B1
42 01 -- ? see response C2
43 -- get signal strength info. see response C3
50 00 00 00 00 00 -- ?
70 05 -- get radio info? see response E3
Responses from PCR to PC:
All responses take the form:
5A A5 xx xx yy yy
-where xx xx is the length of the data field in big-endian format
yy yy is the last two bytes of the data field, repeated (why?)
Many response codes seem to be the request codes with the MSB set high.
80: HELLO
80 ?? ?? ?? aa bb cc dd ee ?? ?? ?? ?? ff gg hh ii jj ??
aa "SDEC Ver." in BCD
bb/cc/ddee SDEC revision date, in BCD
(note: My PCR returns 25 10 29 20 02, but diag.exe
refers to this as "SDEC Ver. 25 (10/02/2002)) ???
ff
gg/hh/iijj XMSTK version info
XM ID in ASCII, 8 characters long
Sent on poweron. See request 00 01.
81: GOODBYE
81 ?? ?? ??
Sent on power down. See request 01.
93: ??
93 ?? ?? ??
See request 13 00.
A5: CHINFO (see below for further notes on this response)
A5 ?? ?? aa bb ?? XX XX XX XX XX XX XX XX XX XX
XX XX XX XX XX XX ?? ?? YY YY YY YY YY YY YY YY
YY YY YY YY YY YY YY YY ?? ZZ ZZ ZZ ZZ ZZ ZZ ZZ
ZZ ZZ ZZ ZZ ZZ ZZ ZZ ZZ ZZ WW WW WW WW WW WW WW
WW WW WW WW WW WW WW WW WW ?? ?? ?? ??
aa Channel number. This is one two low when 25 09 is used?
bb Usually the same as the channel number -- but not always.
XX Station name. (16 chars)
YY Genre name. (16 chars) all are padded with trailing
ZZ Artist name. (16 chars) whitespace (0x20)
WW Song title. (16 chars)
See request 25 08, 25 09.
B1: GETID
B1 ?? ?? ?? XX XX XX XX XX XX XX XX
XX XM ID, in ASCII. (8 chars)
See request 31.
C1: ??
C1 ??
C2: ??
C2 ?? ??
See request 42 01.
C3: Signal strength?
C3 (lots and lots of numbers.

See request 43.
D0: ??
D0 ?? ?? ??
See request 50.
E0: Some sort of seperator or ACK?
E0
E3: XM INFO
E3 ?? ?? ?? XX XX XX XX XX YY YY YY YY YY ZZ ZZ ZZ ZZ ZZ
XX CBM Version
YY XMSTK Version
ZZ SDEC Version (see 80 for more details)
See request 70 05.