OpenXC is an API to your car - by installing a small hardware module to read and translate metrics from a car’s internal network, the data becomes accessible from most Android applications using the OpenXC library. You can start making vehicle-aware applications that have better interfaces based on context, can minimize distraction while driving, are integrated with other connected services, and can offer you more insight into your car’s operation. This website is the documentation for a reference design of an OpenXC-compatible Vehicle Interface - for more information on the platform in general, visit openxcplatform.com.
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 a common interface like USB to a host device - this particular implementation has USB and Bluetooth.
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, make sure there aren’t any known issues with the fit for the reference VI in your car.
The VI needs to be programmed with firmware before you can get data from a car. You can use the emulator firmware (zip file) to test the data connection to a host device (a computer, smartphone or tablet). To get data from a real car, grab one of the other available firmwares.
Once you've downloaded a firmware file (it should be a version for the "FORDBOARD" and have the ".bin" extension) programming the VI is simple - follow the USB programming instructions.
Besides using binary firmware for app developers, you can build your own code to run on the VI. You can use the official OpenXC VI firmware (the source for most binary firmware, e.g. those from Ford) or start from scratch with a blank project.
Alternatively, you can use one of a few lower level programming options (some even allow in-circuit debugging). More details are available in the firmware page.
This site contains complete documentation of the hardware, design motivations, fabrication and testing plans. Every component is released as open source hardware and the source files are available in the openxc/reference-vi GitHub repository (along with the contents of this website).
The particular unit is a reference design for a "dongle" style vehicle interface that connects directly to the diagnostic port with no cable. Ford created this design as an iteration from the original, chipKIT-based vehicle interface with the goal to:
This streamlined vehicle interface uses a ARM Cortex-M3 microcontroller (NXP's LPC1769), a dual-channel CAN transceiver from NXP, the RN-41 Bluetooth module from Roving Networks and includes a micro-USB port. The design also includes a 12v port (with a Molex connector) to power an external device from the car, and this port can be shut off with the car to avoid battery drain.
We also designed and prototyped a plastic housing for the board that allows it to be easily gripped and attached/detached from the OBD-II port underneath the steering wheel.
The device is not as compact as it could be, primarily because we design it to use only a 2-layer PCB (to make it more accessible for hobbyists). Depending on the placement and angle of the OBD-II port in your vehicle, the VI may protrude too much - we recommend one of the many available OBD-II extension cables if that's the case.
The current BOM total cost for the electrical components in 1,000 unit quantities is around $45.
The electrical reference design was created by Bug Labs, contracted by Ford and in collaboration with Ford Research and Innovation engineers in both Palo Alto, CA and Dearborn, MI. For a full list of the contributors to this project, see the AUTHORS file.
Copyright (c) 2013 Ford Motor Company
This vehicle interface is open source hardware. The electrical and mechanical designs in this repository are available under the Creative Commons Attribution 4.0 International license.