Site menu:

Latest news:

Current Time:

Relevant links:

Catagory: HARDWARE
Sub Catagory: AVR
Comment: This site, Michaels Electronic Projects, is mostly about his Atmel AVR projects but it also has a few other information resources that are useful for many other hardware projects.
DATE ADDED: 2006-11-27
Catagory: HARDWARE
Sub Catagory: AVR
Comment: KECANI was a site all about making a serial interface for connection between an MP3 player and a Kenwood CAR CD headunit using the CD changer connection. Unfortanatly it seems that the site has recently been discontinued.
DATE ADDED: 2006-11-27

Page Updated:

( 13-Sep-2009 )

Valid CSS! Valid XHTML 1.0 Transitional

Kenwood Car Headunit Interface Protocol

Kenwood, like Sony, was an early player in the car audio system market and as technolgy improved, new features were added. One of these improvments was the idea of a CD changer, which was taken up by most companies. The connection from the headunit to the CD changer depends on the manufacuter and this page outlines the protocol used by Kenwood since 1999. (A slightly different protocol was used before 1999). It should be stated that because of developments in music technolgy the CD changer connection has now become more of an accessory connection for which manufactures (including Kenwood) have been fast to relise.

The comunication between the headunit and the CD change is based upon SPI (Serial Peripheral Interface) but it has a few extra features. The headunit and the CD changer both have 13-pin DIN sockets and so a cable with a 13-pin plug at both ends is used to connect the units. The pin out for the connector is as follows:

Pin
Direction
Description
1
OUT
CH-REQH, Active Low, Request from headunit to changer
2
-
Ground
3
-
Vcc +12V
4
OUT
CH-CON, High = Operation Mode, Low = Standby
5
IN
CH-MUTE - Mute request from changer, Active High
6
-
Audio GND
7
OUT
CH-RST - Reset output to changer
8
IN
Audio Channel Right
9
IN
CH-REQC, Request input from changer, Active Low
10
IN
CH-DATAC - Data input from changer
11
0UT
CH-DATAH - Data output to changer
12
IN
Audio Channel Left
13
-
CH-CLK Clock input/output for changer

(IN / OUT referenced to headunit)

The easiest way to find the correct pins is to connect a multimeter to a known ground point and find pin 3 which had 12v on it. All others can be referenced from this pin.

I should note here that the following data was not found by me but was mirrored from Mictronics who in actual fact mirrored it from another site by Arne Hennigs. This site no longer directly avalible but might be found here at the Web Archive. I have provided the data here for two reasons: one in case Mictronics ever removes the data but also because it is my intention to extend on the information over time.

The following information should be noted:

The clock high and low period are both 4µS, hence a clock rate of 125 KHz. The data is transfered in bytes (8 bits with MSB first) and is valid at the rising clock edge. Data transfer can be initiated either by the radio or the changer, the initiator pulls its REQ line low.

When the transfer is started by the radio by setting its REQ line (CH-REQH) low it waits for the changer to do the same on its REQ line (CH-REQC) and then sends the 4 byte address header, the data size in bytes and then the data.

The changer can start the communication by lowering its REQ line. The radio will send 4 address bytes and 1 data size byte (which is 40 clock cycles). [NB I am not sure that this is correct - I belive that the address and and data size byte sent by the changer] The radio will set its REQ line low if it accepts the transfer.

The first table shows the Packet Structure and the following tables just show the data part.

Packet Structure : Direction = Both
Byte Value Description
0 0x29 Destination Address
1 0x10 Destination Address
2 0x1E Own Address
3 0x00 Own Address
4 x Data Size in Bytes
5 x First Data Byte
4 + Data Size x Last Data Byte

 

Initialisation Handshake : Direction = C to R
Byte Value Description
0 0x11 Command Identifier
1 0xA4 Cycle Number of packet
2 0x00 ?
3 0x01 ?
4 0x02 ?

