Skip to content
OBD-II Display for Rasperry PI/Linux and Tiny-CAN
C JavaScript Objective-C Other
Branch: master
Clone or download
Klaus Demlehner
Klaus Demlehner add new features
Latest commit c5bf715 Aug 28, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
CodeBlocks_Linux add new features Aug 28, 2019
doku add new features Aug 28, 2019
linux add new features Aug 28, 2019
res add new features Aug 28, 2019
src add new features Aug 28, 2019
tools Start Mar 3, 2019
www add new features Aug 28, 2019
.gitignore Start Mar 3, 2019
LICENSE bug fixes Jun 12, 2019 add new features Aug 28, 2019 add new features Aug 28, 2019

OBD-II Display for Rasperry PI/Linux and Tiny-CAN


This text in German

Funcional scope

  • Query of measurement data (SID 0x01)
    • Configurable display of the PID values from 0x00 to 0x4E
  • Query of vehicle information (SID 0x09)
    • Breakdown of the Vehicle Identification Number (VIN) by manufacturer, country, model year, serial number, ...)
  • Read the error codes (DTC Diagnostic Trouble Codes) (SID 0x03)
    • Plain text Display of error codes via databank
  • Display CAN raw data (CAN-Trace)
  • Automatic recognition of CAN hardware and baud rate
  • HTML5 Web-Interface
  • Android: OpenXC (









First the Tiny-CAN software package must be installed. For the operation of the software only the "" is required. "OBD-Display" searches for this file in the directory "/opt/tiny_can/can_api".

Download the file "tiny_can_raspberry_XXX.tar.gz" from "" and unpack it in the directory "/opt". Replace XXX with the latest version. The archive can be deleted after it has been unpacked. The access rights for the "/opt" directory must first be set, here are the individual steps:

$ sudo chgrp pi /opt
$ sudo chmod -R 775 /opt
$ cd /opt
$ mv /home/pi/tiny_can_raspberry_XXX.tar.gz .
$ tar -xzvf  tiny_can_raspberry_XXX.tar.gz
$ rm tiny_can_rasberry_XXX.tar.gz

Compile the Tiny-CAN API:

$ cd /opt/tiny_can/can_api/src/mhstcan/linux
$ make
$ mv ../../..

The Lib is already included in the package, usually compiling is not necessary.

Install "git":

$ sudo apt-get install git

Get "ObdDisplay" from "github":

$ cd /opt
$ git clone

Install development packages:

$ sudo apt-get install gtk2.0-dev

Compile "ObdDisplay":

$ cd /opt/OBD-Display/linux
$ make

Set up web page:

$ cd /var/www
$ sudo chown -R pi html
$ sudo chgrp -R pi html
$ cd html
$ cp -R /opt/OBD-Display/www/* .

Start "ObdDisplay":

$ cd /opt/OBD-Display/linux/bin
$ ./ObdDisplay

HTML5 Web-Interface

OBD-Display HTML5 Interface


OpenXC is a hardware and software API for automobiles developed by Ford Bug Labs and proposed as an open standard. Homepage: and the sources at: OBD Display partly emulates the hardware of Ford and provides his data in "OpenXC JSON Message Format" per TCP/IP. The description of the data fomat can be found here:

Install Android App "OpenXC Enabler"

Downloads: The APK package for installation: OpenXC Enabler can also be installed via Google Play. The sources of the app:

Setup: adjust "Vehicle Interface" to "Network". Put "Network host address" on the address of the computer running OBD Display. "Network port" is fixed at 50001. OpenXC setup

Dashboard of the OpenXC Enabler App OpenXC Dashboard


Two of the core files, "obd_db.c" and "obd_decode.c" in this project are based on the OBD-II API from Ethan Vaughan,

With the ISO-TP driver I copied a bit from the ISP-TP Linux Kernel driver from Oliver Hartkopp,

Most of the information I have taken from this document from emotive: Really very worth reading, I can only recommend!

Other sources I have used:

Image Sources

Background graphic, VW Beetle:

Source:äfer.jpg Author: Marco Strohmeier Licence: Public Domain


Source: Author: Licence: CC BY-SA 4.0

The image files were adapted for my purposes.

Tips and Tricks

Start the program automatically

If no mouse or keyboard is connected to the PI, it is useful to start the program automatically. To do this, copy the file "ObdDisplay.desktop" from the directory "tools" to the directory "/etc/xdg/autostart".

$ sudo cp /opt/ObdDisplay/tools/ObdDisplay.desktop /etc/xdg/autostart

Turn off the screensaver

Open the file "/etc/lightdm/lightdm.conf" in the editor as user "root".

$ sudo leafpad /etc/lightdm/lightdm.conf

In the section "SeatDefaults" modify the line "xserver-command" as follows or add if not exist.

xserver-command=X -s 0 -dpms

Rotate the screen display

Open the file "/boot/config.txt" in the editor as user "root".

$ sudo leafpad /boot/config.txt

Enter the following line into the file


After reboot the image should be rotated 180° and you can turn the display upside down so that the microUSB connector is at the top.

Make the mouse pointer disappear

For our special application, the mouse pointer is annoying. To remove the cursor very easily, we can install a package that hides it:

$ sudo apt-get install unclutter

After a reboot the cursor is invisible.


  • Testing :-)
  • OBD-API: Customisation for SocketCAN, develop a SocketCAN Tiny-CAN API driver
  • OBD-API: Expand database ("obd_db.c/obd_decode"), PIDs
  • OBD-API: Different polling intervals for the individual PIDs
  • OBD-API: Only query PIDs that are also shown
  • OBD-API: Documentation
  • GUI: Porting to GTK3
You can’t perform that action at this time.