RaspberryPi based custom head unit for classic Porsche. Inspired by the Porsche Classic Communication Management (PCCM) (91164559100), featuring a much larger touchscreen and the ability to use CarPlay wirelessly.
In short, the goal was to create a single DIN head unit which fits in the rather restricted dashboard of classic Porsches without the need for any drilling, cutting or soldering (of the cabin), all the while making it look as OEM as possible. The results is a RPi 3 sandwiched between a Waveshare LCD controller and a Bang & Olufsen Hifiberry soundcard, with a graceful shutdown mechanism, powered USB hub, all fitted inside a removable single din unit.
- 7.9" Touchscreen
- Bang & Olufsen amplifier w/ 4 channel output
- Bluetooth remote for quick Play/Pause, Skip, Volume control
- Wireless CarPlay w/ Siri supported
- Porsche boot screen
- Porsche logo in CarPlay interface
- Porsche colored OAP interface (Black, Grey, Red)
- Graceful shutdown w/ 5 minute standby mode when ignition turn off
- 3D printed bezel
- OpenAuto Pro v16 ($29.99)
- Plugin CarPlay Autobox for OpenAuto Pro ($9.00)
TOTAL: $38.99
- Raspberry Pi 3 Model B+ ($35)
- BeoCreate 4-Channel Amplifier ($189.95)
- Waveshare 7.9inch Capacitive LCD HDMI Display ($96.99)
- SanDisk Extreme PRO microSDHC Memory Card Class 10 ($13.23)
- Carlinkit Wireless Carplay Dongle ($58.99)
- Powered USB Hub ($18.99)
- USB Microphone Adapter ($13.99)
- 3.5mm TS to TRS ($5.95)
- Bluetooth Media Remote Button ($17.99)
- GPIO Female to Female Jumper Wires ($5.99)
- 12v 16AWG Cables (5ft/Color) ($15.62)
- 12v Timer Relay ($34.99)
- 12v to 5v Stepdown ($13.99)
- SPDT Relays ($10.97)
- Heatshrink Crimp Connectors ($9.99)
- T-Tap Wire Connectors ($9.95)
- Nylon Standoffs ($12.89)
- Heatshrink Tubbing ($6.99)
- 6-Pin Ribbon Cable ($6.69)
- 6-Pin Extension Connector ($7.99)
- 40-Pin Ribbon Cable ($6.90)
- Heatsinks ($4.59)
TOTAL: $598.63
- USB Keyboard & Mouse for setup
- DC 5V 3A Power Supply for Pi setup
- DC 12V 5A Power Supply for Amplifier setup
- Power Drill
- Dremel Tool
- Heat Gun
- Wire Stripers
- Crimping Tool
The cost of tools was omitted as most were owned, borrowed or will remain after this project.
TOTAL: $637.62
TARGET: < $1,350.10
For the following instructions, connect a regular display and use a keyboard & mouse until you have completed the Waveshare Touchscreen
step.
- Flash your
openauto-pro-16.0.zip
image to the SD card - Remount & run
sh copy_helpers.sh /Volumes/boot/
- Insert the SD Card into the Pi, and boot up the setup
- Use
1
,2
,UP
,DOWN
andENTER
keys to work your way through the wizard
- Once on the main screen, select
Autobox
, andBrowse
- Go to
/boot/porschepi/
and selectopenauto_autobox_plugin.zip
- Then select
Enter serial...
, and use your plugin license key - Select
Finish
, and from your iPhone, connect the the bluetooth device namedAutoKit-****
- Wait for it to associate the wifi network, at which point the interface should appear
- Within CarPlay, select
Car
to return to OpenAuto
- Use [Power] -> [Exit] to reach the Pi's desktop
- Go through the "Welcome to Raspberry Pi" setup but ignore the "Set Up Screen" step for now, do NOT update packages
- Make sure SSH is enabled under the Raspberry Pi Configuration, use the command
ifconfig
to make note of the Pi's assigned IP on the network - Under
Preferences
->Appearance Settings
, change the wallpaper to/boot/porschepi/splash.png
and invert the Menu Bar's colors - Under
Preferences
->Raspberry Pi Configuration
, change the hostname toPorsche
- Execute
cd /boot/porschepi && sudo sh apply_configs.sh
and wait for the Pi to power down
- Connect the Waveshare touchscreen and restart the Pi
- If you still need to adjust your screen orientation, do the following
- [Power] -> [Exit] out of OpenAuto
- Go to
Screen Configuration
,Configure
,Screens
,HDMI-1
,Orientation
- Using the "Rotate Touch" button behind the screen, press until you see a green flash to rotate the touch. Repeat as necessary.
- Press any button on the bluetooth remote, it should start blinking
- From the Pi's desktop, go to
Preferences
->Bluetooth Manager
- In the list of devices, select
Jetion remote v2.0
- Under
Device
, selectPair
thenTrust
- Refer to
beocreate/docs/jumpers.png
and remove jumper 4 & 5 on the Beocreate HAT. - Refer to
beocreate/docs/connectors.png
to know how to wire in the soundcard to your speakers - Connect the Pi to the BeoCreate HAT and power it up using the 12v input
- Lower the volume in OpenAuto (or from the Pi's Sound Preferences) to avoid damaging your speakers when first testing
- Execute
cd /boot/porschepi/beocreate && sudo sh setup.sh
- Make an image of your SD card using
sudo dd bs=4m if=/dev/disk2 of=builds/porschepi-X.Y.Z.img
- Reflash this image anytime to a similar sized SD card to restore this setup
First, you need to separate the screen from its PCB carefully using a knife. I recommend you disconnect its ribbons and tape them safely out of the way to avoid damaging them. Once done, upgrade to the longer ribbons to provide more working room between the board and display.
I recommended you bench test components independently before mounting them. Keep in mind to space out components which produce heat, such as the PCB stack from other parts. Use heatsinks to help dissipate the heat from the PCB stack.
For the timer, temporarily wire it to a power source according to the previous schematics, and ground the white wire while you power it on to enable wifi configuration. Connect to its network and visit the IP listed on the timer. Import the configuration timer/configuration.bin
, or set it to Function 12 with a timer t1 of 5 minutes and trigger value of 2. As seen in the diagram, its recommended you make this configuration wire output from your unit; you can then add a T-tap (or similar) to your ground wire to easily connect it at any time to make adjustments to its configuration.
To test or wire in the automotive relay (to monitor the state of the ignition), enable the power monitoring by setting POWER_MONITOR_ENABLED=1
in /boot/porschepi/settings.conf
. When ignition is cutoff, the screen and sound is turned off during a grace period at the end of which the system is shutdown. If ignition is restored, the screen and sound are re-enabled and any shutdown canceled. The script is setup to use GPIO / BCM 16 - physical pin 32 on Beocreate GPIO. This allows the use of the neighboring ground on pin 34, as seen below.
As with the PCCM, one of the goals of this project is to fit into a standard single DIN format. After finding an old unit, take it apart and gut out its components to reuse the shell as a donor for your new hardware.
Using the previously mentioned diagram, arrange the components within the shell accordingly. Using a Dremel tool, you can clean up mounting points and cut out any conflicting parts of the shell.
Once the unit is completed, wire it into the harness used to connect the head unit to the car. Optionally, you can add a 15AMP fuse onto the positive power input to insulate your unit from other components relying on your vehicle's existing fuse.
As a safety measure, remove the fuse corresponding to the head unit in your car, then connect the harness before reapplying the fuse. Verify that all functions are working before proceeding with inserting the unit into the dashboard.
If you run into issues, check out the Troubleshooting section below for some common issues. Once you've verified your setup, insert the unit into the dashboard carefully, making sure wires behind it are clearing any obstructions and not getting pinched. You can access the back of the unit through the underside of the dashboard. Don't forget to mount the bluetooth remote as well.
Given my limited experience with 3D printing, I enlisted the help of a friend to design and print a bezel for the screen with mounting tabs to secure it to the dashboard. Use the waveshare/bezel.STL
file to print your own copy. If you don't own a 3D printer, I recommend using an online printing service.
Insert the screen into the 3D printed bezel and then push its tabs into the slits of the dashboard to securely mount it. Make sure the first insert the top then bottom, as to clear the instrument knobs located above the head unit.
You can find logs for OpenAuto under /home/pi/.openauto/cache/openauto.log
.
If you need to reset your CarPlay connection on your device, go to Settings.app, and forget both Bluetooth and Wifi networks for AutoKit-****
. Then reconnect via bluetooth to re-initiate the pairing process.
If you see black borders around the screen, try disabling disable_overscan=1
and adapting the overscan_*
properties in /boot/config.txt
.
To make a new splash screen based on a sequence of 24 images use the following command:
ffmpeg -r 24 -f image2 -s 1280x400 -i rpi/splash_%01d.png -start_number 1 -vframes 24 -vcodec libx264 -crf 25 -pix_fmt yuv420p splash.h264
sudo cp -f ~/splash.h264 /usr/share/openautopro/splash1.h264
sudo cp -f ~/splash.h264 /usr/share/openautopro/splash2.h264
To add keymaps, use DISPLAY=:0.0 xev
to find the correct keycode and add mappings to /boot/porschepi/restore-settings.sh
using xmodmap
.
To change the default volume of the amplifier (not the default software volume), change the value of VOLUME
in /boot/porschepi/settings.conf
. Adjust this according to what your speakers can handle.
When using the Bluetooth Remote, if the volume is lowered or raised too fast repetitively, the left and right channel can become unbalanced (different volume) due to a bug. If this occurs, use the "Reset Volume" application in OpenAuto.
If you run into issues with the power monitoring service, you can check its status using systemctl status power-monitor.service
or disable its operation using POWER_MONITOR_ENABLED=0
in /boot/porschepi/settings.conf
. To check the service's logs run journalctl -u power-monitor.service
and use POWER_MONITOR_DEBUG=1
to make it print out debug statements.
If you ever make changes to the Timer's power cutoff timing, make sure to adjusts the SHUTDOWN_DELAY
accordingly in /boot/porschepi/power-monitor.py
. The value of SHUTDOWN_DELAY
should always be smaller than that of the timer, with enough time to allow for a graceful shutdown before power is cutoff.
Here is a list of components which were considered at some point but omitted in the end for one reason or another:
- Raspberry Pi 4 Model B 2019 Quad Core 64 Bit WiFi Bluetooth (4GB)
- Unable due to shortage
- CarPiHat
- Incompatible with 4-Channel Amplifier HAT
- ELM327 OBD to USB Adapter
- Poor access to OBD in car, impractical with little reward