About this project
LIVI (Linux In-Vehicle Infotainment) is an open-source head unit application that implements the Apple CarPlay and Android Auto accessory side natively. It runs on Linux (ARM and x86_64, including Raspberry Pi 4/5 and CM4/CM5) and macOS (Apple Silicon and Intel), and is distributed under GPL-3.0-or-later.
Connectivity
- Apple CarPlay, wired and wireless, on Linux and macOS. Wireless requires a Bluetooth adapter plus a Wi-Fi interface dedicated to LIVI's own access point; wired works over any USB port without OTG.
- Android Auto wired on all platforms; wireless Android Auto on Linux.
- CarPlay requires MFi authentication via an Apple coprocessor, either wired to the I²C bus on the board or reached over the network through a LIVI Link. LIVI does not ship or bypass the chip, and does not support Apple's Basic Accessory Authentication on macOS.
Media and input
- Native zero-copy GStreamer video pipeline with hardware-accelerated H.264/H.265 decoding; software decode fallback when no VA-API driver is present.
- Low-latency audio, phone calls and microphone uplink, now-playing metadata with album art, and turn-by-turn navigation data.
- Touch, knob/D-Pad and hard-key input, day/night mode, and GPS forwarding to the phone.
Multi-session
- Several phones can be connected at once across wireless CarPlay, wired CarPlay and wireless Android Auto; wired Android Auto is limited to one device. Sessions keep state, battery, signal, media metadata and navigation updated in the background, and switching is a handover rather than a reconnect.
Displays and calibration
- Multi-display support: Main, Dash and Aux windows can be placed on separate physical displays, with features assignable non-exclusively.
- Stream resolution, view area insets and safe area are configurable independently for main and cluster streams on both CarPlay and Android Auto.
- Software display calibration for gamma, contrast and RGB channels, applied as a single compositor pass over the finished frame.
Telemetry and GPS
- A dashboard (work in progress) consumes telemetry over IPC/socket; a CLI in scripts/tools pushes test data.
- GPS reads NMEA-0183 receivers on a serial port, with extra u-blox UBX polling for module identity and RF front-end state. The receiver can also set system time and timezone.
Installation and build
- A single install script supports desktop and headless hosts, using apt or dnf, tested on Raspberry Pi OS, Ubuntu 26.04 and Fedora 44. OpenGL ES 3.x is required; Pi 4/5 and CM4/CM5 need Debian 13 (Trixie), while Pi 3 and earlier are unsupported.
- Prebuilt AppImage for Linux x86_64 and a dmg for macOS arm64 are provided.
- Building requires Node.js 24.x with pnpm, stable Rust (≥1.88), GStreamer development packages, and on Linux Wayland/xkbcommon headers plus runtime packages for CarPlay and wireless Android Auto (bluez, hostapd, dnsmasq-base, iw, rfkill, avahi, pulseaudio-utils). On macOS the video addon links against GStreamer.framework.
Debugging flags and log locations are documented in DEBUGGING.md. The project is not affiliated with or endorsed by Apple or Google.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.