Windows USB Device Driver

If you want to send and receive vehicle data in Windows via USB, you must install the VI Windows Driver <https://github.com/openxc/vi-windows-driver>.

Python Library

The OpenXC Python library, in particular the openxc-dashboard tool, is useful for testing the VI with a regular computer, to verify the data received from a vehicle before introducing an Android device. A quick “smoke test” using the Python tools is described in the Getting Started Guide for Python developers at the OpenXC website.

Keep in mind when bench testing - the VI will go into a low power suspend mode if no CAN activity has been detected for 30 seconds. If you compile with the DEBUG flag, it will not suspend.

Debugging information

Viewing Debugging data

To view debugging information, first compile the firmware with the debugging flag:

$ make clean
$ DEBUG=1 make
$ make flash

When compiled with DEBUG=1, two things happen:

  • Debug symbols are available in the .elf file generated in the build directory.
  • Log messages will be output over a UART port (no hardware flow control is required) - see supported platforms for details.

View this output using an FTDI cable and any of the many available serial terminal monitoring programs, e.g. screen, minicom, etc.


The repository includes a rudimentary vehicle emulator version of the firmware:

$ make clean
$ make emulator

The emulator generates fakes values for many OpenXC signals and sends out translated OpenXC messages as if it were plugged into a real vehicle.

Test Suite

The non-embedded platform specific code in this repository includes a unit test suite. It’s a good idea to run the test suite before committing any changes to the git repository.


The test suite uses the check library.


$ sudo apt-get install check


Install Homebrew, then check:

$ brew install check

Arch Linux

$ sudo pacman -S check

Running the Suite

vi-firmware/src $ make clean && make test -s