Sent after the above packet: Maybe radio identicication
Direction: R to C

Byte Value Description
0 0x20 Command Identifier
1 0x00  
2 0x11  
3 0x01  
4 0x03  
5 0x0B  
6 0x0B  
7 0x07  
8 0x05  
9 0x83  
10 0x84  
11 0xC0  
12 0xC1  
13 0xC2  
14 0xC3  
15 0xC4  
16 0xC5  
17 0xC6  

Sent after above packet
Direction: R to C
Byte Value Description
0 0x20 Command Identifier
1 0x01  
2 0x11  
3 0x29 Changer Address
4 0x10 Changer Address
5 0x00 maybe last bytes of cmd 0x11
6 0x01 maybe last bytes of cmd 0x11
7 0x02 maybe last bytes of cmd 0x11

Changer Caps Info (?) Sent after above packet
Direction: C to R
Byte Value Description
0 0x70 Command Identifier
1 0x02  
2 0x0A maybe disc count
3 0x3F  
4 0x03  
5 0x0C  
6 0x02  

Play Position Info Direction : C to R
Byte Value Description
0 0x60 Command Identifier
1 0x02 Might be sub command ID
2 0x00  
3 0x00  
4 0x00 Error Code: 0 is no error
5 0x00 Changer Status: Load, Eject, ....
6 0x02 Play Status: 1=Play, 2=Pause
7 0x00  
8 0x01  
9 0x00 Track Order Mode
0 = Normal, 1 = TrackScan, 2 = DiskScan
6 = Random
10 0x04  
11 0xBB Some bcd number: Displayed when Byte3 != 0
12 0x01  
13 0x0B Track Number
14 0x07 Disk Number
15 0x01 Min (bcd)
16 0x22 Sec (bcd)
17 0x62 Min disc (bcd)
18 0x26 Sec disc (bcd)
19 0x09 Min Remain (bcd)
20 0x30 Sec Remain (bcd)

Text info request : Direction R to C
Byte Value Description
0 0x42 Command Identifier
1 0x02  
2 0x07 Disk Number
3 0x0A Track Number
4 0x00 Text Section Number - 12 bytes size
5 0x00  
6 0x80 Text ID (0x80 = Name, 0x81 = Artist)

Test info sent after request : Direction C to R
Byte Value Description
0 0x62 Command Identifier
1 0x02  
2 0x07 Disc Number
3 0x02  
4 0x0A Track Number (0 = Disc Title Transfer)
5 0x00 Text Section Number - 12 bytes size
6 0x09  
7 0x00  
8 0x80 Text ID (0x80 = Name, 0x81 = Artist)
9...20 x Text

Commands Sent When Radio Keys Pressed : Direction R to C
Byte
Play
FWD(toggle)
BWD(toggle) Description
0
0x50
0x50, 0x50
0x50, 0x50
Command Identifier
1
0x02
0x01, 0x04
0x01, 0x04
Event ID
   0x00 = All up
   0x01 = Down
   0x02 = Toggle
   0x04 = Up
   0x06 = Hold
2
0x02
0x02, 0x02
0x02, 0x02
 
3
0x00
0x02, 0x02
0x02, 0x02
 
4
0x07
0x01, 0x01
0x02, 0x02
Key ID
5
0x00
0x05, 0x05
0x06, 0x06
 

Commands Sent When Radio Keys Pressed : Direction R to C
Byte
disc-(toggle)
disc+(toggle) Description
0
0x50, 0x50
0x50, 0x50
Command Identifier
1
0x02, 0x00
0x02, 0x00
Event ID
   0x00 = All up
   0x01 = Down
   0x02 = Toggle
   0x04 = Up
   0x06 = Hold
2
0x02, 0x02
0x02, 0x02
 
3
0x00, 0x00
0x00, 0x00
 
4
0x04, 0x00
0x02, 0x00
Key ID
5
0x00, 0x00
0x00, 0x00