Welcome to the VAG info page...

To the opendiag group guys and gals - This obviously then goes for VW, Audi, Seat and Skoda.

I don't realy update the technical detail in this page anymore, but decided to mirror it Geocities (Yes, that gives you an idea how long this has been up here) as I've been getting some hassles, but I know many people still visit it to get their first basic understanding of the VAG KeyWord1281 protocol.

Some other interesting links (non-VAG-related):

http://www.2ridetheworld.com - Simon and Lisa Thomas, traveling around the world on their BMW bikes - help them by donating to there fuel fund! Every $10 helps!!!

GS-911 - http://www.hexcode.co.za : The best aftermrket Diagnostic tool for BMW motorcycles - Read fault codes on your mobile phone and reset service reminders etc.!

Some things to keep in mind before mailing me at :

  • I don't have all the time in the world, and hence I urge you NOT to send me any general questions.
  • I will only answer a very select few.

For those of you who wondered what the VAG 1552 looks like:

 

As a start, here is a picture of the VAG connector and cable.

 

And here are the pinouts as seen on the vehicle:

 
Chamber Allocation Description
1 nc  
2 nc reserved [+] SAE J1850
3 reserved vehicle bus (ODB-II DV)
4 Output Earth VAG1551/2 and OST
5 Signal Earth Spesification for OST
6 nc  
7 K-line VAG1551/2 and OST
8 nc  
9 nc  
10 nc reserved [-] SAE J1850
11 reserved vehicle bus (ODB-II DV)
12 reserved screen (ODB-II DV)
13 nc  
14 Signal Code VAG1551/2 LA
15 L-line VAG1551/2 and OST
16 U_bat VAG1551/2 and OST

 

Everyone wants to know what the K-line interface looks like... well, it can take many shapes, depending on the complexity that you would like to add, but essentially it is a bidirectional communication bus (K-line) with an optional initialization line (L-line - optional, and if used, then only to output the 5 bps address byte). The interface described below, can be used for ISO:9141:1989, ISO:9141-2, KeyWord82, KeyWor1281, KeyWord2000 and other K-line protocols.

 

and here is some of the protocol to get you all going....

The Baud rates are generally between 1k and 10,4k bit/s. Common today are 4800, 9600 and 10400 (for most OBD-II equipped ECUs), however they could be any non-standard baudrate, with an interbyte time of approximately 10ms.

 

some definitions first:

  • The smallest repeatable transmission unit is a "BLOCK".
  • The sum of all blocks transmitted within the framework of communication with a control unit is a "TELEGRAM".
  • The unit (ECU or tester), which is authorized to output a block, is termed "MASTER". Correspondingly, the receiverof a block is called a "SLAVE".

BLOCK Transfer:

  • The bytes of a block that are transmitted by the master are returned by the slave complemented in bytes, i.e. the 1st byte of the master leads to the complemented 1st byte of the slave, upon which the master transmits the second byte to the slave, and so on.
  • With this form of transmission the master will always know after every byte whether the transmitted byte has been correctly received.
  • The last byte of the block is not returned by the slave, it answers by transmitting the "Block end" $03 (if you like Pascal/Delphi) or 0x03 (if your more C inclined) ;-)

Blocks are built up of five parts. ( Please note: For the protocol, I will always be using hexadecimal values ! )

 
Type Acronym description
1. Block length number of bytes in block - excluding the "Block end" byte
2. Block counter inc by 1 with every block - wraps from FF to 00
3. Block title this is the command-type
4. data a block could have NO data, i.e. the ACK block
5. Block end value of 03 hex

example: An Acknowledge block would look like this:

Note: the Block title (command) for the Acknowledge block is 09

 
value comment
03 Block length
ZZ Block counter
09 Block title (Acknowledge)
03 Block end

Now that we've covered the basics, you should easily understand the following communication. This is an example of a log I've taken from entering the Engine Controller (address 01) of a VW Polo Classic. The only deviation from what I have described above, is the 5 bps initialization. It works as follows:

  • the tester issues the 5 baud address of the controller it would like to initiate communication with.
  • should the ECU recognize its address, it will reply with a sync byte (55), which is used by the tester to determine the baudrate that the ECU would like to communicate at.
  • following a short delay, the ECU will send a Key word (consisting of 2 Key bytes, first the Least Significat Byte, followed by the MSB)
  • the tester replies with the complement of the Key MSB byte. This hands master mode to the ECU, and it starts outputting the ECU info.
 
from PC from ECU comments
01   5 bps address of the Engine Controller 1start, 7data, odd parity, 1stop
  55 this is the sync byte to determine the baudrate (01010101) 1start, 8data, 1stop
  01 Key word LSB 1start, 7data, odd parity, 1stop
  8A Key word MSB 1start, 7data, odd parity, 1stop
75   Complement of Key word MSB

Here follows the first ECU info Block. The first one is the Controller ID #: ''RSU906258? "

 
from PC from ECU comments
  0F Block length - ECU is master
