The Vehicle Interface (VI) is piece of hardware that connects to the car’s CAN bus, translates proprietary CAN messages to the standard OpenXC message format and sends the output over USB, Bluetooth, or 3G/Ethernet/WiFi to a host device.

CAN Buses on OBD Pins

The OBD-II port has one standard pin pair for a single CAN bus, but many automakers expose other buses on additional, non-standard pin pairs. For this documentation, we’ll use this nomenclature:

OBD-II Pin PairOpenXC Bus NameOther common name
6 (+) and 14 (-) CAN1 CAN high / CAN low from ISO 15765-4 and SAE-J2284
3 (+) and 11 (-) CAN2-1 Ford secondary, Chrysler CCD
1 (+) and 8 (-) CAN2-2 Ford: infotainment, GM: J2411

Most vehicle data is available from CAN1, and all vehicle interfaces connect to that bus. Some data is available only on CAN2-1 or CAN2-2, and these buses are not connected to all available VIs (see below). To find out if the information you need is on a bus connected by a particular VI, check the binary firmware documentation for your vehicle manufacturer.

Obtaining a Vehicle Interface

There are two ways you can obtain a vehicle interface.

This image shows all of the available devices that are described below.

All Devices

Ford Reference VI

The VI is a open source reference design for a “dongle” style vehicle interface that connects directly to the diagnostic port with no cable. Ford created this design and manufactured a small quantity to seed the developer community. If you have an idea for an OpenXC application and this hardware would help, you can buy the hardware

Ford Reference VI

The reference VI is not as compact as the C5 BT, but it is open source hardware, so you are free to use or modify this design in your own hardware, and it connects to both the CAN1 and CAN2-1 bus pins (and with a small modification can connect to CAN2-2).

CrossChasm C5 Devices

There are three types of Vehicle Interfaces made by CrossChasm that are available. They are all similar and based off the same PIC32 platform. The first is a Bluetooth Classic, the second is a 3G Cellular device, and latest is a Bluetooth LE device. See the table below or vi-firmware for more complete details.

All of the CrossChasm devices are available at the OpenXC Shop.

CrossChasm C5 BT

The C5 BT is a very compact interface, so it’s great for fleet deployments. It connects to the CAN1 bus pins only. A crossover cable is needed to access a secondary CAN bus.

CrossChasm C5

CrossChasm C5 Cellular

The C5 Cellular device allows a direct GSM connection with a user supplied SIM card. The device also has it’s own built in GPS receiver (Telit HE910). The C5 Cellular does not plug directly into the OBD-II port, but instead has an OBD-II to DB9 cable to allow placement of the device or good reception as well as the ability to put the larger device out of the way.

CrossChasm C5 Cell

Like the C5 BT, the supplied cable connects to CAN1. In order to connect to CAN2-1 (or other), a cable that connects the DB9 pins 4 & 6 to the desired OBD-II pins (instead of 12 & 13). The image below shows the default cable pinout.

CrossChasm OBD-II to DB9 Pinout

CrossChasm C5 BLE

The C5 BLE device is the exact same size as the C5 BT. It swaps the BT for a BLE interface, which makes it the VI of choice for iOS applications. The OpenXC iOS framework is coming soon. The other differences for the C5 BLE is that there is no SD card reader and the OBD-II connections are updated to connect to both CAN1 and CAN2-1.

The easiest way to differentiate a C5 BT from a C5 BLE device is that the BLE device has all OBD-II pins populated while the BT has only a subset of pins. A second difference is the lack of a receiving slot in the SD card reader hole in the plastic housing on the BLE device. Or, you could always label them!

CrossChasm C5

DIY chipKIT-based VI

VI with Enclosure
VI with Cable

This VI design was the first OpenXC interface, and is still fully supported by the latest VI firmware. The design uses entirely off-the-shelf components, built on top of a Digilent chipKIT Max32 development board (open source hardware!). The VI can be assembled with a range of functionality starting at around $110, with no soldering required.

The chipKIT VI can connect to up to 2 CAN buses simultaneously, and you can choose from any of CAN1, CAN2-1 or CAN2-2.

Comparison Table

The table below compares the different features of the available VIs.

VI Comparison Table

Other Implementations

There are many possible implementations of a VI. The minimal functional requirements are that the VI:

  • Physically connects to the OBD-II diagnostic connector directly or with a cable.
  • Connects a CAN controller to at least the US federally mandated CAN bus pins.
  • Runs the open source VI firmware.
  • can be reprogrammed the end user without additional hardware (most likely via a USB or serial bootloader).

Optionally, the VI may:

  • Connect another CAN controller to non-standard CAN bus pins (such as Ford’s medium speed or infotainment bus pins)
  • Allow lower-level user re-programming and debugging via ISP or JTAG.
  • Pass 12v power from the vehicle through to a separate power jack for peripherals

Unless you are implementing custom CAN messages, you will most likely need a pre-built OpenXC binary firmware from the manufacturer of your vehicle. Each OEM can decide whether or not to participate in OpenXC and if so, decide which types of data they wish to expose.

Once you’ve purchased or constructed a vehicle interface, you can get started with one of the programming environments to make sure it’s working correctly. Both the Python and Android environments have a “smoke test” you can use without writing any code.