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.
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 Pair||OpenXC Bus Name||Other 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.
There are two ways you can obtain a vehicle interface.
Build one yourself! The original OpenXC design was built on a chipKIT development board and is still fully supported. The design is open-source and posted below, along with instructions on how to assemble all the required parts.
This image shows all of the available devices that are described below.
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
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).
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.
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.
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.
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.
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!
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.
The table below compares the different features of the available VIs.
There are many possible implementations of a VI. The minimal functional requirements are that the VI:
Optionally, the VI may:
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.