F0    
  01 Block counter
FE    
  F6 Block title - ASCII text follows
09    
  52 'R'
AD    
  53 'S'
AC    
  55 'U'
AA    
  39 '9'
C6    
  30 '0'
CF    
  36 '6'
C9    
  32 '2'
CD    
  35 '5'
CA    
  38 '8'
C7    
  3F '?'
C0    
  20 ' '
DF    
  20 ' '
DF    
  03 Block end

Now master mode is handed to the Tester (PC in our case) and it replies with the Ack Block.

 
from PC from ECU comments
03   Block length - PC is master
  FC  
02   Block counter
  FD  
09   Block title - ACK command
  F6  
03   Block end

Now the ECU replies with the Component #: " 2.0 MP9.0 "

 
from PC from ECU comments
  0F Block length - ECU is master
F0    
  03 Block counter
FC    
  F6 Block title - ASCII text follows
09    
  20 ' '
DF    
  32 '2'
CD    
  2E '.'
D1    
  30 '0'
CF    
  20 ' '
DF    
  4D 'M'
B2    
  50 'P'
AF    
  39 '9'
C6    
  2E '.'
D1    
  30 '0'
CF    
  20 ' '
DF    
  20 ' '
DF    
  03 Block end

Now master mode is handed to the Tester and it replies with the Ack Block.

 
from PC from ECU comments
03   Block length - PC is master
  FC  
04   Block counter
  FB  
09   Block title - ACK command
  F6  
03   Block end

Now the ECU replies with the Software Coding: "2PZARSU3 "

 
from PC from ECU comments
  0F Block length - ECU is master
F0    
  05 Block counter
FA    
  F6 Block title - ASCII text follows
09    
  32 '2'
CD    
  50 'P'
AF    
  5A 'Z'
A5    
  41 'A'
BE    
  52 'R'
AD    
  53 'S'
AC    
  55 'U'
AA    
  33 '3'
CC    
  20 ' '
DF    
  20 ' '
DF    
  20 ' '
DF    
  00 Cut-off signal (NULL) - when NOT Coding
FF    
  03 Block end

Now master mode is handed to the Tester and it replies with the Ack Block.

 
from PC from ECU comments
03   Block length - PC is master
  FC  
06   Block counter
  F9  
09   Block title - ACK command
  F6  
03   Block end

Now the ECU replies with the Dealer Part #: "0261204???"

 
from PC from ECU comments
  0D Block length - ECU is master
F2    
  07 Block counter
F8    
  F6 Block title - ASCII text follows
09    
  30 '0'
CF    
  32 '2'
CD    
  36 '6'
C9    
  31 '1'
CE    
  32 '2'
CD    
  30 '0'
CF    
  34 '4'
CB    
  3F '?'
C0    
  3F '?'
C0    
  3F '?'
C0    
  03 Block end

Now master mode is handed to the Tester and it replies with the Ack Block.

 
from PC from ECU comments
03   Block length - PC is master
  FC  
08   Block counter
  F7  
09   Block title - ACK command
  F6  
03   Block end

Now the ECU replies with the Additional Info1: "2227355???"

 
from PC from ECU comments
  0D Block length - ECU is master
F2    
  09 Block counter
F6    
  F6 Block title - ASCII text follows
09    
  32 '2'
CD    
  32 '2'
CD    
  32 '2'
CD    
  37 '7'
C8    
  33 '3'
CC    
  35 '5'
CA    
  35 '5'
CA    
  3F '?'
C0    
  3F '?'
C0    
  3F '?'
C0    
  03 Block end

Now master mode is handed to the Tester and it replies with the Ack Block.

 
from PC from ECU comments
03   Block length - PC is master
  FC  
0A   Block counter
  F5  
09   Block title - ACK command
  F6  
03   Block end

Now master mode is handed to the ECU and it replies with the Ack Block. This implies that the ECU info Telegram is now complete, and the ECU and Tester will exchange Ack Blocks until comms is lost, ended or another command is issued from the tester.

 
from PC from ECU comments
  03 Block length - PC is master
FC    
  0B Block counter
F4    
  09 Block title - ACK command
F6    
  03 Block end

Now master mode is handed to the Tester and it replies with the Ack Block.

 
from PC from ECU comments
03   Block length - PC is master
  FC  
0C   Block counter
  F3  
09   Block title - ACK command
  F6  
03   Block end

Now master mode is handed to the ECU and it replies with the Ack Block.

 
from PC from ECU comments
  03 Block length - PC is master
FC    
  0B Block counter
F4    
  09 Block title - ACK command
F6    
  03 Block end

As mentioned before, this goes on ad infinitum......

Next I will end the communication to the ECU with the END OUTPUT command:

 
from PC from ECU comments
03   Block length - PC is master
  FC  
40   Block counter
  BF  
06   Block title - END OUTPUT command
  F9  
03   Block end