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/9 (-)*||CAN2-2||Ford: infotainment, GM: J2411|
|* If available, Pin 8 on Ford B, C platforms and Pin 9 on Ford D platforms. This is typically not available.|
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
it is recommended that you use the Ford Reference VI. It is most reliable platform.
The C5 devices are available to provide the specific new functionality.
There are two ways you can obtain a vehicle interface.
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
for more complete details.
All of the CrossChasm devices are available at the
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 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.
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 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!
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:
- Physically connects to the OBD-II diagnostic
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
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.