carplay-1024x672 React Carplay - Open Source Carplay for Raspberry Pi

Intro

Carplay running on anything that is not an certified device is a tricky subject. Anything that is officially supported by apple requires a developer license and any hardware requires a special MFI (Made For Ipod/Iphone) chip. For a hobbyist/DIYer this is practically impossible. However with the booming interest in Canbus decoding, and DIY headunits, carplay fits perfectly. Using a small bit of extra hardware it is possible to run carplay on anything, from a Raspberry Pi in a car, to a home server running Home Assistant, or even direct on your iMac/Macbook using React Carplay (Sorry windows users you are left out here).

Hardware

Getting Started

The first thing needed is to get your Raspberry Pi set up and ready to run. The bare requirements are Raspberry OS installed and booted up, some optional extras are microphone and a camera.

Lets download the latest AppImage for React-Carplay, this can be found below, to follow along using the code blocks below, download this using your actual raspberry pi.

Download

Set Up

If you have downloaded the file, the default directory for the file to go is below (replace the values in curly brackets)

/home/{user}/Downloads/{downloaded-file-name}

At the current time of writing the latest version is v3.0.2 so the assuming you set your Raspberry Pi up as the standard user, then the full path is as below (the version number will likely be different)

/home/pi/Downloads/ReactCarplay-3.0.2-arm64.AppImage

First let’s open a terminal window and change into the parent directory.

cd ~/Downloads

Now let’s make the file an executable.

chmod +x ReactCarplay-3.0.2-arm64.AppImage

Copy the file to the desktop and give it an easier name to execute.

cp ReactCarplay-3.0.1-armv7l.AppImage ~/Desktop/Carplay.AppImage

Now we need to create some usb permissions, by default only sudo user has access to the carlinkit, so lets a udev rule that adds the dongle to the plugdev group.

echo "SUBSYSTEM==\"usb\", ATTR{idVendor}==\"1314\", ATTR{idProduct}==\"152*\", MODE=\"0660\", GROUP=\"plugdev\"" | 
sudo tee /etc/udev/rules.d/52-nodecarplay.rules

This creates a udev rule for any device by the vendor of 1314 (carlinkit) with a product id that matched 152x the x is a wild card as various different versions use a few different product IDs.

Running React Carplay

If you have followed all of the above and your dongle is plugged in then the app can be run using the commands below

cd ~/Desktop
./Carplay.AppImage

The first run will take longer to get start running as it needs to download the original APK so that it can extract some files. Once done you should be presented with the below screen. You can access some settings by clicking the settings button, here you can adjust the fps, you can disable kiosk mode, and if you have a camera connected, you can see the video feed here. If you disable kiosk mode then the app will open in a window defined by the resolution settings.

carplay_home-1024x581 React Carplay - Open Source Carplay for Raspberry Pi

If you plug in your phone to the dongle, carplay will load up. If you experience stutter at all then fps can be lowered, the official pi screen, and a pi4/3 running at 30fps is very stable. The pi4 can achieve 60fps!

To enable wireless, first connect via usb, then disconnect once carplay has loaded then in phone settings, go to bluetooth, find the autokit device, and press connect wireless carplay should then work!

Auto Launch

This step is optional, but provides a way to have react carplay run on boot. It is probably the simplest way to achieve this, but like most things, there are alot of alternatives.

First step is to edit an autostart .desktop file

sudo nano /etc/xdg/autostart/carplay.desktop

This will open a file called carplay.desktop, inside of this enter the below text

[Desktop Entry]
Name=File Manager
Exec=/home/pi/Desktop/Carplay.AppImage
Type=Application

Press control and x to quit, then press y to save changes. To test it run

sudo reboot now