Sony MD Headphone interface

 

Preface

This is the digital interface on Sony MD players as I have seen it on my MZ-R3. It is not complete yet, so I appreciate any input that helps me to complete the list. Please let me know if you try to use this interface.

 

Connector

The connector is described in the figure. Pin 2 and 4 are used to control the player by connecting various resistors between the pins. The exact values are described elsewhere. This document is about pin 1 and 3, which carries digital data to the LCD display sitting on the headphone cable. This information includes track number, time and trackname.

 

Electrical interface

The electrical interface is described in the figure. The data packet starts with a "reset" pulse. Then a start bit follows (allways "0"). Then the 8 bit data and address follows (LSB first). The packet is terminated with a stop bit ("0" or "1"). I have not yet found out why this bit sometimes is a "1", and other times is a "0" It may be some kind of parity, but I don't know. Each bit is defined as follows:

The logic levels seemes to be quite near 0V for a low signal, and 2.9V for a high signal. This means that the levels are TTL compatible, and that the codes can be read by a device like the PC printer port, or allmost any microcontroller.

 

Register definition

Till now, I have found the following registers and functions. I would appreciate any feedback if you find something that is wrong, if you understand more about how things works, or if you find out something new. I have used the following conventions for the data format:

 

Address b7-6 b5-4 b3-0 Data Description
0x2B 00 10 1011 N/A - 0x02 ?
0x40 01 00 0000 N/A This command is used when PLAY button is pressed
0x41 01 00 0001 Byte (0-23) Headphone volume
0x45 01 00 0101 Ascii character Text 2
0x46 01 00 0110 0x20
0x47 01 00 0111 N/A Scroll text one pixel to left
0x49 01 00 1001 BCD number Minutes
0x4B 01 00 1011 BCD number Seconds
0x4C 01 00 1100 Ascii character Text 1: The first character of a line is written to this regitser
0x4D 01 00 1101 Ascii character Text 2: The remaining characters of a line is written to this register. (Or to 0x45)
0x68 01 10 1000 1

2

3

4

5

LOW BATT

NO DISC

BLANKDISC

DISC ERR

HOLD

0x69 01 10 1001 N/A Display is turned on (Used to blink during pause)
0x6B 01 10 1011 N/A Display is turned off (Used to blink during pause)
0x7B 01 11 1011 N/A - 67 ?
0xA0 10 10 0000 BCD number The track number is continously written here when the player is stopped
0xA1 10 10 0001 BCD number The track number is continously written here when playing
0xA2 10 10 0010 BCD number The track number is written her once when starting to play
0xA3 10 10 0011 N/A Continously written during PAUSE
0xA4 10 10 0100
0xC0 11 00 0000 N/A No Battery, No Repeat
0xC1 11 00 0001 N/A Battery Empty, No Repeat
0xC2 11 00 0010 N/A Battery almost Empty, No Repeat
0xC3 11 00 0011 N/A Battery 1/4 Full, No Repeat
0xC4 11 00 0100 N/A Battery 1/2 Full, No Repeat
0xC5 11 00 0101 N/A Battery 3/4 Full, No Repeat
0xC6 11 00 0110 N/A Battery Full, No Repeat
0xD0 11 01 0000 N/A No Battery, Repeat
0xD1 11 01 0001 N/A Battery Empty, Repeat
0xD2 11 01 0010 N/A Battery almost Empty, Repeat
0xD3 11 01 0011 N/A Battery 1/4 Full, Repeat
0xD4 11 01 0100 N/A Battery 1/2 Full, Repeat
0xD5 11 01 0101 N/A Battery 3/4 Full, Repeat
0xD6 11 01 0110 N/A Battery Full, Repeat
0xE0 11 10 0000 N/A No Battery, Repeat1
0xE1 11 10 0001 N/A Battery Empty, Repeat1
0xE2 11 10 0010 N/A Battery almost Empty, Repeat1
0xE3 11 10 0011 N/A Battery 1/4 Full, Repeat1
0xE4 11 10 0100 N/A Battery 1/2 Full, Repeat1
0xE5 11 10 0101 N/A Battery 3/4 Full, Repeat1
0xE6 11 10 0110 N/A Battery Full, Repeat1
0xF0 11 11 0000 N/A No Battery, Repeat Shufle
0xF1 11 11 0001 N/A Battery Empty, Repeat Shufle
0xF2 11 11 0010 N/A Battery almost Empty, Repeat Shufle
0xF0 11 11 0011 N/A Battery 1/4 Full, Repeat Shufle
0xF4 11 11 0100 N/A Battery 1/2 Full, Repeat Shufle
0xF5 11 11 0101 N/A Battery 3/4 Full, Repeat Shufle
0xF6 11 11 0110 N/A Battery Full, Repeat Shufle
0xF5 11 11 0101 N/A No Battery, Repeat Shufle

I have found this information by connecting the output signal frm the MD directly to one input pin on the PC printer port. One idea would be to use a microprocessor to decode the information. Matthew Richardson has done it by using a couple of standard logic components to make a shift register. Click here to se the schematic.