PassThru – SAE J2534
The PassThru specification (SAE J2534) was first published by the SAE (Society of Automotive Engineers) in 2002 and subsequently updated in 2004 and 2006. The EPA (U.S. Environmental Protection Agency) and the ARB (California Air Resources Board) imposed new requirements on vehicle manufacturers: vehicles from the 2004 model year onwards had to be reprogrammable by independent workshops as well. In the European market, the Euro 5 standard, which included comparable requirements, was introduced in 2009. Previously, manufacturers had relied on proprietary systems to control access to their systems. PassThru provides an API that allows both vehicle manufacturers and other companies to develop diagnostic software. Additionally, hardware is provided that connects to the vehicle via an OBD2 connector (SAE J1962). The method of connecting the diagnostic device (VCI) to the diagnostic PC (e.g., USB, RS232, or Ethernet) is determined by the PassThru API manufacturer. Windows is the required operating system.
Users of PassThru-compatible diagnostic software can now select and use any PassThru device available on the market. Both K-Line and CAN bus are supported, as are current protocols such as KWP2000, UDS, and RAW CAN.
The following protocols should be supported:
- ISO9141
- ISO 14230-4 (KWP2000)
- SAE J1850 41.6 KBPS PWM (PULSE WIDTH MODULATION)
- SAE J1850 10.4 KBPS VPW (VARIABLE PULSE WIDTH)
- CAN
- ISO 15765-4 (CAN)
- SAE J2610 DAIMLERCHRYSLER SCI
Overview
The following diagram shows a simplified workflow of how an application uses PassThru:

Unlike RP 1210, PassThru performs a plausibility check on the message format. With PassThru, too, the responsibility for preparing the data in a format compatible with the protocol lies with the application.
The API offers the following functions:
| Function | Description |
|---|---|
| PassThruOpen | Establishing a connection to the PassThru device. |
| PassThruClose | Terminating the connection to the PassThru device. |
| PassThruConnect | Establishing a connection to a protocol channel. |
| PassThruDisconnect | Terminating the connection to the protocol channel. |
| PassThruReadMsgs | Reads messages from the protocol channel. |
| PassThruWriteMsgs | Writes messages to the protocol channel. |
| PassThruStartPeriodicMsg | Starts the periodic transmission of a message on the protocol channel at a specified time interval. |
| PassThruStopPeriodicMsg | Stops the periodic sending of a message. |
| PassThruStartMsgFilter | Starts filtering of incoming messages on the protocol channel. |
| PassThruStopMsgFilter | Stops the filtering of incoming messages on the protocol channel. |
| PassThruSetProgrammingVoltage | Sets the programming voltage for a specific pin. |
| PassThruReadVersion | Reads the version information of the PassThru DLL and API. |
| PassThruGetLastError | Returns the description of the most recently occurred error. |
| PassThruIoctl | General I/O control function for reading and writing protocol configuration parameters (e.g., initialization, baud rates, programming voltage, etc.) |
Version 04.04 introduced the PassThruOpen and PassThruClose functions and expanded the parameters of other functions. For instance, the DeviceID—returned by PassThruOpen and used to distinguish between multiple VCIs during parallel operation—has been added.
Features
- It is the task of the client application to assign the messages to the corresponding control units.
- Pure C API with 12 functions
- Error Handling by Evaluating Return Values (No Exceptions)
- Specified primarily for Windows
Integration into an Application
In theory, it does not matter which PassThru device is selected. In practice, however, the range of functions and supported protocols may vary. It is also possible to install and use multiple devices simultaneously; the software is registered in the Windows Registry, allowing it to be selected and used by the diagnostic software.

With version 5.0 of the specification, PassThru also provides for the use of DoIP.
