xcertplay

Project Url: shilapi/xcertplay
Introduction: Carplay on Android head unit using onboard mfi chip or via CH341.
More: Author   ReportBugs   
Tags:

English | 中文

xcertplay is an Android head-unit CarPlay receiver. It supports connecting to the MFI chip through a CH341 I2C bridge or directly through the board's I2C controller, and supports both wired and wireless CarPlay connections.

Still under active development.

Features

  • CarPlay host applications for Android and Android Automotive OS.
  • Support for MFI chips connected through a CH341 bridge or native /dev/i2c-N devices.
  • Wired and wireless CarPlay connections.
  • CarPlay Ultra triggering (the protocol stack is untested/incomplete, but it can trigger the CarPlay Ultra prompt on an iPhone).
  • Voice, navigation, and music multi-channel audio output mapped to the corresponding Android channels.
  • Dynamic Activity resizing with automatic re-handshaking to the new resolution.
  • Vehicle head-unit location reporting.
  • Android 9 (API 28) support.

Current progress

It works 👍. It has been tested on car head units and phones. If you encounter an incompatible car head unit, please open an issue and attach your log from /sdcard/Android/data/com.shilapi.xcertplay/files/logs/xcertplay.log.

Adapter board: CH341-to-MFI

Waiting for the MFI chip adapter board to arrive...

Project structure

Path Purpose
common/ Shared CarPlay host activity, settings UI, persistence, and app resources used by both targets.
mobile/ Standard Android target using the shared CarPlay host UI.
automotive/ Android Automotive OS target with the shared host UI and advanced audio channel mapping.
shared/ Car App Library code plus the CH341, I2C, MFi, iPhone, iAP2, NCM, VPN, AirPlay, and media implementations.

Requirements

  • JDK 17 or newer to launch Gradle. The daemon resolves Java 25 through the Gradle toolchain.
  • Android SDK Platform 37.
  • Android 9 (API 28) or newer. On Android 9, Wi-Fi P2P 5 GHz mode is unavailable and LocalOnlyHotspot is used instead.
  • Android NDK 28.2.13676358.
  • A physical USB Host/OTG Android device and MFi hardware are required for hardware validation.

Build

On Windows PowerShell:

$env:JAVA_HOME = "C:\Program Files\Android\Android Studio\jbr"
.\gradlew.bat :shared:testDebugUnitTest :common:lintDebug :mobile:lintDebug :automotive:lintDebug :mobile:assembleDebug :automotive:assembleDebug

On macOS or Linux:

./gradlew :shared:testDebugUnitTest :common:lintDebug :mobile:lintDebug :automotive:lintDebug :mobile:assembleDebug :automotive:assembleDebug

Unsigned release APKs:

.\gradlew.bat :mobile:assembleRelease :automotive:assembleRelease

Acknowledgements

Thanks to LIVI for providing important reference for this project.

License

Licensed under the GNU General Public License v3.0.

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools
AI Daily Digest