Skip to content

Laptopmini/PorschePi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PorschePi

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.

Picture of separated PCB

General Information

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.

Key Features

  • 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

Software

TOTAL: $38.99

Hardware

TOTAL: $598.63

Tools

The cost of tools was omitted as most were owned, borrowed or will remain after this project.

Cost

TOTAL: $637.62

TARGET: < $1,350.10

Resources

BlueWave Studio

HiFiBerry BeoCreate

WaveShare

Timers Shop

Setup

For the following instructions, connect a regular display and use a keyboard & mouse until you have completed the Waveshare Touchscreen step.

OpenAuto

  • 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 and ENTER keys to work your way through the wizard

Autobox (CarPlay)

  • Once on the main screen, select Autobox, and Browse
  • Go to /boot/porschepi/ and select openauto_autobox_plugin.zip
  • Then select Enter serial..., and use your plugin license key
  • Select Finish, and from your iPhone, connect the the bluetooth device named AutoKit-****
  • Wait for it to associate the wifi network, at which point the interface should appear
  • Within CarPlay, select Car to return to OpenAuto

Pi Settings

  • 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 to Porsche
  • Execute cd /boot/porschepi && sudo sh apply_configs.sh and wait for the Pi to power down

WaveShare Touchscreen

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

Bluetooth Remote

  • 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, select Pair then Trust

BeoCreate

  • 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

Create a Backup

  • 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

Assembly

Diagram

PorschePi Diagram

Form

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.

Picture of separated PCB

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.

Picture of timer wired in

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.

Picture of relay wired in

Fit

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.

Picture of shell

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.

Picture of shell with all components mounted in

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.

Picture of harness wired in

Finish

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.

Picture of unit testing in car

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.

Picture of unit in car

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.

3D Printed Bezel

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.

Picture of screen mounted

Troubleshooting

System Logs

You can find logs for OpenAuto under /home/pi/.openauto/cache/openauto.log.

CarPlay

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.

Display

If you see black borders around the screen, try disabling disable_overscan=1 and adapting the overscan_* properties in /boot/config.txt.

Splash

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

Custom Keys

To add keymaps, use DISPLAY=:0.0 xev to find the correct keycode and add mappings to /boot/porschepi/restore-settings.sh using xmodmap.

Volume

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.

Power Monitor

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.

Omitted Components

Here is a list of components which were considered at some point but omitted in the end for one reason or another:

About

RaspberryPi based custom head unit for classic Porsche.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published