Freediag
Scantool for Linux
Application
Manual.
CVSID $Id: Scantool-Manual.htm,v 1.2 2003/04/20 22:43:19 rpalmeida Exp $
This manual
applies to Version 0.3 of Freediag/Scantool.
OBDII
Introduction: -
In the Mid
1990’s the US introduced mandated diagnostics on all vehicles sold in the USA
for certain emissions related information. The idea behind this is that cars
would monitor for emissions related problems and when they occur to light a
“Check Engine” lamp on the dashboard and log fault information that could be
then read by a Scantool. Scantools would become cheap and available to the
smallest of vehicle repairers. These diagnostic protocols were grouped under
the term “OBD II”.
Europe has
recently introduced similar, compatible systems, which are known as EOBD
(European OBD).
OBDII/EOBD
requires a standardised physical connector to be present within a small
distance of the vehicle’s steering wheel. OBDII allows 3 types of physical
interface (ISO9141/14230, SAEJ1850 VPW and SAEJ1850-PWM) and the related
software protocols that are used with those physical interfaces.
This manual
assumes that you have some knowledge of vehicle systems and have probably used
a scantool before.
Scantool
Introduction.
This
Scantool uses SAEJ1979 (ODB II) protocol on ISO9141, ISO14230, SAEJ1850 VPW and
SAEJ1850-PWM interfaces depending on what hardware interface is attached to the
PC. The scantool does not yet support any manufacturer specific protocols for
talking to non OBDII vehicles.
It is configured by default to use a generic serial to ISO9141 converter such
as those used on the VAG-COM software, It also supports smart interfaces
from Multiplex Engineering and from B.Roadman for SAEJ1850 vehicles (mainly
Ford and GM).
Please refer
to the “supported interfaces” document to determine which interface support
what protocols.
1) Building
the scantool.
The scantool
distribution is a source-code distribution, so you will have to
configure/compile it for your Linux system. To do this, unpack the archive and
in the src directory, type
./configure
make
2) Running
Scantool
The Scantool
should be run as SuperUser as the process has to set real-time scheduling in
order to get accurate timing control under Linux. If it is run by an un-privileged
user than a warning will be printed and the scantool may not work. It is
extremely unlikely to work on ISO9141/ISO14230 interfaces, it may work with
SAEJ1850 type interfaces where timing is not so critical..
Start the Scantool CLI by running "./Scantool", you will get a
command prompt: -
.
scantool>
The scantool
will read commands from a startup file called .scantoolrc
in your home directory.
Many people
will put the appropriate
set interface <type>
command (see
section 4) in their .scantoolrc file and will just want to use the scan,and the cleardtc commands.
3) Using the
Command Line Interface (CLI): -
The CLI is hierarchical, with normal commands at the top level – these commands
include: -
scan start
a scan
monitor loop
repeatedly checking/displaying ECU values
2nd level commands, such as commands to set the address used by the scantool
can be accessed as
set testerid VALUE
or by entering the set menu
set
and then using the testerid command
testerid VALUE
Note the cli prompt will change from
scantool>
to
scantool/set>
To leave that menu and return to the main menu, type
quit
Using the
quit command at the main menu will end the scantool application.
All numeric values can be entered as
123 decimal
123
$27 hexadecimal
27
0x27 hexadecimal
27
012 Octal
012
The help command
is available at every menu and gives you help for the commands available at
that menu. Further information about a specific command can be obtained by
typing help <command>.
The CLI
supports shell like command line editing if supported by your Linux version.
Commands: -
The following commands are available. Other commands may be visible from the
CLI but are not supported
Main Menu: -
scan Does
an OBDII Scan for all parameters
monitor [english/metric] Loops
requesting/displaying OBD
Mode1/2/7
results
cleardtc Clear
stored Diagnostic Trouble Codes
source
<filename> Read
commands from <filename>
log
[logfile] Basic
data logging to logfile specified
stoplog Stops
logging
watch [raw] Watch
the K line bus and attempt to decode data
test -
SUBMENU, see later, perform various tests - mostly performed
in
scan process
set -
SUBMENU, see later, set parameters for diagnostic functions
diag -
SUBMENU, see later, extended diagnostic functions
debug -
SUBMENU, see later
help [command] Help
quit Quit/Exit
exit Quit/Exit
Test Sub-Menu: -
rvi Do
OBD Mode 9 requests for vehicle info (vin etc)
cms Request/Display
continuously monitored system results
ncms Request/Display
non continuously monitored system results
[more
verbose than in scan]
readiness Do
readiness tests [more verbose than in scan]
Set Sub-Menu: -
show show
all item values
speed [value] show/set
the speed to connect to ECU at
testerid [val] Set
the source address to use
destaddr [val] Set
the destination address to connect to
protocol [val] Set
the protocol to use. Use protocol ? to get list
initmode [val] Set
the initmode to use. Use initmode ? to get list
display [english/metric] Sets default display mode for monitor
command
interface [type] Set
the type of hardware interface. Use interface ? to get a list
of
interface types, and refer to the supported interface document.
Diag Sub-Menu :-
connect Connect
to an ECU, but do not run any tests. Uses the protocol/speed etc set,
i.e
does not try multiple protocols.
sendreq Send
data on the bus
sr Same
read [timeout] Read
data from the bus, timeout after timeout seconds
rx Same
Debug Sub-Menu: -
show show
debug levels
l0 [val] show/set
layer 0 debug value
l1 [val] show/set
layer 1 debug value
l2 [val] show/set
layer 2 debug value
l3 [val] show/set
layer 3 debug value
cli [val] show/set
layer cli debug value
all [val] show/set
debug values for all the layers
pids show
supported PIDS/TESTs for mode 1/2/5/6/9
dumpdata show
received data for mode 1/2 tests
4) Hardware
Interfaces: -
Please refer to the “supported” interface document to determine which hardware
interface is appropriate for your usage and which version of the interface you
should purchase.
In order to
use the appropriate driver for your hardware interface the appropriate “set
interface XXX” command
needs to be run. The default interface driver is the se9141 driver which
works with most generic serial to ISO9141 interfaces. It is recommended that
you put this command in your .scantoolrc file.
Andy Whittaker's OBD-II ISO9141
interface:
http://www.andywhittaker.com/ecu/obdii_hardware.htm
set interface se9141
Jeff's OBD-II ISO 9141 interface:
http://www.planetfall.com/~jeff/obdii
set interface se9141
Silicon Engines ISO 9141 interface:
http://www.siliconengines-ltd.com/products/se/9141/9141.html
set interface se9141
B.Roadman ISO9141/VPW/PWM interface:
http://www.abcwc.net/accounts/quanta/index.html
set interface br1
Multiplex Engineering VPW, PWM, and ISO 9141-2 interface:
http://www.multiplex-engineering.com/products.htm
set interface met16
Note, if you
have a Multiplex Engineering interface not purchased for the freediag software,
it will have a different ID to that used in the freediag project. Freediag uses
ID 0x38. If you know the ID of your interface you can change the
INTERFACE_ADDRESS definition in diag_l0_me.c and recompile.