obd circuit tips
home products ordering help
links

users

The following tips are a result of the many technical support questions that have been asked about using our OBD Interpreters. If you are having trouble, then there is likely an answer here. Note that this section deals with OBD related help only - be sure to also see our help > construction tips section for general circuit help.


Components & Design Choices
Circuit Boards
Parts
Connectivity - RS232, Bluetooth, etc.

Testing & Troubleshooting
Initial Tests
Connecting to a PC
Talking to a Vehicle

Understanding OBD
Protocol Details
OBD Responses

the ELM327
Version History
Commands and Responses
Protocols
Other bits


Components & Design Choices



Circuit Boards
Where can I buy a circuit board for my ELM IC?
Elm Electronics does not sell any circuit boards, but several vendors do offer boards and kits. You may find one from the links on our OBD links page, or possibly prefer to make your own.
If making your own pcb, we can help get you started for the ELM327 only. We've posted some of the design information for our (3"x4" single-sided) demonstration board that was used for beta testing:

Demo Printed Circuit Board Picture

ELM327 Demonstration Board


Here are the supporting files for you to download: You are free to use these files as you wish, but Elm Electronics Inc. makes no claims, and offers no guarantees as to the circuits' performance.

Parts
I can not find a 0.3" wide 28 pin socket. Can you help?
Why not use two 14 pin sockets, end-to-end? Many brands can be connected this way, will work fine, and are likely a lot less expensive than a 28 pin one.

My OBD cable uses pin 2 for common, but I see that your demo board uses pin 1. Is that OK?
Yes - the demonstration board was only created for testing the IC, and was not meant to cover all situations. We used cables from OBD2Cables.com for our testing, but you may obtain your cables from anywhere (and modify the board connections to suit). Perhaps you may wish to use both pins 1 and 2 of the connector for your circuit common.

Where do I get a male J1962 connector?
This is difficult as they are not that easily found. Have you tried OBD2AllInOne? They carry components for you to assemble your own, as does OBD2Cables.
For complete cables, you may wish to try OBD2Cables, ScanTool.net, B&B Electronics, and Multiplex Engineering. There are others - just Search the web for J1962 OBD cable vendors.

Your other OBD ICs use a 3.58 MHz crystal. Can I use that frequency for the ELM327 as well?
No, and do not use a 4.096 MHz crystal either, as the frequency error is too great for the protocol timing. The ELM327 must use a 4.000 MHz crystal, as shown in the data sheet.

Do I have to use a Microchip MCP2551 transceiver chip with the ELM327?
No - a CAN transceiver is a very common product that most of the major IC manufacturers make - you can choose as you like. To get you started, have a look at the 82C251 from Philips, the SN65LBC031 from Texas Instruments, and the LT1796 from Linear Technology. We only show the Microchip MCP2551 as one possible example.

Connectivity - RS232, Bluetooth, etc.
Can I use a MAX232 IC for the RS232 interface?
Yes, it can be used but you need to be aware that the RS232 Rx inputs on the ELM320, ELM322, and ELM323 are inverted from what they should be (for a standard interface). This means that the Rx input needs to have an inverter connected in series for the levels to be correct. One of the RS232 drivers inside the Maxim interface IC can be used for this, as shown here:

max232

Note that the ELM327 does not need to have its Rx input inverted, as it uses standard (high at idle) levels. If you wish to use a MAX232 with the ELM327, simply connect the IC as follows:

max232


I would like to connect directly to my microprocessor. Can I do that?
Sure. You don't need the RS232 voltage levels to transfer data if it is going to another circuit on your board. RS232 voltages are really for going longer distances.
The RS232 Receive inputs on the ELM320, 322, and 323 are inverted from what they should be (for a standard RS232 interface), so to correct for that you need to add another inverter. If you have a spare one on your circuit board, then use it. If you do not have an inverter, you can make one. A simple circuit such as this will work well:

RS232 Inverter

