https://evoecu.logic.net/index.php?title=OBD-II_Protocol&feed=atom&action=history
OBD-II Protocol - Revision history
2024-03-29T09:58:37Z
Revision history for this page on the wiki
MediaWiki 1.34.4
https://evoecu.logic.net/index.php?title=OBD-II_Protocol&diff=971&oldid=prev
EdwardMarshall: /* Timing (in ms) */
2010-11-06T19:07:23Z
<p><span dir="auto"><span class="autocomment">Timing (in ms)</span></span></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">Revision as of 19:07, 6 November 2010</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l9" >Line 9:</td>
<td colspan="2" class="diff-lineno">Line 9:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Timing (in ms)==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Timing (in ms)==</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>; 0-20 : Inter byte timing in ECU response</div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">:</ins>; 0-20 : Inter byte timing in ECU response</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>; 25-50 : Time between end of tester request and start of ECU response or between ECU responses</div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">:</ins>; 25-50 : Time between end of tester request and start of ECU response or between ECU responses</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>; 25-5000 : Extended mode for "rspPending"</div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">:</ins>; 25-5000 : Extended mode for "rspPending"</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>; 55-5000 : Time between end of ECU response and start of new tester request, or time between end of tester request and start of new request if ECU doesn't respond</div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">:</ins>; 55-5000 : Time between end of ECU response and start of new tester request, or time between end of tester request and start of new request if ECU doesn't respond</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>; 5-20 : Inter byte time in tester request</div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">:</ins>; 5-20 : Inter byte time in tester request</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Initialization==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Initialization==</div></td></tr>
</table>
EdwardMarshall
https://evoecu.logic.net/index.php?title=OBD-II_Protocol&diff=970&oldid=prev
EdwardMarshall: /* Timing (in ms) */
2010-11-06T19:06:55Z
<p><span dir="auto"><span class="autocomment">Timing (in ms)</span></span></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">Revision as of 19:06, 6 November 2010</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l9" >Line 9:</td>
<td colspan="2" class="diff-lineno">Line 9:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Timing (in ms)==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Timing (in ms)==</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline"> </del>0-20 Inter byte timing in ECU response</div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">; </ins>0-20 <ins class="diffchange diffchange-inline">: </ins>Inter byte timing in ECU response</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline"> </del>25-50 Time between end of tester request and start of ECU response or between ECU responses</div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">; </ins>25-50 <ins class="diffchange diffchange-inline">: </ins>Time between end of tester request and start of ECU response or between ECU responses</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline"> </del>25-5000 Extended mode for "rspPending"</div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">; </ins>25-5000 <ins class="diffchange diffchange-inline">: </ins>Extended mode for "rspPending"</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline"> </del>55-5000 Time between end of ECU response and start of new tester request, or time between end of tester request and start of new request if ECU doesn't respond</div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">; </ins>55-5000 <ins class="diffchange diffchange-inline">: </ins>Time between end of ECU response and start of new tester request, or time between end of tester request and start of new request if ECU doesn't respond</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline"> </del>5-20 Inter byte time in tester request</div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">; </ins>5-20 <ins class="diffchange diffchange-inline">: </ins>Inter byte time in tester request</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Initialization==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Initialization==</div></td></tr>
</table>
EdwardMarshall
https://evoecu.logic.net/index.php?title=OBD-II_Protocol&diff=969&oldid=prev
EdwardMarshall: /* Timing (in ms) */
2010-11-06T19:05:31Z
<p><span dir="auto"><span class="autocomment">Timing (in ms)</span></span></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #222; text-align: center;">Revision as of 19:05, 6 November 2010</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l9" >Line 9:</td>
<td colspan="2" class="diff-lineno">Line 9:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Timing (in ms)==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Timing (in ms)==</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>0-20 Inter byte timing in ECU response</div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline"> </ins>0-20 Inter byte timing in ECU response</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>25-50 Time between end of tester request and start of ECU response or between ECU responses</div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline"> </ins>25-50 Time between end of tester request and start of ECU response or between ECU responses</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>25-5000 Extended mode for "rspPending"</div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline"> </ins>25-5000 Extended mode for "rspPending"</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>55-5000 Time between end of ECU response and start of new tester request, or time between end of tester request and start of new request if ECU doesn't respond</div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline"> </ins>55-5000 Time between end of ECU response and start of new tester request, or time between end of tester request and start of new request if ECU doesn't respond</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>5-20 Inter byte time in tester request</div></td><td class='diff-marker'>+</td><td style="color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline"> </ins>5-20 Inter byte time in tester request</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Initialization==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==Initialization==</div></td></tr>
</table>
EdwardMarshall
https://evoecu.logic.net/index.php?title=OBD-II_Protocol&diff=972&oldid=prev
EdwardMarshall: Created page with "(Borrowed from [http://prj.perquin.com/obdii/ Perquin] until it can be cleaned up a bit.) =OBD-II ISO 14230-2 Protocol Specification= This document describes the OBD-II ISO 142..."
2010-10-25T22:04:22Z
<p>Created page with "(Borrowed from [http://prj.perquin.com/obdii/ Perquin] until it can be cleaned up a bit.) =OBD-II ISO 14230-2 Protocol Specification= This document describes the OBD-II ISO 142..."</p>
<p><b>New page</b></p><div>(Borrowed from [http://prj.perquin.com/obdii/ Perquin] until it can be cleaned up a bit.)<br />
<br />
=OBD-II ISO 14230-2 Protocol Specification=<br />
<br />
This document describes the OBD-II ISO 14230-2 serial interface protocol. It has been compiled from <br />
various public internet sources. I have been successful building an ODB interface with this information, <br />
but no guarantee can be given that this information is correct. Use at your own risk.<br />
<br />
==Timing (in ms)==<br />
<br />
0-20 Inter byte timing in ECU response<br />
25-50 Time between end of tester request and start of ECU response or between ECU responses<br />
25-5000 Extended mode for "rspPending"<br />
55-5000 Time between end of ECU response and start of new tester request, or time between end of tester request and start of new request if ECU doesn't respond<br />
5-20 Inter byte time in tester request<br />
<br />
==Initialization==<br />
<br />
===Fastinit===<br />
<br />
_________ _____ ____ ____ <br />
\_____/ \/\/\/\/ \/\/\/\/<br />
300ms 25ms 25ms packet response <br />
<br />
# Wait for 300ms with K line high.<br />
# Pull K line low for 25 +/- 1 ms<br />
# Let K line rise high and wait 25ms<br />
# init serial connection to 10400 baud, 8N1, 1=0Volt 0=12Volt, least significant bit first<br />
# send package c1 33 f1 81 66 33=dest, f1=our tester id, 81=start comms<br />
# wait for response 83 f1 01 c1 e9 8f ae 01=physical address, c1=response ok (7f=fail), e9=kb1, 8f=kb2<br />
<br />
===Slowinit===<br />
<br />
_________ S ___ 2 3 ___ 6 7 ___ ____ ____ <br />
\_/0 1\___/4 5\___/P \/\/\/\/ \/\/\/\/<br />
300ms 200 400 400 400 400 250 packet response <br />
<br />
# Wait for 300ms with K line high.<br />
# send a byte 33 hex at 5 baud. 200ms per bit<br />
#:; startbit: 200ms low<br />
#:; databit 0, 1: 400ms high<br />
#:; databit 2, 3: 400ms low<br />
#:; databit 4, 5: 400ms high<br />
#:; databit 6, 7: 400ms low<br />
#:; stopbit + pause: 250ms high<br />
# init serial connection to 10400 baud, 8N1, 1=0Volt 0=12Volt, least significant bit first<br />
# send package c1 33 f1 81 66 33=dest, f1=our tester id, 81=start comms<br />
# wait for response 83 f1 01 c1 e9 8f ae 01=physical address, c1=response ok (7f=fail), e9=kb1, 8f=kb2<br />
<br />
==Packets==<br />
<br />
Send command packet:<br />
:header: [c0+cmdlen] [destination=33] [source=f1]<br />
:data: [cmd0] [cmd1] ... [cmd(cmdlen-1)]<br />
:checksum: [sum(header)+sum(data)]<br />
<br />
::cmd0 = service ID, cmd1 = PID<br />
<br />
Received response packet on success:<br />
:header: [80+datalen] [destination=f1] [source=01]<br />
:data: [40+cmd0] [cmd1] ... [cmd(cmdlen-1)] [result0] [result1] ... [result(datalen-cmdlen-1)]<br />
:checksum: [sum(header)+sum(data)]<br />
<br />
Received response packet on failure:<br />
:header: [80+datalen] [destination=f1] [source=01]<br />
:data: [errorcode=7f] [cmd0] [Response Failure Code, see below] <br />
:checksum: [sum(header)+sum(data)]<br />
<br />
Multibyte data is sent high byte first.<br />
<br />
==Tester Commands==<br />
<br />
===Request and response packet diagram format===<br />
<br />
cmd0 cmd1 ... -> result0 result1 ... comment<br />
<br />
''Note:'' only the data of the request and only the result of the response are shown.<br />
<br />
====Example====<br />
<br />
yy 00 -> xx xx xx xx<br />
<br />
Bitmask of capabilities for mode yy, bit7 represents pid 1, bit6 pid 2, etc, if data4:bit0 is set then pid 20 contains capabilities for pid 21-40<br />
<br />
===00-0F: SAE J1979 Diagnostic Test Modes===<br />
<br />
01 00 -> xx xx xx xx capabilites <br />
01 01 -> [b7: MIL light, b0-6: dtc count] [b4-7: readiness] [b5: o2monitoring] [b0-7: readiness]<br />
01 03 -> xx xx Fuel System Status bitmap b0:Open, b1:Closed, b2:Open-Driving, b3:Open-Fault, b4:Closed-Fault<br />
01 04 -> xx Calculated Load Value % x*100.0/255 <br />
01 05 -> xx Engine Coolant Temperature C x-40 <br />
01 06 -> xx Short term fuel trim Bank 1 % x*(100.0/128)-100<br />
01 07 -> xx Long term fuel trim Bank 1 % x*(100.0/128)-100<br />
01 08 -> Short term fuel trim Bank 2 % x*(100.0/128)-100<br />
01 09 -> Long term fuel trim Bank 2 % x*(100.0/128)-100<br />
01 0a -> Fuel Pressure kPaG x*3<br />
01 0b -> xx Intake Manifold Pressure kPaA x<br />
01 0c -> xx xx Engine RPM RPM x*0.25<br />
01 0d -> xx Vehicle Speed km/h x<br />
01 0e -> xx Ignition timing advance Cyl #1 deg X*0.5-64<br />
01 0f -> xx Intake Air Temperature C X-40<br />
01 10 -> xx xx Air Flow Rate gm/s X*0.01<br />
01 11 -> xx Absolute Throttle Position % X*(100.0/255)<br />
01 12 -> xx Commanded secondary air status<br />
01 13 -> xx Oxygen sensor locations bitmap b0=sensor1, b1=sensor2, ..., b7=sensor8<br />
01 14 -> xx yy Bank 1 Sensor 1 Voltage/Trim V, % x*0.005, if y!=ff then y*(100.0/128)-100)<br />
01 15 -> xx yy Bank 1 Sensor 2 Voltage/Trim V, % x*0.005, if y!=ff then y*(100.0/128)-100)<br />
01 16 -> Bank 1 Sensor 3 Voltage/Trim V, % x*0.005, if y!=ff then y*(100.0/128)-100)<br />
01 17 -> Bank 1 Sensor 4 Voltage/Trim V, % x*0.005, if y!=ff then y*(100.0/128)-100)<br />
01 18 -> Bank 2 Sensor 1 Voltage/Trim V, % x*0.005, if y!=ff then y*(100.0/128)-100)<br />
01 19 -> Bank 2 Sensor 2 Voltage/Trim V, % x*0.005, if y!=ff then y*(100.0/128)-100)<br />
01 1a -> Bank 2 Sensor 3 Voltage/Trim V, % x*0.005, if y!=ff then y*(100.0/128)-100)<br />
01 1b -> Bank 2 Sensor 4 Voltage/Trim V, % x*0.005, if y!=ff then y*(100.0/128)-100)<br />
01 1c -> xx Auxiliary Input Status bitmap b0:PTO Active<br />
01 20 -> xx xx xx xx capabilities<br />
01 21 -> xx xx<br />
<br />
02 00 00 -> xx xx xx xx capabilites SMART: 2 3 4 5 6 7 b c d<br />
02 02 00 -> [dtc1h] [dtc1l] DTC that caused freezeframe<br />
<br />
03 -> [dtc1h] [dtc1l] 00 00 00 00<br />
<br />
05 00 00 -> xx xx xx xx capabilites<br />
<br />
06 00 -> xx xx xx xx capabilites<br />
06 yy -> [max=01,min=81] [valH] [valL] [limitH] [limitL]<br />
example 01 00 23 01 2c is value 23 (=35 dec) with limit maximum 12c (=300 dec)<br />
06 01 -> xx xx xx xx xx ncms<br />
06 02 -> xx xx xx xx xx ncms<br />
06 09 -> 01 xx xx xx xx -> 81 xx xx xx xx ncms<br />
<br />
07 -> 00 00 00 00 00 00 cms<br />
<br />
08 00 00 00 00 00 00 -> xx xx xx xx capabilites SMART: none<br />
<br />
09 00 -> 01 30 00 00 00 capabilites 5 bytes??? <br />
<br />
10 Start Diagnostic Session<br />
11 ECU Reset<br />
12 Read Freeze Frame Data<br />
13 Read Diagnostic Trouble Codes<br />
14 Clear Diagnostic Information<br />
17 Read Status Of Diagnostic Trouble Codes<br />
18 Read Diagnostic Trouble Codes By Status<br />
1A Read Ecu Id<br />
20 Stop Diagnostic Session<br />
21 Read Data By Local Id<br />
22 Read Data By Common Id<br />
23 Read Memory By Address<br />
25 Stop Repeated Data Transmission<br />
26 Set Data Rates<br />
27 Security Access<br />
2C Dynamically Define Local Id<br />
2E Write Data By Common Id<br />
2F Input Output Control By Common Id<br />
30 Input Output Control By Local Id<br />
31 Start Routine By Local ID<br />
32 Stop Routine By Local ID<br />
33 Request Routine Results By Local Id<br />
34 Request Download<br />
35 Request Upload<br />
36 Transfer data<br />
37 Request transfer exit<br />
38 Start Routine By Address<br />
39 Stop Routine By Address<br />
3A Request Routine Results By Address<br />
3B Write Data By Local Id<br />
3D Write Memory By Address<br />
3E Tester Present<br />
81 -> xx xx Start Communication<br />
82 Stop Communication<br />
83 Access Timing Parameters<br />
85 Start Programming Mode<br />
<br />
===Response Failure Codes===<br />
<br />
10 General Reject<br />
11 Service Not Supported<br />
12 Sub Function Not Supported - Invalid Format<br />
21 Busy - repeat Request<br />
22 Conditions Not Correct Or Request Sequence Error<br />
23 Routine Not Complete Or Service In Progress<br />
31 Request Out Of Range<br />
33 Security Access Denied - security Access Requested<br />
35 Invalid Key<br />
36 Exceed Number Of Attempts<br />
37 Required Time Delay Not Expired<br />
40 Download Not Accepted<br />
41 Improper Download Type<br />
42 Can Not Download To Specified Address<br />
43 Can Not Download Number Of Bytes Requested<br />
50 Upload Not Accepted<br />
51 Improper Upload Type<br />
52 Can Not Upload From Specified Address<br />
53 Can Not Upload Number Of Bytes Requested<br />
71 Transfer Suspended<br />
72 Transfer Aborted<br />
74 Illegal Address In Block Transfer<br />
75 Illegal Byte Count In Block Transfer<br />
76 Illegal Block Trasnfer Type<br />
77 Block Transfer Data Checksum Error<br />
78 Request Correcty Rcvd - Rsp Pending<br />
79 Incorrect Byte Count During Block Transfer<br />
80 Service Not Supported In Active Diagnostic Mode<br />
C1 Start Comms +ve response<br />
C2 Stop Comms +ve response<br />
C3 Access Timing Params +ve response<br />
81-8F Reserved<br />
90-F9 Vehicle manufacturer specific <br />
FA-FE System supplier specific <br />
FF Reserved by document <br />
<br />
==Sample scan obtained of a SMART FOR TWO car==<br />
<br />
--wakeup<br />
81 -> e9 8f<br />
--get capabilities<br />
01 00 -> b2 3f f8 11 capabilities service 1: 1 3 4 5 6 7 b v d e f 10 11 12 13 14 15 1c 20<br />
01 20 -> 80 00 00 00 capabilities service 1: 21<br />
02 00 00 -> 7e 38 00 00 capabilities service 2: 2 3 4 5 6 7 b c d<br />
05 00 00 -> 7f 05 11 capabilities service 5: none<br />
06 00 -> ff c0 80 00 capabilities service 6: 1 2 3 4 5 6 7 8 9 a 11<br />
08 00 00 00 00 00 00 -> 7f 08 11 capabilities service 8: none<br />
09 00 -> 01 30 00 00 00 ???? expected 4 byte response...<br />
--get status<br />
01 01 -> 01 07 69 00 MIL light off, 1 dtc, ready, no 02monotoring<br />
--get dtc's<br />
03 -> 07 02 00 00 00 00 dtc P0702<br />
--scan sensors<br />
01 03<br />
01 04<br />
01 05 -> 3a engine coolant temp = 18C (3a=58 dec - 40 dec)<br />
01 06<br />
01 07<br />
01 0b<br />
01 0c<br />
01 0d<br />
01 0e<br />
01 0f<br />
01 10<br />
01 11<br />
01 12<br />
01 13 -> 03 2 sensors<br />
01 14<br />
01 15<br />
01 1c<br />
01 20 -> 80 00 00 00 (always same: capabilities 21-40)<br />
01 21 -> 00 37</div>
EdwardMarshall