Once you have a vehicle interface sending out OpenXC-formatted data, you need a “host device” where you will write applications. The only requirement of a host device is that it can receive and parse OpenXC vehicle data via USB, Bluetooth or a network interface. There are a number of different development choices, and the list continues to grow.

Android

For instructions on getting started with Android development and a full list of tested Android devices, see the Android host device page.

Why Android? It’s important that OpenXC rally around a single platform to maximize compatibility and momentum. We looked for a platform that is accessible programmers with a wide range of skills and experience, and uses a popular programming language. The barriers to understanding and developing for vehicles are high enough (e.g. learning about CAN and about UI appropriate at 70mph) that learning a new niche programming language would be a huge barrier to entry. Android also benefits from a plethora of available hardware at a range of prices and capabilities, furthering accessibility.

Finally, Android is a massively popular application development environment. Since the OpenXC library is only a small part of any OpenXC application, more general questions can be directed to the existing community of Android developers.

Python

The OpenXC Python library provides access to vehicle data from a VI in a more familiar desktop programming environment. The library also includes a number of command line tools that are very handy for testing custom firmware.

The primary platform for OpenXC applications is Android, but for prototyping and testing, it is often preferable to use a low-overhead environment like Python when developing.

iOS

There are a few reasons why iOS is not supported right now for - check out this detailed discussion in the Google Group to see if you can help.