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.
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
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.
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