このプロジェクトについて

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の下で配布されています。 接続性 - Apple CarPlay、有線および無線、LinuxとmacOS上で。無線にはBluetoothアダプタと、LIVI専用のアクセスポイント用Wi-Fiインターフェースが必要です。有線はOTGなしの任意のUSBポートで動作します。 - Android Autoは全プラットフォームで有線、無線Android AutoはLinuxで。 - CarPlayにはAppleコプロセッサによるMFi認証が必要で、ボード上のI²Cバスに有線接続するか、LIVI Linkを介してネットワーク経由で到達します。LIVIはチップを出荷したりバイパスしたりせず、macOSでのAppleのBasic Accessory Authenticationをサポートしません。 メディアと入力 - ネイティブのゼロコピーGStreamerビデオパイプラインとハードウェアアクセラレーションによるH.264/H.265デコード。VA-APIドライバがない場合はソフトウェアデコードにフォールバックします。 - 低遅延オーディオ、通話とマイクアップリンク、アルバムアート付きの再生中メタデータ、ターンバイターンナビゲーションデータ。 - タッチ、ノブ/D-Padおよびハードキー入力、デイ/ナイトモード、GPSのスマートフォンへの転送。 マルチセッション - 無線CarPlay、有線CarPlay、無線Android Autoにまたがって複数のスマートフォンを同時に接続できます。有線Android Autoは1台のデバイスに制限されます。セッションは状態、バッテリー、信号、メディアメタデータ、ナビゲーションをバックグラウンドで更新し続け、切り替えは再接続ではなくハンドオーバーです。 ディスプレイとキャリブレーション - マルチディスプレイ対応: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が提供されています。 - ビルドにはNode.js 24.xとpnpm、安定版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と提携しておらず、承認も受けていません。