Genericobd2

nobdy provider: GenericOBD2 - This allows nobdy to gather data from ELM327 compatible scantools

=Setup=

From Source
git clone git://gitorious.org/nobdy/genericobd2.git

Also grab libobd:

git clone git://gitorious.org/libobd/libobd.git cd libobd qmake make sudo make install

cd ../genericobd2 qmake make sudo make install

Binary Packages
See [instructions] on main nobdy page.

=Configuration=

To enable the genericobd2 plugin, edit your nobdy config (/etc/nobdy/plugins.xml or ~/.nobdy/plugins.xml) with the following:

NOTE: you can find up to date example configurations are installed in /etc/nobdy/providers/*.xml.

 /dev/pts/2 115200

Put the path to your scantool (usually /dev/ttyUSB0) inside the element, replacing /dev/pts/2. 115200 is a typical BAUD rate for newer scantools, although older devices may run at 19200 baud or even 9600.

Bluetooth
For bluetooth scantools such as OBDKey or OBDLink MX, specify the MAC address of the paired bluetooth scantool rather than the path name:

 00:00:00:00:00:00   9600

Paired bluetooth device addresses of format 00:00:00:00:00:00 are listed (in Ubuntu and Debian at least) in /var/lib/bluetooth/ /trusts. On most Linux distros, the easiest way to pair a Bluetooth device is with a panel applet.

After configuring the plugin with the bluetooth address of your scantool, you should be able to run nobdy and get obd2 data.

Advanced Bluetooth Hacking: (here be dragons)
Bring the Bluetooth connection up after pairing with;

prompt ;-) sudo hciconfig hci0 up  prompt ;-) hciconfig hci0:  Type: BR/EDR  Bus: USB BD Address: ACL MTU: 1021:8  SCO MTU: 64:1 UP RUNNING PSCAN ISCAN RX bytes:6259 acl:7 sco:0 events:199 errors:0 TX bytes:1655 acl:7 sco:0 commands:137 errors:0

Ping the attached scantool:

prompt ;-) sudo l2ping  Ping: from (data size 44) ...  44 bytes from id 0 time 8.57ms  44 bytes from id 1 time 6.18ms  44 bytes from id 2 time 6.20ms  ^C3 sent, 3 received, 0% loss

Now connect to the device:

prompt ;-) sudo hcitool cc --role=m

Create /dev/rfcomm0 to talk to the device:

prompt ;-) sudo rfcomm bind rfcomm0 Can't create device: Address already in use  prompt ;-) ll /dev/rfcomm0 0 crw-rw---T 1 dialout 216, 0 Apr 6 19:33 /dev/rfcomm0

Once a device exists and a connection is established, minicom or screen commands can be used to communicate directly as a test. First use "sudo minicom -s /dev/rfcomm0" to configure the communications and save the resulting params to a file. Then talk to the Bluetooth scantool directly using the ELM327's command set:

prompt ;-) minicom /dev/rfcomm0 >ATZ

ELM327 v1.3a >AT@1 SCANTOOL.NET LLC >01 00 CAN ERROR

With a USB scantool, users can now proceed directly to issue OBDII or CAN requests. With the OBDLink MX, one additional protocol command is needed, which is why "01 00" causes an error. After setting "AT SP0" normal OBDII and CAN requests are possible:

>AT SP0 OK

>01 00 SEARCHING... 41 00 BE 1B 30 13 41 00 88 18 00 10  41 00 00 08 00 10

Future bluetooth communication can be made easier by editing /etc/bluetooth/rfcomm.conf like so:

rfcomm0 { # Automatically bind the device at startup bind yes; # Bluetooth address of the device device 00:00:00:00:00:00; # RFCOMM channel for the connection channel	1; # Description of the connection comment "OBDLink MX"; }

=Supported Devices=
 * OBDLink devices scantool.net
 * obdpro
 * OBDKey

=Supported Parameter IDs=

Eventually support should be added for a standard list of PIDs.