Inside Unilink

Unilink basics
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

Timming 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

6 byte short

RAD|TAD|CMD1|CMD2|Parity1| 0

11 byte middle

RAD|TAD|CMD1|CMD2|Parity1|D1|D2|D3|D4|Parity2| 0

16 byte long



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


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


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.


  • 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:
    1. Each slave
      will be polled with the Anyone command short word
    2. The slave
      responds by telling the master what group type it is.
    3. The master
      will assign the slave a member address in its group
    4. The slave
      will remember the address and acknowledge its new address
    5. The master
      ends polling with Appoint end command short word
    6. 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 timingAfter 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


    Do you need Unilink protocol logs? Download here
    Command table in new window

One thought on “Inside Unilink

  1. I’m NOT an electronics or IT connosieur, So I supposed it was not so difficult (for me anyway) to find a way of fooling my old (but still unused) Sony CDX-MP50 In dash CD player in order to activate the BUS AUDIO IN two RCA inputs and be able to connect my Creative Zen Micro MP3 player. Is there a simpler way to do it? (even if I need to rewire those two RCA inputs in order to fuction as std AUX inputs. I don’t need to connect a CD changer, the MP3 at 320 KBPS is good enought!.

Leave a Reply

Your email address will not be published. Required fields are marked *

Comments will be moderated! Spam deleted immediately!
Before you submit form:
Human test by Not Captcha