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
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:
0×3 CD players/changers
0×5 Tuners
0×6 Cassette recorders
0×7 Display
0×8 Unilink Audio/Bus Multiplexer like an XA-C30
0xC Clock
0xD MD Changers
Others:
0×11 – Keypad
0×21 – Keypad(Controll)
0×91 – DSP(Vol,Tone,etc)
Special addresses:
0×10 Master
0×18 Broadcast
Commands starting “0×01″ 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
In this mode the BUS ON line is low and no communication occurs
A slave can wake up the master by forcing the DATA line high. The master will respond by activating the BUS ON line.
idle/standby (no data activity, just square wave)
- 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.
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, 0×06, 0xA8, 0×25, 0xA0 ;CDC device CDX-605, CDX-91
0x8C, 0×89, 0×15, 0xAC, 0×17, 0xA0 ;CDC device CDX-71
0x8C, 0xC0, 0×24, 0xa8, 0x3C, 0xA0 ;CDC device info
0x8C, 0xA0, 0×06, 0xa8, 0×25, 0xA0 ;CDC device info
0x8C, 0×10, 0×24, 0xa8, 0×17, 0xA0 ;MDC device info
0x8C, 0×00, 0×24, 0x1C, 0×22, 0×00 ;internal MD drive
0x8C, 0×00, 0×24, 0x2C, 0×22, 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
Logs?!
Do you need Unilink protocol logs? Download here
Command table in new window

