Specifications

Talking to the Vehicle
The ELM323 cannot be directly connected to a
vehicle as it is, but needs support circuitry as shown in
the Example Applications section. Once incorporated
into such a circuit, one need only use a terminal
program to send bytes to and receive them from the
vehicle via the ELM323.
SAE standards specify that each group of bytes
sent to the vehicle must adhere to a set format. The
first byte (known as the ‘mode’) always describes the
type of data being requested, while the second, third,
etc. bytes specify the actual information required
(given by a ‘parameter identification’ or PID number).
The modes and PIDs are described in detail in the
SAE document J1979 (ISO 15031-5), and may also be
expanded on by the vehicle manufacturers.
Normally, one is only concerned with the nine
diagnostic test modes described by J1979 (although
there is provision for more). All of these modes are not
required to be supported by every vehicle, and are
often not. These are the nine modes:
01 : show current data
02 : show freeze frame data
03 : show diagnostic trouble codes
04 : clear trouble codes and stored values
05 : test results, oxygen sensors
06 : test results, non-continuously monitored
07 : test results, continuously monitored
08 : special control mode
09 : request vehicle information
Within each mode, PID 00 is normally reserved to
show which PIDs are supported by that mode. Mode
01, PID 00 must be supported by all vehicles, and can
be accessed as follows:
Ensure that the ELM323 is properly connected to
your vehicle, and powered. Most vehicles will not
respond without the ignition key in the ON position, so
turn the ignition on, but do not start the vehicle. At the
prompt, issue the mode 01 PID 00 command:
>01 00
The first time the bus is accessed, you will see a
bus initialization message, and then the response,
which might typically be as follows:
41 00 BE 1F B8 10
The 41 00 signifies a response (4) from a mode 1
request with PID 00 (a mode 2, PID 00 request is
answered with a 42 00, etc.). The next four bytes (BE,
1F, B8, and 10) represent the requested data, in this
case a bit pattern showing the PIDs supported by this
mode (1=supported, 0=not). Although this information
is not very useful for the casual user, it does prove that
the connection is working.
Another example requests the current engine
coolant temperature (ECT). This is PID 05 in mode 01,
and can be requested as follows:
>01 05
The response will be of the form:
41 05 7B
This shows a mode 1 response (41) from PID 05,
with value 7B. Converting the hexadecimal 7B to
decimal, one gets 7 x 16 + 11 = 123. This represents
the current temperature in degrees Celsius, but the
zero value is offset to allow for subzero temperatures.
To convert to the actual coolant temperature, simply
subtract 40. In this case, then, the coolant temperature
is 123 - 40 = 83 degrees C.
A final example shows a request for the OBD
requirements to which this vehicle was designed. This
is PID 1C of mode 01, so at the prompt, type:
>01 1C
A typical response would be:
41 1C 01
The returned value (01) shows that this vehicle
conforms to OBDII (California ARB) standards. Some
of the defined responses are :
01 : OBDII (California ARB)
02 : OBD (Federal EPA)
03 : OBD and OBDII
04 : OBD I
05 : not intended to meet any OBD requirements
06 : EOBD (Europe)
Some modes may provide multi-line responses
(09, if supported, can display the vehicle’s serial
number). The ELM323 will attempt to display all
responses in these cases, but only if it is allowed
sufficient time to process each. There may be
occasions when the vehicle sends information too
rapidly and some intermediate lines are lost.
Hopefully this has shown how typical requests
proceed. It has not been meant to be a definitive guide
on modes and PIDs – this information can be obtained
from the manufacturer of your vehicle, from the SAE
(www.sae.org), ISO (www.iso.org), or from various
other sources on the web.
11 of 19ELM323DSD Elm Electronics – Circuits for the Hobbyist
< http://www.elmelectronics.com/ >
ELM323