tomasz-grobelny / AACS

Android Auto Server encapsulates communication with modern car infotainment system
GNU General Public License v3.0
225 stars 29 forks source link
aacs android-auto android-automotive communication gstreamer headunit openauto

Intro

Many new cars have headunits that support Android Auto (AA). While the default use case (connect mobile via USB) is already useful (eg. for navigation), one may look at AA headunits as a more generic input/output device.

This project attempts to provide a basic layer to access Android Auto headunits as a video display and later maybe touchscreen, soundcard, etc.

This project attempts to be specific enough to provide a clear way to set it up. On the other hand it attempts to be generic enough by providing connectivity to already existing software components.

Hardware

This software is being developed on Odroid N2 platform. Reasons behind choosing this platform:

If you want to try out this piece of code and/or help just buy Odroid N2. I do not have access to any other platform (ok, I tried BeagleBone Black, but it was too slow) so it would be extremely hard for me to provide any support. However, feel free to provide patches for other platforms.

System

The software is being developed on:

Installation

Instructions how to set up runtime and development environment can be found in the installation instructions document.

Design

Android Auto Protocol is not documented. However, it has been reverse engineered and open source implementation exists (see https://github.com/opencardev/openauto). While this code does not use a single line from openauto (except for headunit key/cert), openauto is extremenly useful while developing and testing AACS.

There are several components that comprise AACS:

AACS depends on Snowmix for video mixing.

Usage ideas

So what exactly could be displayed on headunit? Here are a few ideas:

Status

Currently AACS can do the following: