f-io / LIVI
git clone https://github.com/f-io/LIVI.git
v9.4.0 · 12d ago
Native CarPlay & Android Auto head unit for Linux (ARM/x64) & macOS (ARM/x64). Multi-session wired + wireless projection, zero-copy hardware video decoding, low-latency audio.
+5
stars, 24h · #2,745
+~35
stars, 7 days · #3,373
+~150
stars, 30 days · #3,369
947
★ total · +4% this week
125
forks · 1 open issues
Star history (as recorded here)
LanguageRust
LicenseGPL-3.0
Created2025-05-02 (1y ago)
Last push1d ago
Watchers16
OwnerUser
GitHub topics
Links
- GitHub: github.com/f-io/LIVI
- Homepage: https://f-io.github.io/LIVI/
- Releases · Issues · Hacker News mentions
README excerpt
# LIVI – Linux In-Vehicle Infotainment LIVI is an open-source **Apple CarPlay and Android Auto head unit**. It is a standalone cross-platform head unit with a native, zero-copy GStreamer video pipeline and hardware-accelerated decoding on Linux (including the Raspberry Pi 4 and 5) and macOS, low-latency audio, multitouch + D-Pad navigation, and support for very small embedded/OEM displays. ## Project Status ## Native Connectivity - **Apple CarPlay** (wired & wireless) on Linux and Mac — requires MFi Authentication - **Android Auto** (wired & wireless) on Linux and Mac — wireless on Mac requires a LIVI Link ## Native Apple CarPlay Ultra LIVI implements the CarPlay accessory side natively, wired and wireless, on Linux and on macOS. Wireless sessions run over LIVI's own Wi-Fi access point with Bluetooth pairing, wired sessions run directly over the USB cable (no OTG required). - main and instrument cluster video (H.264 and H.265/HEVC, hardware decoded, zero-copy) - configurable cluster content: map or maneuver card, compass, ETA, speed limit - audio playback, phone calls, microphone uplink, Siri - volume in both directions between phone and LIVI - now-playing metadata incl. album art, turn-by-turn navigation data - touch, knob/d-pad and hard-key input - GPS forwarding and clock synchronization - day/night mode - dock position left, right or bottom, right-hand drive - multi-session with live switching between connected phones - wireless sessions move to the cable when plugged in - video in the car (AirPlay video while parked, no FairPlay-protected content) - climate control\* - extended vehicle data\* - car maker themes\* \* CarPlay Ultra only Wireless CarPlay requires a Bluetooth and a Wi-Fi interface. Both can come from a LIVI Link, which brings its own radios. Wired CarPlay works on any USB port. ## MFi Authentication CarPlay requires the accessory to authenticate against the phone. The usual way is an Apple **MFi authentication coprocessor**, a hardware chip that cannot be emulated and that LIVI neither ships nor bypasses. Two routes: - **On the board** — a coprocessor wired to the I²C bus - **Over the network** — a LIVI Link Both routes work on Linux. A Mac has no I²C bus to put a coprocessor on, so there the LIVI Link is the only one. LIVI does not support Apple's Basic Accessory Authentication on MacOS, but may in the future. For a chip on the board, configuration (`config.json`): | Key | Default | Description | | --------------------- | ------- | ------------------------------------ | | `carPlayMfiI2cBus` | `2` | I²C bus number the coprocessor is on | | `carPlayMfiPowerGpio` | `21` | GPIO that powers the coprocessor | Without one of these, native CarPlay is unavailable. All Android Auto paths work regardless. ## Wireless Wireless sessions do not need a router. LIVI brings up its own Wi-Fi access point and the phone joins that. Bluetooth carries the pairing and the handover, the session itself then runs over Wi-Fi. Wireless CarPlay and wireles