User Manual
User Manual
Ron Riedel
March, 2014
I. Introduction
The Toyota OBD I diag port provides a method of reading serial data from the
ECU, by shorting pin TE2 to E1(ground). This causes the ECU to output 13 serial bytes from
the VF1 pin, at 122.1 baud. The entire cycle is repeated roughly once every 1.25 seconds. The
following parameters are output during each cycle.
A. One 5-bit word which is some kind of ID
B. Fuel injector pulse width in mSec
C. Ignition timing advance in degrees
D. Idle Air Control (IAC) – reports “0” on my engine all the time.
E. RPM
F. VAFM (0-100%)
G. ECT in degC (selectably converted to degF in program)
H. TPS in degrees (0-90)
I. Vehicle speed in km/hour (selectably converted to mph in program)
J. Two unknown/unused bytes – always “0”
K. Two status bytes which report the state of various switches
1. Cold Start Injector
2. Warm-up status
3. Start signal “on” – only during starting
4. Idle switch status
5. Air conditioner “on”
6. Diag status – This flag is set if there is a diagnostic code present
2. Source code
This folder is for the SW geeks. It contains all of the VB.net source code
for the program. There is a separate “readme” file in this folder which
gives more information about the development environment and how the
program works. This source code is freely available and may be modified
without restriction or credit given to anyone. VB.net 2010 Express is a
free, fully functional download from Microsoft, and I use it extensively
professionally in my work.
This is a drawing of the back of the DB9 connector that you should have purchased.
The program uses pin 8, Clear to Send, as its input. The receive pin (pin 2) can not be
used, since the unusual nature of the Toyota data stream precludes using the serial
port UART. All of the decoding is done in software by polling the status of control
pin Clear to Send (CTS).
To provide pull-up, the program drives pin 4, Data Terminal Ready, high. A 13K
resistor from pin 4 connects the pullup to pin 8. The .01uF capacitor from pin 8 to pin
5 (ground) provides noise filtering.
13K
.01uF
Connect a long twin-lead or coax to pins 8 and 5 which you can use to run from the
computer to the diag connector. I used left-over garage-door opener wire, and ran the
leads through the firewall into the passenger compartment, so I could have the laptop
on the seat while driving.
Now, use a jumper to connect pin 8 to pin 4 of the DB9 connector. The display
should change to the following. The data now represents readings based on all “ones”
coming back from the serial port.
Finally, click on the blue “Start Data Log” button. It may require two clicks to
activate the first time. It should change color to red-orange. Let the program continue
for about 5 seconds, and then navigate to your C:\tmp directory. It should contain a
file named “ToyotaDiagLog_YYYYMMDDHHmmSS.csv”, where
YYYYMMDDHHmmss is the current date and time. This is a log file which will
record every reading taken by the program into a comma separated file which is
readable directly by Excel, making post driving analysis straight forward. Since the
file name is date and time stamped, the files are easy to keep track of and you will
never accidentally overwrite one.
If all of these tests check out, you are ready to plug the wiring into the diag port.
Follow these steps.
- Close the program to get out of “test mode”.
- Engine off, ignition off
- On the diag port, connect TE2 to E1.
- Connect the wires from the DB9 connector to the diag port as shown.
- Now turn the key on, but do not start the engine. You should see the Check
Engine Light blinking continuously and rapidly, several times/sec.
- Start the program in “normal” mode by double clicking on “ToyotaDiag.exe”.
Once the form comes up, click on the green “Start Reading Diag Port” button.
The form should show something similar to the following data.
-
- To test that you are reading real data, slowly depress the accelerator to the floor.
You should see the TPS reading advance, from near 0 to 50-60 degrees or more.
- Start engine
Depending on the sensitivity and input resistance of your serial port, it is possible
you may need to adjust the value of the 13K resistor. Try removing it first, and it
that doesn’t work, try progressively lower values down to 5K or so to see if that
helps.