
32 of 83
ELM329
ELM329DSC
Elm Electronics – Circuits for the Hobbyist
www.elmelectronics.com
Selecting Protocols
The ELM329 supports several different OBD
protocols (see Figure 2, at right). This is a little
misleading however, as the ELM329 only provides
very minimal support for protocols 1 to 5 - they are
only included so that most ELM327 software will still
work with the ELM329.
The ELM329 really only provides support for CAN
protocols 6 to F. You may never need to actually
select one of these, since the factory settings cause
an automatic search to be performed for you, and the
protocol is activated if it seems appropriate. If
experimenting, you may wish to be able to select a
protocol, however.
For example, if you know that your vehicle uses
the CAN (ISO 15765-4) standard, with an 11 bit ID and
a rate of 500kbps (i.e. protocol 6), then you may want
the ELM329 to use only that one, and no others. If that
is what you want, simply use the ‘Set Protocol’ AT
Command as follows:
>AT SP 6
OK
From that point on, the default protocol (used after
every power-up or AT D command) will be protocol 6
(or whichever one that you have chosen). Verify this
by asking the ELM329 to describe the protocol:
>AT DP
ISO 15765-4 (CAN 11/500)
Now what happens if your friend has a vehicle that
uses a different baud rate? How do you now use the
ELM329 interface for that vehicle, if it is set for your
car?
One possibility is to change your protocol selection
to allow for the automatic searching for another
protocol, on failure of the current one. This is done by
putting an ‘A’ before the protocol number, as follows:
>AT SP A6
OK
>AT DP
AUTO, ISO 15765-4 (CAN 11/500)
Now, the ELM329 will try protocol 6, but will then
automatically begin searching for another protocol
should the attempt to connect with protocol 6 fail (as
might happen when you try to connect to your friend’s
vehicle).
The Set Protocol commands cause an immediate
write to the internal EEPROM, before even attempting
to connect to the vehicle. This write is time-consuming,
affects the setting for the next powerup, and may not
actually be appropriate, if the protocol selected is not
correct for the vehicle. To allow a test before a write
occurs, the ELM329 offers one other command - the
Try Protocol (TP) command.
Try Protocol is very similar to Set Protocol. It is
used in exactly the same way as the AT SP command,
the only difference being that a write to internal
memory will only occur after a valid protocol is found,
and only if the memory function is enabled (see AT
M0/M1). For the previous example, all that needs to be
sent is:
>AT TP A6
OK
Many times, it is very difficult to even guess at a
protocol to try first. In these cases, it is best to simply
let the ELM329 decide what to use. This is done by
telling it to use protocol 0 (with either the SP or the TP
commands).
To have the ELM329 automatically search for a
Figure 2. ELM329 Protocol Numbers
Description
SAE J1850 PWM (41.6 kbaud)
Protocol
0
1
2
3
4
5
6
7
8
9
Automatic
SAE J1850 VPW (10.4 kbaud)
ISO 9141-2 (5 baud init)
ISO 14230-4 KWP (5 baud init)
ISO 14230-4 KWP (fast init)
ISO 15765-4 CAN (11 bit ID, 500 kbaud)
ISO 15765-4 CAN (29 bit ID, 500 kbaud)
ISO 15765-4 CAN (11 bit ID, 250 kbaud)
ISO 15765-4 CAN (29 bit ID, 250 kbaud)
A
B
C
SAE J1939 CAN (29 bit ID, 250* kbaud)
User1 CAN (11* bit ID, 125* kbaud)
User2 CAN (11* bit ID, 50* kbaud)
*user adjustable
D
E
F
SAE J1939* CAN (29* bit ID, 500* kbaud)
User4 CAN (11* bit ID, 95.2* kbaud)
User5 CAN (11* bit ID, 33.3* kbaud)