This one transistor circuit is placed between your microprocessor transmit output, and the ELM IC's receive input to invert the signal for you. Your microprocessor receive input can be connected directly to the ELM's transmit, and your RS232 is all set. Note that the circuits must all be powered by the same supply (so that you don't try to backfeed through the protection diodes).
The ELM327 does not need to have its' Rx input inverted, as it uses conventional levels at both of the RS232 pins - see the 'Microprocessor Interfaces' section of the ELM327 data sheet for more information.

I want to use my PDA to talk to my vehicle, how do I do this?
Some PDAs can be used - the biggest problem is in finding one that has a serial interface. If it has only USB, it can not be used unless it is capable of USB OTG (on the go).
We can't possibly provide advice on all of the devices out there, but we can get you started by showing how to use some of the very popular Palm series of handhelds.
Many of the early Palm models (M100, etc.) used a serial port connection for HotSyncing. You can use the HotSync cable that was supplied with these Palms to talk to your vehicle.
Newer Palms (Tungstens, etc) use a USB connection for HotSyncing. What to do with them? Well, it turns out that many of them have both USB and RS232 available at their 16 pin "Universal Connector". For these devices, you will only need to purchase Palm's "HotSync Cable-Serial" (part number P10804U). When you connect this cable, you will then have a standard looking 9 pin (F) connector coming from your Palm.
Now that you have this 9 pin (F) connector coming from your Palm, you need to connect to it. This is not as difficult as many would think, as Palm has followed convention so that their devices can be easily connected to any PC. They have made the connection so that the Palm appears as a modem (DCE) device. The ELM IC is expecting to be talking to a PC however, so in order change how the Palm appears, you will need to reverse the wires to it.
This is done by either putting a "null modem" cable between your ELM IC and your PDA, or by using a standard cable and a "null modem adapter" at one end of the cable. If you wish to make your own "null modem" cable, it's not very difficult. All that you really need is:

null modem
Null Modem Cable

Having made the connection, you will now need software. There are several terminal programs available for the Palm - take your pick. We use the free and very stable "ptelnet" here at ELM. It will log your sessions to a memo, and the one really good feature that we enjoy is its ability to assign macros (up to 12) to menu items so you don't need to remember those commands. Here a few macros that we use:
RS232 macros

Don't forget to turn the serial port on and off using the 'On' box in the bottom left corner of the screen. It seems that some of the earlier models needed the port turned on and off manually, and if left on, they would continue to use battery power even if the Palm was off. We think that Márcio Migueletto de Andrade has provided a nice product here. If you think so too, don't forget to tell him.

I would like to connect to my ELM327 circuit using Bluetooth. Can this be done?
Certainly. We actually prefer to use Bluetooth for connections - either using a directly connected 3.3V module (an LMX9838 from National Semiconductor), or with our GBS301 Serial Adapter (from IOGEAR). For more information on using these, see our Application Note 'AN04 - ELM327 and Bluetooth'.


Testing & Troubleshooting



Initial Tests
I'd prefer to not connect my OBD board to my vehicle for initial testing. Can I test it on the bench?
Certainly. We find that a 9V 'transistor radio' battery works very well. Besides being small and convenient, this type of battery will limit the current available (which is what you want for testing). Try not to use car batteries or power supplies that do not have current limiting until you are sure that your circuit has no wiring problems.

My circuit doesn't work, and I'm not sure where to start troubleshooting. Is there anything with typical voltages on it that I can use to narrow down the location of the problem?
If you are working with the ELM327, have you seen the Application Note 'AN02 - ELM327 Circuit Construction'? It provides help with building an ELM327 circuit, and provides schematics with typical voltages shown on them.
We do not have anything similar for the other chips at this time, but the next section (Connecting to a PC) does have some typical voltages for the RS232 circuitry.

My ELM327 circuit is acting strangely. All I have connected is the ISO 9141 circuitry, and I've checked the wiring many times. Is the chip bad? What next?
All of the ELM ICs are made with a process called CMOS. These are great low-power and fast devices, but one of the problems with CMOS is that it will not tolerate a 'floating' input. That is, all inputs must be either directly connected to either the positive supply or circuit common, or they must be connected ('terminated') through a resistor. If you do not do this, very unpredictable things can happen, and you might possibly damage the chip.
It sounds like you may have a floating input. Check all of your pin connections to be sure that every input is terminated. (Pins designated as outputs can be left open-circuited.)

I can see pulses going out and in, but the ELM IC says NO DATA.
The bit timing is very critical, particularly with the ELM320 as it operates at a higher speed. By adding test equipment, you are adding extra capacitance that changes the pulses (one edge of the pulse depends on a resistor to provide decay so adding C increases the R-C time constant). Remove your test equipment to ensure that everything's working properly, before trying to measure and analyze what is happening.

I've removed my test equipment, but the ELM IC still says NO DATA.
Not all requests are supported by every vehicle. Yours may not have data to give, or was never designed to respond to this PID (or SID). If you are sure that the vehicle should be responding to this request, then check that the ELM IC's timeout has not been set too short. Try issuing a AT ST FF command so the chip waits a full second before declaring there is no data available. Maybe your ECU just has higher priority things to attend to, and it is taking longer for it to answer you.

I can see pulses going out, and my car still won't talk to me. What next?
There can be many reasons for your problem. Consider these:

Connecting to a PC
I've connected the RS232 but get nothing from my ELM IC. What should I do now?
All of the ELM OBD chips will power up and then send a message saying its device name and the version number. Before even trying to control something with your ELM IC, you need to see this message.
Some of the ELM RS232 Example Applications show RS232 connections for an older style 25 pin connector. This connection was very common for external modems and other computer peripherals, but is now almost extinct. Be sure that you are using the correct pinouts for the type of connector that you are using. Here is a pin cross-reference for you:

FunctionDB25DB9
Transmit Data (from PC)23
Receive Data (to PC)32
Request to Send (from PC)47
Clear to Send (to PC)58
DCE Ready (to PC)66
Signal Ground 75
Data Carrier Detect (to PC)81
DTE Ready (from PC)204
Ring Indicator (to PC)229

If you are sure that you have connected the correct pins (there should be a tiny little number beside the pins), then perhaps you have a component problem. The following shows the typical voltages that you should see in your ELM320, ELM322, or ELM323 circuit - simply compare them to what you measure:

ELM RS232 interface voltages

The Example Application for the ELM327 shows a slightly different circuit. Here are typical voltages that you might measure with the ELM327 circuit:

ELM327 wires

If you have a multimeter available (you should if you're building an electronic circuit) then connect it with the negative lead to circuit common and probe around this circuit. The typical voltages that you would expect (if all connections are correct) are shown in red in the above diagrams. Don't worry if your voltage is a little different as each computer is a little different - it is the relative magnitude and the polarity of the voltage that is important. Any significant differences need to be checked, as the different voltage might be caused by a component problem.

Several people have pointed out that for the ELM320, ELM322, and ELM323, the Rx pin actually sits at a negative voltage. Since voltages less than Vss are not recommended for an IC, people were worried that damage might result. Actually, it is not recommended if there is no means of limiting the current through the input pin (as it could cause a problem known as 'latchup'). In this case a large series resistor limits the current to a safe level, so the -0.5V measured is quite acceptable.


I've connected the RS232 but get random characters from my ELM IC. What should I do now?
Random characters almost certainly mean that ELM device and the terminal software are not set to the same baud rate. All of our OBD products power up and transmit a message like this:

ELM327 v1.3a

>
If your terminal software baud rate is set too low, you will see a shorter message, typically like this:
å°¸
and if your terminal software baud rate is set too high, the message will appear longer than it should, typically like this:
xÄxxÄxxxÄx-ÄxÄÄÄÄÄ--ÄÄÄ-xÄÄx ÄÄÄxx-ÄxxÄxÄÄ
The ELM ICs normally use 9600 baud or 38400 baud, so if you have set your software to one of these, then try the other.


I see the powerup message, but I get nothing when I send commands.
There are two types of commands - internal and OBD. Send an internal command (try AT E1) and make sure you receive an 'OK' in response.
If you do not, there may be a few reasons:

I have built the circuit, and am testing it on an Ozen Elektronik ISO 9142 ECU simulator. All I get is 'UNABLE TO CONNECT' - why?
You must have an ELM327 v1.3a or older. When searching, the ELM327 looks to see what inputs are active, if any. If none are active, it tries protocol 5 (KWP fast) first, then looks for others if that fails. It turns out that the Ozen simulator needs about 2 seconds after one of these attempts before it is able to respond to others.
In order to connect to the Ozen simulator, either add time (make PP13 > BC) or use an ELM327 v1.4b IC.

Talking to a Vehicle
What software do I need in order to talk to my ELM IC?
All of our ELM OBD Interpreter ICs that have interfaces 'talk' in plain ASCII. This means that virtually any terminal program can be used with them, and no special software is required (but you may want to add your own, in order to provide a more 'user-friendly' interface).
Here are some examples of terminal programs:

Macintosh

Windows 95, 98, XP

Windows Vista

Windows CE

Palm



I'd prefer a graphic interface. Is that type at software available?
Yes, many organizations have created software for the ELM OBD ICs. Some provide it at no cost, while others charge only a moderate fee. See our OBD links page for a list.

Every time I use certain free software, I need to reset my OBD chip before it will accept commands. Why?
You should not have to reset the IC. Some software turns the character echo off, and leaves it that way on exit. Try sending AT E1 to turn the echo back on instead of resetting everything.

The received data keeps overwriting on itself. What is wrong?
Your ELM chip is not generating linefeeds after carriage returns. Either set your ELM chip to provide linefeeds (AT L1) or set your terminal software to automatically add linefeeds after each carriage return (some software calls this 'Append line feeds to incoming line ends').

Can I use my ELM32x software with the ELM327?
In general, no. You may have some success depending on what type of vehicle that you use the IC with, but as soon as you begin talking to a CAN vehicle, most of the older packages will 'break'. Many of the software companies are working hard to update their software though, and should be ready soon.
Terminal programs such as HyperTerm, ZTerm, etc. still work fine with all of our RS232 products - they need no changes to work with the ELM327.

Can I use my ELM323 or ELM327 with VAG-COM software?
No, we do not currently support the VAG interface.

I have a scan tool that is connected to a vehicle, and I wish to monitor the data flow with an ELM. As soon as I connect my ELM circuit in parallel, I begin seeing errors. Why?
One reason might be a wiring problem in your ELM circuit. Assuming that there is none, are you trying to monitor either the ISO9141-2 or the KWP (ISO14230-4) protocols?
If so, you may be placing too big a load on the data bus circuit. These protocols were only designed for one scan tool at a time, each with a 510 ohm resistor inside. By connecting two, you have doubled the loading by effectively connecting a 265 ohm resistor in the circuit.
We advise that if connecting your ELM327 or ELM323 like this, you replace both the 510 ohm resistors in the ELM circuit with 10K ohm resistors. You do not have to modify any of the other circuits (just leave them as they are.)

My ELM323 starts to initialize the bus, then aborts!
If you have set linefeeds off in the ELM323, but have them on in the computer software, you may be inadvertently causing this problem. In this case, every command you send to the ELM323 will be followed by both a carriage return character and then a linefeed character. When the ELM323 receives the carriage return character, it immediately begins executing your command (since linefeeds are off, it doesn't wait for any more characters). When the linefeed character does eventually arrive, it is interpreted as an interrupt (any received character will stop a command in progress) and the ELM323 will abort whatever action was in progress.
Often the display looks like this:
>01 00
BUS INIT: ...

>
The solution is to either turn on the linefeeds in the ELM chip (AT L1), or to turn off the linefeeds that are being generated when your computer sends commands. In HyperTerm, the option is something like "send line ends with line feeds", while in Zterm it is "auto line feed".
Similar problems can occur with the other ELM chips too, if you are not consistent with your settings. When weird things are happening, check your settings to make sure both the ELM chip and your computer/PDA are set the same way.


Understanding OBD



Protocol Details
Where can I obtain lists of vehicle modes and PIDs?
These are described by SAE (Society of Automotive Engineers, Inc.) standards J1979 (E/E Diagnostic Test Modes) and J2190 (Enhanced E/E Diagnostic Test Modes). Copies of these can be purchased from the SAE web site.

What is an In-Frame Response?
They are reply bytes that are sent during a message, usually as an acknowledgement of data received, or as a short reply to a request. They occur during specific time slots within the data frame, so are given the In-Frame name. The ELM320 always sends a single response byte, while the ELM322 and the ELM323 never do, and the ELM327 will send one if the header says that it is required.

OBD Responses
How can I obtain updates at a faster rate?
There is a chance that you may not be able to, as several factors (not just the ELM interface) all work together to set the data rate. Occasionally, the vehicle's ECU is the limiting factor, but it is often the OBD standards that actually limit the maximum polling rate (so that you do not overburden the ECU). The early standards required that scan tools not request information more often than every 100msec.
If you aren't happy with the present data rate, then here are some tips that may help:

How do I convert the Hex numbers for trouble codes to decimal?
You don't. The responses should be read directly as received, without manipulating. At least this applies to the ones that begin with a '0' or a '1'. For the others, you'll have to refer to the data sheet (as the first digit does double duty in those cases).

Here is an example conversation with one vehicle:
ELM320 v2.0

>01 01
41 01 81 07 65 00

>02 00 00
42 00 00 7E 18 00 00

>03
43 01 33 00 00 00 00

>04
44

>
After asking for the trouble codes (the '03'), a '43' (response from an '03') is received followed by three trouble codes, which are combined into pairs giving 0133 0000 and 0000. The 0133 is what you want, and you read it directly without any need for a hex conversion. The 0000's are just filler bytes and should be ignored.

Note that the '04' that was sent actually cleared the trouble code, and reset the check engine light. This should never be done until the problem that caused the code has been repaired.

Why do I get DATA ERRORs when in the Monitor All mode?
Some vehicles use a single byte header format for a few of their messages, to keep transmission times down and allow for the rapid updating of information. The ELM ICs follow the OBD standards however, and always expect a three byte header, one or more data bytes, and a checksum byte. If a received message does not appear to follow the OBD standard, it will be deemed to be in error, and the DATA ERROR message will be shown. If the headers are off, you may not see any data at all.
If you would like to see the complete message as received, try using the AT H1 command to show the extra bytes. With the headers on, the IC will not try to remove four bytes from it, and if the message is less than four bytes long, it will be displayed properly.


the ELM327



Version History
Do you offer a 'version history' or list of 'release notes' for the ELM327?
No, not a list of every change and fix. We do provide a list of the AT Commands and Programmable Parameters for each version, though (see the next question), and we provide the following outline:


v1.0
    - Supports:
        SAE J1850 PWM and VPW,
        ISO 9141-2 (10.4 and 9.6 kbps),
        ISO 14230-4 (10.4 and 9.6 kbps)
        as well as ISO 15765-4 CAN (250 and 500 kbps)
    - RS232 baud rates are only 9.6 or 38.4 kbps


v1.0a
    - J1850 VPW timing adjustment for some '99 - '00 GM trucks.


v1.1

    - Introduced Programmable Parameters
    - Added Flow Control commands


v1.2
    - RS232 baud rates are adjustable to 500 kbps
    - Programmable Parameters can be reset with a jumper
    - Introduced Adaptive Timing
    - Added SAE J1939 support (protocol A)
    - Added user defined CAN protocols B and C
    - Modified KWP protocols to allow four byte headers


v1.2a
    - Changed error detection to catch KWP 4 byte headers if no data or checksum
    - Added check to prevent CAN mask corruption on certain Flow Control sends


v1.3
    - Adaptive Timing tuned a little differently
    - Several J1939 improvements
    - New CAN CRA commands to help setting masks and filters
    - New CAN D0/D1 commands for printing of message dlc
    - New CAN RTR command for sending same
    - Added space character control in responses
    - New STOPPED message for user interrupts during searches
    - Introduced LV RESET message for resets from low voltage
    - New @2 and @3 commands for storing of unique identifier
    - Added ability to state the number of responses desired


v1.3a  (still available)
    - Added wiring checks for when the J1962 CAN pins are used for other functions


v1.4
    - Added Low Power mode ('sleep' function)
    - Added extended addressing mode for CAN protocols
    - Added 4800 baud ISO 9141 and ISO 14230 support
    - Allow manual control over ISO 9141 and ISO 14230 initiation
    - Provided a single EEPROM byte for user data storage
    - All interrupts now say STOPPED (not just when searching)
    - Many new Programmable Parameters and additions


v1.4a
    There was none


v1.4b  (still available)
    - New CSM command to have active or passive CAN monitoring
    - New CRA command to quickly reset changed masks and filters
    - Several SAE J1939 updates


v2.0
    - New Activity Monitor watches OBD pins
    - Wake from Low Power now retains settings
    - AT CRAs accept 'don't care's (X's)
    - New PP's provide extensive ISO/KWP control
    - Increased the RS232 Tx buffer to 512 bytes
    - Brownout reset voltage reduced to 2.8V


v2.1
    - Speed increases
    - Processes 'Response Pending' (7F xx 78) replies
    - CAN searches now measure frequency and require a match



Commands and Responses
What AT commands does each version of the ELM327 support?
The ELM327 has evolved over time. With each update, we have tried to add features that have been requested, and so with each update, the list has grown. The 'Version History' section of the latest data sheet lists the changes, but we also provide them here in a slightly different format.

Here is a table showing the AT commands:

    and one with the Programmable Parameters:

How do I use the AT WS command with the ELM327?
The Warm Start command is used exactly like the 'AT Z' command that is used to reset our other ICs. It is considerably faster than the 'AT Z' command, as it bypasses the LED test sequence (it does refresh everything else, however).

I have heard that the 'AT SP 0' command is not recommended. Why?
There is nothing wrong with the 'AT SP 0' command, but there may be a better way to search for protocols if you are creating a software interface.
Telling the ELM327 to use protocol 0 is an easy way to enable automatic protocol searching, when you do not know what protocol to use. Although the ELM327 is very fast (and intelligent) in its searches, you don't want to go through a slow 5 baud initiation if you don't have to.
As a way to improve on the search speed, you might take advantage of the fact that many users will often be needing the same protocol that they used last. Why not try that last-used protocol first, and then allow searching if that protocol doesn't respond?
That is, rather than 'erasing' the last used protocol with an 'AT SP 0' at the start of your routine, first perform an 'AT DP' or 'AT DPN' to see if the ELM327 is set for automatic searching, should the memorized protocol fail to connect. If it is, then do not send an AT SP 0, as a failure to connect (with the last-used protocol) will result in an automatic search anyway. If the 'AT DP' or 'AT DPN' told you it was not in automatic search on fail mode, then still allow the ELM327 to try. Then if it fails to connect, use 'AT SP 0' and repeat the request again.

I have updated to the ELM327 v1.3a, and am suddenly seeing 'LV RESET's. What are these?
The ELM327 monitors the 5V supply for what is known as 'brown-out's, or low voltage conditions. If the voltage should drop below a minimum value, a low voltage reset is initiated to protect against possible random behaviour, and the IC will print the 'LV RESET' message. Prior to version 1.3, the ELM327 still responded to voltage brown-outs with a reset, but you would only see the startup message and not the more descriptive LV RESET message.
For more information, refer to the AN03 - ELM327 Low Voltage Resets Application Note.

Why do I occasionally get BUS ERRORs with the ELM327?
Some of the OBD standards allow for a special pulse to force a 'break' in activity (essentially a reset). While our previous OBD ICs tolerated excessively long pulses, the ELM327 actually measures the length and reports if one is found to be too long. For example, the J1850 VPW standard says that the pulse should be less that 5msec long, but many vehicles produce pulses of several hundred milliseconds in length during an engine start. These long pulses will be reported as a BUS ERROR.
In general, these will not affect the operation of your interface, but it could possibly cause an initiation to be aborted if it occurs at the wrong time, or it could be displayed in the middle of a stream of data from a 'Monitor All' command. If this continues to be a problem for you, consider turning it off using Programmable Parameter #11.

Is there a way to know if a connection is still active?
Occasionally, designers ask if there is an internal state variable, or perhaps an output that we can enable to show if a connection to the ECU is valid or not. They want a more robust system, should a wire come loose, or the ignition be turned off during a session.
The short answer is no. We do not provide a signal such as this, but you can detect the condition yourself. Simply add a few checks in your code:
- Note when you have made a connection to the ECU. All OBDII protocols must support the 01 00 request, so use that as your first query. If you get a valid response, carry on. If you do not, then maybe you don't have an OBDII system, and want to handle that in some way.
- Make your queries as you normally would.
- Look for responses of 'NO DATA' to one of your requests. If you receive a 'NO DATA' and are sure that the ECU should have responded to this request (ie it was responding previously), then there could be two reasons for it. The first is that the ECU may simply have been too busy, and requires more time to answer. The second is that the 'connection' may have been lost.
At this point, we would advise sending the request again. If you still get a 'NO DATA' response, then send an 01 00 request (you know it worked before, so it should now). If that fails, try it one more time with the timeout set at the maximum (AT ST FF). If there is still no response, then you have lost your connection.
If a connection is lost, you will need to tell the ELM327 to 'close' the current connection, with a Protocol Close command (AT PC). This will ensure that the ELM327 starts from the beginning when the next request is made. This is particularly important for the ISO 9141 and ISO 14230 protocols, as they need a special initiation sequence.
You now know what the problem is, and can simply handle it as is appropriate.

Protocols
How do I use the ELM327 with J1939 CAN? It keeps saying UNABLE TO CONNECT!
The J1939 protocol is not normally part of the automatic search group, unless you have changed the value of PP 07. If you are experimenting, the best way to enable protocol A is to use the Set Protocol command (ie AT SP A). When you are finished, simply restore normal OBD operation with an AT SP 0. Note that J1939 is only available with version 1.2 or newer ICs.

I know that my vehicle uses the ISO 9141 (or ISO 14230) protocol, but the ELM327 always says UNABLE TO CONNECT. What I can do?
We've found that the data signal from some vehicles is at a slightly lower voltage than others. The signal isn't always seen by the ELM327, making many responses appear as errors. To boost the signal slightly, we recommend that you try changing resistor R21 to 33K ohms:

Change R21 to 33K

Part of Figure 9 (from the ELM327 data sheet)



I know that my vehicle uses the ISO 9141-2 protocol, I've changed R21, but the ELM327 still says UNABLE TO CONNECT. Is there something else that I can do?
There may be. Some ISO 9141 vehicles become confused if they see an attempt at a fast initialization, and then a slow initialization too quickly afterwards. This happens with very few vehicles, but yours might be one of them.
You can add a little delay between the protocol attempts by increasing the value of PP 13. We realize that PP 13 isn't really for this purpose, but it works.
From a terminal program, simply enter the following commands:

>at pp 13 sv C0
OK

>at pp 13 on
OK

You will only have to do this one time, as it changes the EEPROM settings internally (and they keep their values, even if the power goes off). When we release the next version of the ELM327 (ie v1.4), it will have a proper programmable parameter just for this purpose.

Is it possible to use the ELM327 with CAN that is not OBDII?
Yes. The ELM327 is able to be configured for many different types of CAN protocols, with baud rates from 8 to 500 kbps. The CAN physical interface is common across all implementations, so connecting to the data bus should not be a problem if you have used the recommended circuit in the data sheet. (That circuit does not use a terminating resistor, which could cause problems if your network already had two.)
Protocols B and C are already set for default rates of 125Kbps and 50Kbps, respectively. This means that If you wish to experiment with a 125Kbps system, you may only need to issue the command AT SP B, and the ELM327 may be all set for you. By default, protocol B will transmit 11 bit IDs and receive both 11 and 29 bit IDs, but you may want to adjust this with PP2C.
Changing baud rates for protocols B and C requires writing to the Programmable Parameter memory, which is a two step process, requiring that the value be written, and then that the value be enabled. For example, to change protocol C to 83.3Kbps would require the following steps:

>at pp 2f sv 06
OK

>at pp 2f on
OK

From that point on, you could simply use AT SP C, whenever you wanted to connect to an 83.3Kbps CAN system. You need only do the above steps once, as Programmable Parameters are stored in EEPROM (which retains values even with power off).


Other bits
Does the ELM327 support 1-wire CAN?
No, 1-wire CAN (SAE J2411) is not currently supported by the ELM327.

Does the ELM327 support J2534 Pass-Thru Programming?
No, the ELM327 is only for obtaining information from vehicles and does not support any type of ECU programming.

Are you planning to introduce a USB version of the ELM327?
No. There is a large demand for USB, but there is also a large demand for direct connections to microprocessors, for Bluetooth interfaces, and also some interest in serial to ethernet connections. RS232 remains a common protocol for all of these, not USB.
Have you tried a USB to RS232 cable, such as the Keyspan model USA-19HS? We find it quite good, and it's usable to 230K baud.
Have you perhaps considered permanently wiring an RS232 to USB converter IC into your circuit? Devices such as the FT232BM by FTDI have a good reputation for applications such as this.
Two other chips that look quite interesting are the CP2102 and the CP2103 from Silicon Laboratories (look under Microcontrollers). These do not require an external crystal, and they even have an internal EEPROM for customizing the interface. See the latest ELM327 datasheet for an example circuit showing how to connect a CP2102 to an ELM327 IC (see Figure 11).
If you are interested in using a Bluetooth interface, have a look at our 'AN04 - ELM327 and Bluetooth' Application Note.





help  > obd  > circuit tips

©2014 Elm Electronics