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
- Apple CarPlay (wired & wireless) on Linux — requires an MFi authentication coprocessor
- Android Auto (wired) on all platforms
- Android Auto (wireless) on Linux
- Multi-session with live switching between connected phones
- Native, zero-copy video pipeline via GStreamer (hardware-accelerated decoding)
- Instrument cluster video stream support
- iAP2 turn-by-turn navigation data support
- Audio metadata and playback state integration
- Unified low-latency audio backend via GStreamer
- Microphone input support for voice assistants and phone calls
- Touchscreen and multi-touch support
- Multi-Display support with flexible routing
- Full non-touch navigation via D-Pad and button controls
- UI optimized for low-resolution OEM in-car displays
- Hardware-accelerated H.264, H.265, VP9 and AV1 (where the platform provides a decoder)
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.
Supported Hardware
LIVI runs on:
- Linux desktops (Debian, Arch, Fedora, Ubuntu etc.)
- Raspberry Pi OS Trixie (Pi 4, Pi 5, CM4, CM5)
- Other ARM64 Linux devices capable of running Electron (AppImage)
- Mac (arm)
- Windows (only tested on 10)
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
Screenshots
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.