Apple Carplay & Android Auto on Linux

Standalone Apple Carplay and Android Auto head unit for Linux

LIVI - Linux In-Vehicle Infotainment - is an open-source project that provides a standalone Apple Carplay and Android Auto head unit. It runs on Linux desktops and ARM-based embedded platforms such as Raspberry Pi, with pre-built releases also available for macOS and Windows.

Features

Multi-Display

LIVI can run as multiple windows at once. The Dash and Aux windows are freely assignable and can show the dashes, the reverse camera or the media player. Assignment is not exclusive: any feature can be shown on one, several, or all windows at the same time.

Dashboard

Aux Screen Main Screen

Supported Hardware

LIVI runs on:

On Raspberry Pi 4 and 5, video is decoded on the SoC's hardware decoder and stays on the GPU end to end through the zero-copy GStreamer pipeline.

On Linux, both Apple CarPlay and Android Auto are supported natively. Native CarPlay (wired & wireless) requires an MFi authentication coprocessor (see below). Android Auto is native — wired on all platforms, wireless on Linux.

Installation

Pre-built binaries for Linux, macOS, and Windows are available here: https://github.com/f-io/LIVI/releases

How it works

On Linux, LIVI implements the CarPlay and Android Auto accessory side natively. Wireless sessions run over LIVI's own Wi-Fi access point with Bluetooth pairing, wired sessions run directly over the USB cable. Video is decoded on the platform's hardware decoder and stays on the GPU end to end through the zero-copy GStreamer pipeline.

Native CarPlay authenticates against the phone with an Apple MFi coprocessor (see below). Android Auto needs no extra hardware. A legacy USB-dongle path also remains for platforms without native support (see Legacy: USB dongle).

MFi Authentication

Native CarPlay requires the accessory to authenticate against the phone using an Apple MFi authentication coprocessor. This is a hardware chip, it cannot be emulated in software, and LIVI does not ship or bypass it. You need a physical coprocessor (for example salvaged from a certified CarPlay accessory or sourced as a module) wired to the I²C bus of your board.

Without a coprocessor, native CarPlay is unavailable. Dongle-based CarPlay (the dongle carries its own auth chip) and all Android Auto paths work regardless.

Build Environment

Node pnpm electron chrome release gstreamer

Screenshots

CarPlayAndroid Auto

SettingsMedia

Legacy USB dongle

A legacy path brings CarPlay to systems without native support: a USB dongle that carries its own authentication chip and handles the protocol on the hardware side. It is the option for macOS and Windows or for Linux setups without an MFi coprocessor. It still works, but it is no longer the focus of development.

Supported dongles: CPC200 series (CCPA, CCPW).

Documentation

Detailed setup steps can be found in the GitHub repository: https://github.com/f-io/LIVI

Contributing

Contributions are welcome. Issue reports, pull requests and hardware compatibility findings help improve the project.

Disclaimer

Apple and CarPlay are trademarks of Apple Inc.
Android and Android Auto are trademarks of Google LLC.
This project is not affiliated with or endorsed by Apple or Google.
All product names, logos and brands are the property of their respective owners.