프로젝트 소개
LIVI(Linux In-Vehicle Infotainment)는 Apple CarPlay와 Android Auto의 액세서리 측을 네이티브로 구현한 오픈소스 헤드 유닛 애플리케이션입니다. Linux(ARM 및 x86_64, Raspberry Pi 4/5와 CM4/CM5 포함)와 macOS(Apple Silicon 및 Intel)에서 실행되며, GPL-3.0-or-later로 배포됩니다.
연결성
- Linux와 macOS에서 유선 및 무선 Apple CarPlay를 지원합니다. 무선은 Bluetooth 어댑터와 LIVI 자체 액세스 포인트 전용 Wi-Fi 인터페이스가 필요하며, 유선은 OTG 없이 모든 USB 포트에서 작동합니다.
- 모든 플랫폼에서 유선 Android Auto를, Linux에서 무선 Android Auto를 지원합니다.
- CarPlay는 Apple 코프로세서를 통한 MFi 인증이 필요하며, 보드의 I²C 버스에 유선으로 연결하거나 LIVI Link를 통해 네트워크로 접근합니다. LIVI는 칩을 제공하거나 우회하지 않으며, macOS에서 Apple의 Basic Accessory Authentication을 지원하지 않습니다.
미디어 및 입력
- 하드웨어 가속 H.264/H.265 디코딩을 사용하는 네이티브 제로카피 GStreamer 비디오 파이프라인; VA-API 드라이버가 없을 때 소프트웨어 디코딩 폴백.
- 저지연 오디오, 전화 통화 및 마이크 업링크, 앨범 아트가 포함된 현재 재생 메타데이터, 턴바이턴 내비게이션 데이터.
- 터치, 노브/D-Pad 및 하드키 입력, 주간/야간 모드, 휴대폰으로의 GPS 전달.
다중 세션
- 무선 CarPlay, 유선 CarPlay, 무선 Android Auto를 통해 여러 휴대폰을 동시에 연결할 수 있으며, 유선 Android Auto는 한 대의 기기로 제한됩니다. 세션은 상태, 배터리, 신호, 미디어 메타데이터, 내비게이션을 백그라운드에서 최신 상태로 유지하며, 전환은 재연결이 아닌 핸드오버입니다.
디스플레이 및 캘리브레이션
- 다중 디스플레이 지원: Main, Dash, Aux 창을 별도의 물리적 디스플레이에 배치할 수 있으며, 기능은 비배타적으로 할당할 수 있습니다.
- 스트림 해상도, 뷰 영역 인셋, 세이프 영역은 CarPlay와 Android Auto 모두에서 메인 및 클러스터 스트림에 대해 독립적으로 구성할 수 있습니다.
- 감마, 대비, RGB 채널에 대한 소프트웨어 디스플레이 캘리브레이션으로, 완성된 프레임 위에 단일 컴포지터 패스로 적용됩니다.
텔레메트리 및 GPS
- 대시보드(작업 진행 중)는 IPC/소켓을 통해 텔레메트리를 소비하며, scripts/tools의 CLI가 테스트 데이터를 푸시합니다.
- GPS는 시리얼 포트에서 NMEA-0183 수신기를 읽고, 모듈 식별과 RF 프런트엔드 상태를 위해 추가로 u-blox UBX 폴링을 수행합니다. 수신기는 시스템 시간과 시간대를 설정할 수도 있습니다.
설치 및 빌드
- 단일 설치 스크립트가 데스크톱 및 헤드리스 호스트를 지원하며, apt 또는 dnf를 사용하고 Raspberry Pi OS, Ubuntu 26.04, Fedora 44에서 테스트되었습니다. OpenGL ES 3.x가 필요하며, Pi 4/5와 CM4/CM5는 Debian 13(Trixie)이 필요하고 Pi 3 및 그 이전 모델은 지원되지 않습니다.
- Linux x86_64용 사전 빌드된 AppImage와 macOS arm64용 dmg가 제공됩니다.
- 빌드에는 pnpm이 포함된 Node.js 24.x, 안정적인 Rust(≥1.88), GStreamer 개발 패키지, 그리고 Linux에서는 Wayland/xkbcommon 헤더와 CarPlay 및 무선 Android Auto용 런타임 패키지(bluez, hostapd, dnsmasq-base, iw, rfkill, avahi, pulseaudio-utils)가 필요합니다. macOS에서는 비디오 애드온이 GStreamer.framework에 링크됩니다.
디버깅 플래그와 로그 위치는 DEBUGGING.md에 문서화되어 있습니다. 이 프로젝트는 Apple 또는 Google과 제휴하거나 이들의 승인을 받지 않았습니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.