Page 1 of 1

Communication with the ECU via the OBDII connection

PostPosted: Mon Apr 04, 2011 9:08 am
by wfarid
Hi there,

So, the OBDII connector communicates with the Engine Control Unit (ECU). Depending on the make of the car, the communication is handled on either the J1850 OR IS0 9141 OR CAN buses. I think this statement is right.

But 1. How can I say, it communicates with the ECU only as all buses are multiplexed and ECU might not be the only unit on the bus ?

I have a couple more questions:
2. Via this communication, How can I get any data that is not defined in the OBDII PIDs ? For example, I can get the engine RPM and the vehicle's speed, but what about the status of the vehicle ( Is it moving forward or backward ?) ... How can I get this information ?

3. Since all these OBDII buses are multiplexed buses, so is it valid to sniff any bus ( the CAN bus for example ) in-order to get the information that can't be accessed via the defined OBDII PIDs ? OR Is the data sent on these buses is limited to what is defined by the OBDII standard and that of the manufacturer ?

4. How can I know what the data ( accessible and inaccessible ) that is available from the ECU ?

Notes:
A. These questions might seem a bit overlapped.
B. I'll be posting these questions somewhere else. I hope there is no problem with that on this forum.

Thank you,
Walid F.

Re: Communication with the ECU via the OBDII connection

PostPosted: Thu Apr 07, 2011 3:13 pm
by radsdau
Those protocols aren't the only ones used for OBDII but it covers most of them. These days pretty much everything is CAN, and some makes use a combination (late model Subaru vehicles use KLine and CAN for reflashing).

Most of these buses are a 'partyline' network topology meaning all devices are connected together on the same bus. You address specific modules (by a unique address) and only that module responds. The CAN protocol automatically handles the arbitration with other messages also on the bus. Some networks are separate and a 'gateway' module- often the BCM, sometimes the ECU- is used to interface to it.

Most vehicles support OBDII data or at least a subset. You generally can't get more information out of the ECU using OBDII than the OBD standards specify. However some manufacturers provide alternative protocols where extra data is available. Usually this is not published and relies on 'sniffing' and 'guestimation' to work out.

Occasionally ECUs will support the reading of certain memory areas not accessible using PIDs (Subaru allows this). The problem is that the addresses for each data variable change from ROM to ROM so basically you need to disassemble each ROM type to work out where you're looking. The folks working with the ROMRaider project have done this for almost all known Subaru ROMs.

I hope this answers some of your questions.

radsdau