KWP 2000 on K-Line – ISO 14230
The KWP 2000 protocol (Keyword Protocol 2000) marked the emergence of the first widely adopted common standard among European automakers. Initially, the protocol was specified for the K-Line bus system. Today, this protocol is found only in older control units. ISO 14230 standardizes the KWP 2000 protocol for K-Line. The ISO standard also specifies the physical layer, including its requirements for diagnostic testers and ECUs; the datalink layer; and the application layer, which describes the communication model and diagnostic services; as well as the requirements for emissions-related systems.
Communication is based on requests and responses between the diagnostic tester and the ECUs. The request is initiated by the diagnostic tester. The services consist of the address information in the header, a Service Identifier (SID), and the parameters in the payload. In the event of a negative response, the payload consists of Error ID 0x7F, the Service ID, and an error code.
| Functional unit | Diagnostic service name | Request SID | Response SID |
|---|---|---|---|
| Diagnostic Management | StartDiagnosticSession | 0x10 | 0x50 |
| StopDiagnosticSession | 0x20 | 0x60 | |
| SecurityAccess | 0x27 | 0x67 | |
| TesterPresent | 0x3E | 0x7E | |
| ECUReset | 0x11 | 0x51 | |
| ReadECUIdentification | 0x1A | 0x5A | |
| Data Transmission | ReadDataByLocalIdentifier | 0x21 | 0x61 |
| ReadDataByCommonIdentifier | 0x22 | 0x62 | |
| ReadMemoryByAddress | 0x23 | 0x63 | |
| DynamicallyDefineLocalIdentifier | 0x2C | 0x6C | |
| WriteDataByLocalIdentifier | 0x3B | 0x7B | |
| WriteDataByCommonIdentifier | 0x3E | 0x6E | |
| WriteMemoryByAddress | 0x3D | 0x7D | |
| SetDataRates | 0x26 | 0x66 | |
| Stored Data Transmission | ReadDiagnosticTroubleCodes | 0x13 | 0x53 |
| ReadDiagnosticTroubleCodesByStatus | 0x18 | 0x58 | |
| ReadStatusOdDiagnosticTroubleCodes | 0x17 | 0x57 | |
| ReadFreezeFrameData | 0x12 | 0x52 | |
| ClearDiagnosticInformation | 0x14 | 0x54 | |
| Input/Output Control | InputOutputControlByLocalIdentifier | 0x30 | 0x70 |
| InputOutputControlByCommonIdentifier | 0x2F | 0x6F | |
| Remove Activation or Routine | StartRoutineByLocalIdentifier | 0x31 | 0x71 |
| StopRoutineByLocalIdentifier | 0x32 | 0x72 | |
| RequestRoutineResultsByLocalIdentifier | 0x33 | 0x73 | |
| StartRoutineByAddress | 0x38 | 0x78 | |
| StopRoutineByAddress | 0x39 | 0x79 | |
| RequestRoutineResultsByAddress | 0x3A | 0x7A | |
| Upload/Download | RequestDownload | 0x34 | 0x74 |
| RequestUpload | 0x35 | 0x75 | |
| TransferData | 0x36 | 0x76 | |
| RequestTransferExit | 0x37 | 0x77 |
