DashPack is a hackish CAN bus interface system designed specifically for Porsche vehicles, enabling add-on capability for detecting passenger interaction with the vehicle switchgear. Think 'celebrationator' from Cloudy with a Chance of Meatballs.
Your kids will say a joke setup, then push their window up switch and the audio system will play a quotable audio file. For example:
Son: What does this button do? (presses window up switch) (Audio system plays Spaceballs): "Thank you for pushing the self destruct button..."
The goal here is simultaneous participation in the dynamics of driving. The only safe controls available to the passengers are the seat and window controls. Specifically window up. This program will play a set sound on 'auto-up' at every boot, and a random sound at 'regular up'. This allows the passengers to trigger random sounds by default, or a known sound if they hold the 'auto up' function of the switch. It does serve the purpose of shared experience in the way few other in-vehicle interactions can for passengers.
The following instructions are highly specific to a 2018 Porsche Macan Base Model. If you have a different vehicle, you'll need to make significant modifications to the CAN bus connections, message IDs, and potentially the software to make this work in your vehicle. The CAN bus architecture, pinouts, and message formats vary significantly between different makes, models, and years.
- Anything with socketcan capability will work, like an old laptop.
- InnoMaker USB2CAN adapter, or a wide variety of others.
- PosiTaps for CAN bus connection, and the will to modify your car.
- 3.5mm audio output capability Optional but highly recommended: dead simple 2.4ghz audio transmitter and receiver with 3.5mm aux in and out. There is no such thing as reliable bluetooth so this approach significantly reduces headaches, while allowing the computing hardware to be stored outside the main cabin.
The CAN bus connection is made at the gateway module using PosiTaps:
- CAN Low: Pin 5
- CAN High: Pin 15
-
System Requirements:
- Raspberry Pi 4 Model B
- Extended life SD card (recommended for frequent power cycles)
- 64-bit desktop Raspberry Pi OS
-
Initial Setup:
- Hostname: dashpack.local
- Username: dashdev
- Enable SSH
- Configure WiFi
-
Software Installation:
sudo apt-get update
mkdir projects
cd projects
git clone [repository-url]
apt-get install pipenv mplayer can-utils xterm- Python Dependencies:
pipenv install playsound pynput pygame python-can
pipenv run python setup.py developsudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0
pipenv run python dashpack/windows.py --simulatecangen vcan0 -I 3d0 -D 0000140085 -g 1000Connect the Raspberry Pi's 3.5mm output to the vehicle's AUX port for audio feedback.
Create ~/.config/autostart/dashpack.desktop:
[Desktop Entry]
Type=Application
Name=DashPack
Exec=xterm -hold -e 'cd /home/dashdev/projects/DashPack && /usr/bin/pipenv run python -u dashpack/windows.py | tee -a /home/dashdev/windows.log'Here's a schematic of how the system is configured in a base model 2018 porsche macan, which should work for any model with a can gateway. Any access to the CAN comfort bus is truly the only hard requirement, which is present at multiple places in the vehicle.
There are a wide variety of sound effects from various films in the sounds/ folder. Short and verbal works better than pure sound effects. Although a laser pew-pew can be fun as well, our family enjoyed movie quotes best.
Check the docs folder for various 2018 porsche macan recordings of the comfort bus while the seat, window and center console switches were pressed, along with screencaps of the wiring diagrams.
Not sure where to get started? The Car Hackers Handbook is a great place to begin.
Here's an overview of what the gateway module looks like under the right rear bench seat. The connector is unplugged, the large circle is the fuel pump cover. You'll want to find pins 5 and 15 (which is surprisingly easy once you unwrap the cable and probe them with a needle probe and a picoscope), then positap them, and run those wires through a conduit, under the existing wires for the fuel pump, seat warmers, etc, then back undernath the fold down backrest to the cargo area. There is a great deal of space to work with.
Here's a snapshot of the under load floor area with all the enormous amounts of space for placing systems. The CANBUS inside the conduit runs under the components shown, so the load floor looks completely stock. The various systems are simply gorilla taped to the felt on the floor or onto the styrofoam jack older. This holds them in place very well without residue left behind.
Full hardware list:
- Raspberry Pi 4 Model B
- InnoMaker USB2CAN-C Adapter
- SanDisk 128GB Extreme SD Card
- Raspberry Pi Case
- Posi-tap Connectors (20-22 Gauge)
- Braided Cable Conduit
- 2.4GHz Audio Transmitter/Receiver Pair
Future work Future goals include different effects based on:
- Manage HVAC (Heating, Ventilation, and Air Conditioning) settings
- Control seat functions (ventilation, heating, position)
- Interface with various vehicle comfort systems
(Not necessary, but good for future development.)
- CAN Low: Pin 10
- CAN High: Pin 20