Inside Sony Unilink
For information only - No support! #
All information on this page has been collected by members of the unilink discussion board by reverse engineering the protocol. The information cannot be guaranteed to be correct and is used at your own risk.
Bus Information #
- Signals are TTL 0V (LOW) or 5V (HIGH)
- There is only one master.
- The unilink bus has three lines: BUS ON, CLOCK and DATA
- the master provides the clock for all slaves
The bus always is in one of three states:
- off - BUS ON = 0, CLOCK and DATA don´t care
- idle - BUS ON = 1, CLOCK = 0, DATA 8ms low, then 8ms high
- active - BUS ON = 1
Timing Information #
When no bytes are been sent the clock line will remain at 0 volts. The data line is changed at the half way point through the high clock. Clock period for one bit is 20us 50% duty cycle.
Bytes are normally sent out using a one-millisecond clock. One byte per millisecond.
There is an 3ms data line low cap at start of a new packet.
Data word types: #
6 byte short word:
RAD|TAD|CMD1|CMD2|Parity1| 0
11 byte middle word:
RAD|TAD|CMD1|CMD2|Parity1|D1|D2|D3|D4|Parity2| 0
16 byte long word:
RAD|TAD|CMD1|CMD2|Parity1|D1|D2|D3|D4|D2_1|D2_2|D2_3|D2_4|D2_5|Parity2|0
with:
RAD - Receiver address
TAD - Transmitter address
CMD1 - First byte of command identifier
CMD2 - Either a subcommand id or first data byte (depending CMD1)
Parity1 - Parity byte (The parity is simply the lower 8 bits of the addition of all the bytes that were sent before. )
D1-D4 - four additional data bytes in middle and long data word
D2_1-D2_5 - another five data bytes in long word
Parity2 - Second parity byte. Works like first parity byte (add ALL data bytes that were sent before, also the ones that already count into the first parity byte, but not the firt parity itself)
0 - A zero byte that follows every data word
Addresses: #
An address is always built of two nibbles of 4 bits each. The higher 4 bits specify the device group and depend on the device´s type. The lower 4 bits specify the device id that is assigned by the master during initial link mode.
If the device id 0 is specified as RAD, it´s a broadcast to the specified group.
Group IDs: #
0x3 CD players/changers
0x5 Tuners
0x6 Cassette recorders
0x7 Display
0x8 Unilink Audio/Bus Multiplexer like an XA-C30
0xC Clock
0xD MD Changers
Others:
0x11 - Keypad
0x21 - Keypad(Controll)
0x91 - DSP(Vol,Tone,etc)
Special addresses: #
0x10 Master
0x18 Broadcast
Commands starting "0x01" are system commands, and regarded as very important. If a Changer or whatever picks up one of these commands and then finds out later that it´s partially corrupt, it will result in a complete re-initialisation sequence.
Modes #
- Sleep Mode In this mode the BUS ON line is low and no communication occurs
- Wake Up A slave can wake up the master by forcing the DATA line high. The master will respond by activating the BUS ON line.
- Normal Mode idle/standby (no data activity, just square wave)
- Idle/Standby
- Inital LinkThe master must find all slaves:
- Each slave will be polled with the Anyone command short word.
- The slave responds by telling the master what group type it is.
- The master will assign the slave a member address in its group.
- The slave will remember the address and acknowledge its new address.
- The master ends polling with Appoint end command short word.
- The slave returns a NAK to end the link.
- The master will then issue the Link On command to see if there are more slaves beyond the one it just found.
- Time PollingThe master cheks the slaves to see if they are still there and if there is any status update.
- Request PollingWhen slaves want to send data they make a request The master will then poll all slaves for information.For an slave break, a slave must force the data line low during an high idle state.
- Slave break timing After 8ms low of data line (bus is idle) the slave waits 2ms for high of data line (bus still idle) then he force the data line low for 3ms. Now he release the data line back to high for the last 3ms. So a slave break is done within 8ms high level while bus is idle. Remember that the bus is set to idle by the master with alternating 8ms low and 8ms high level.
Device info data #
Cmd1 Cmd2 D1 D2 D3 D4
0x8C, 0xA0, 0x06, 0xA8, 0x25, 0xA0 ;CDC device CDX-605, CDX-91
0x8C, 0x89, 0x15, 0xAC, 0x17, 0xA0 ;CDC device CDX-71
0x8C, 0xC0, 0x24, 0xa8, 0x3C, 0xA0 ;CDC device info
0x8C, 0xA0, 0x06, 0xa8, 0x25, 0xA0 ;CDC device info
0x8C, 0x10, 0x24, 0xa8, 0x17, 0xA0 ;MDC device info
0x8C, 0x00, 0x24, 0x1C, 0x22, 0x00 ;internal MD drive
0x8C, 0x00, 0x24, 0x2C, 0x22, 0xA0 ;same as above, but now external
Cmd1
0x8C Command identifier
Cmd2
D1
D2
0001xxxx internal device, only 1 CD slot accepted
0010xxxx external device
D3
0001xxxx Custom file
0010xxxx no Custom file
D4
11110000 Number of CD slots
👈 Home