Open-source activation code generator and toolkit for Porsche PCM 3.1 infotainment systems.
π Algorithm fully cracked β 64-bit RSA modular exponentiation, reverse-engineered from QNX firmware via Ghidra SH4 decompilation. Generate activation codes for any VIN, for free.
π Web tool: dspl1236.github.io/PCM-Forge β activation codes, USB stick builder, and modular diagnostic toolkit.
π What can I activate? β See FEATURES.md for the full list of 26 features with descriptions, retail costs, and hardware requirements.
All Porsche models with PCM 3.1 (Harman Becker, SH4A QNX 6.3):
| Model | Years | Notes |
|---|---|---|
| Cayenne (958) | 2011β2018 | Primary development target |
| Panamera (970) | 2011β2016 | Compatible |
| 911 (991.1) | 2012β2016 | Compatible |
| Boxster/Cayman (981) | 2013β2016 | Compatible |
| Macan (95B) | 2014β2018 | Compatible (pre-refresh) |
Not compatible with: PCM 3.0 (Cayenne 957, 997, 987 β older hardware, different activation algorithm), PCM 4 / MIB2 (991.2+, 718, Panamera 971, refreshed Macan β ARM platform, different architecture).
PCM 3.1 has three hardware revisions. The update disc auto-detects your hardware and installs the correct version β it will not flash the wrong firmware.
| Hardware | Code | Max Firmware | Era | IOC |
|---|---|---|---|---|
| Gen 1 "9600" | PCMG01XX | v2.47 | 2010β2012 | 9600 |
| Series 1 "9612" | PCMS01XX | v3.43 | 2012β2013 | 9612 |
| Series 2 "9633" | PCMS02XX | v4.76 | 2013β2018 | 9612 |
Check your version: press INFO β Option β Show System Version.
Firmware update ISO (v4.76 / v3.43 / v2.47 β all in one): hausofdub.com/iso/PCM_NA_20150721.ISO β burn to DVD-R (Verbatim recommended, 4x speed). North America region, also confirmed working on ROW units.
Wiring diagrams: hausofdub.com/wireview β browse by model, year and system. Each sheet shows its connector pinout alongside the drawing, and prints or exports to SVG and PNG. The PCM and gateway connectors this project works against are in research/CAYENNE_958_PINOUTS.md.
PCM-Forge activation compatibility: Tested and verified on PCMS02XX (v4.76). The RSA-64 algorithm is firmware-independent, but v2.47 and v3.43 are untested β if you're on older firmware and have issues, run the diagnostic USB and open an issue.
The web app at dspl1236.github.io/PCM-Forge has four tabs:
Enter your VIN β generates all 26 activation codes instantly. No server, no account, runs entirely in your browser.
Builds a ready-to-use USB stick with activation codes and optional diagnostic probe. The USB stick uses the same copie_scr.sh autorun mechanism as Audi MMI3G β proc_scriptlauncher runs the script automatically when the USB stick is inserted.
Includes an enhanced diagnostic mode that dumps 29+ system tests to the USB stick without modifying the car.
Modular USB toolkit for PCM 3.1 diagnostics and utilities. Select modules and build a USB stick β each module is fetched from modules/ at build time, so the list stays in sync with the repo:
| Module | Status | Description |
|---|---|---|
| System Info | β Ready | Full PCM dump: version, VIN, mounts, processes, network, partitions, IPC, engineering screens |
| Telnet Enabler | β Tested | Root shell β telnet (port 23) + raw ksh (2323). Session-only, re-run after reboot |
| USB Ethernet | β Tested | Universal ASIX driver (AX88772 / 772A / 772B / 772C) with DHCP / static / LTE. Loads from USB, never touches flash |
| IOC Probe | β Ready | Map IPC/CAN channels and discover the BAP instrument-cluster interface. Read-only |
| BT / AUX Fix | π§ͺ Experimental | Stops the PCM defaulting to FM at startup β routes a connected phone to Bluetooth (A2DP). Self-locating runtime patch, reboot-reverts |
| Service Reset | π§ͺ Alpha | Oil / service interval reset via UDS/BAP CAN. No PIWIS needed |
| LTE Setup | Superseded by USB Ethernet (which includes an LTE mode) |
Upload the PagSWAct_backup.002 that Diagnostic mode pulls off the PCM to see exactly what's currently activated, then add features on top and download a merged PagSWAct.002 β so you keep every existing activation instead of overwriting them.
The PCM 3.1's built-in Cinterion AC75i modem (2G GPRS/EDGE) is dead after the 2G/3G network shutdown (US 2022, EU ongoing). Internet can be restored via USB ethernet:
USB port β AX88772 adapter β LTE router β internet
Driver: devn-asix.so (already in PCM firmware)
Interface: en5 (same as Audi MMI3G+)
Compatible chipsets: ASIX AX88772, AX88772A, AX88772B. The AX88772D is not auto-detected but works with a device ID override: io-pkt-v4-hc -d asix did=0x772D,vid=0x0B95 (QNX documentation).
See research/PCM31_CONNECTIVITY.md for the full LTE restoration guide including hardware list, network architecture, and what online services may still work.
Important: Always use the web app to build your USB stick. Do NOT download
copie_scr.shdirectly from GitHub β the PCM requires a special XOR-encoded version that only the web app generates. Raw files from the repo will not trigger the autorun.
- Open dspl1236.github.io/PCM-Forge
- Go to the USB Stick tab
- Enter your 17-digit VIN
- Leave Diagnostic mode checked (default)
- Click Save to folder β select your FAT32 USB drive
- Insert USB after the PCM has fully booted (wait for the home screen β do NOT insert before starting the car), wait 60β90 seconds
- Remove USB β check for
pcm_debug.logandpcm_dump/folder on the drive
- Review your diagnostic results to see what's currently active
- Go back to the USB Stick tab
- Uncheck Diagnostic mode
- Click Select all to keep all existing features (or pick individual ones)
- Click Save to folder β select your FAT32 USB drive
- Insert USB after PCM has booted, wait 60β90 seconds, remove, hard reboot (hold INFO + CAR until screen goes black)
PagSWAct.002) replaces all existing activations. Only the features you select will be active β anything not selected gets deactivated. Always use Select all and then add new features on top.
Press SOURCE + SOUND simultaneously β if the ENGINEERING feature is activated, the hidden engineering menu will appear. This confirms your activation codes are working.
Use the Codes tab β enter your VIN, get all 26 activation codes instantly. No USB stick needed β enter codes manually via PIWIS or the engineering menu.
If you installed a used PCM from another car, activation codes won't work because the PCM validates against its internally stored VIN (the donor car's VIN). Fix this with PCM-Forge alone β no dealer needed:
- Run Diagnostic Mode via USB to pull the donor VIN from the PCM
- Enter the donor VIN in PCM-Forge and activate ENGINEERING (GEM)
- In the Engineering menu, update the VIN to your car's VIN (under SW Activations)
- Re-run PCM-Forge with your real VIN to activate all features
The PCM 3.1 uses a 64-bit RSA scheme to validate activation codes:
VIN β 8-position extraction β weighted sum β mod 2^16
Feature SWID + SubID β 4-byte record key
Record key β RSA encrypt with private key β 8-byte activation code
PCM verifies: RSA decrypt with public key β matches record key
The RSA keys (N, E, D) were extracted from CPPorscheEncrypter::verify in the QNX firmware binary via Ghidra SH4 decompilation. The 64-bit key size makes factorization trivial β the private exponent was recovered in seconds.
The PCM 3.1 uses the same autorun mechanism as Audi MMI3G: proc_scriptlauncher monitors the USB port for copie_scr.sh, which is XOR-encoded with a known PRNG seed. The web app handles encoding automatically.
PCM 3.1 shares the Harman Becker HN+ platform with Audi MMI3G+ and VW RNS-850:
| Component | Details |
|---|---|
| CPU | Renesas SH4A (SH7786/SH7785) |
| OS | QNX 6.3.2 (PSP3) |
| Application | PCM3Root (native C++ binary, ~6MB) |
| IOC | Renesas V850 with CMX-RTX RTOS |
| Display | 7" touchscreen, 800Γ480 |
| Storage | Internal SATA HDD |
| Modem | Cinterion AC75i (2G, dead after network shutdown) |
| USB ethernet | devn-asix.so (ASIX AX88772) in firmware |
| Autorun | proc_scriptlauncher + copie_scr.sh via USB |
Note: Unlike Audi MMI3G+ which uses Java/J9 for the UI, PCM 3.1 uses a native C++ application (PCM3Root). The IFS images use LZO1X compression inside Harman's hbcifs container β decompressible back to a standard QNX IFS with the repo's tooling.
PCM-Forge/
βββ docs/ # GitHub Pages site
β βββ index.html # Web app (Activation, USB Stick, Toolkit, Backup)
β βββ app/manifest.json # Auto-generated module index (built from modules/)
βββ modules/ # Toolkit modules β each a self-contained USB tool
β βββ bt-aux-fix/ # FM->A2DP boot fix (module.json + scripts/ + bin/)
β βββ usb-net/ # universal ASIX USB-ethernet
β βββ sysinfo/ telnet/ ioc-probe/ service-reset/ lte-setup/
βββ builder/generate_manifest.py # Regenerates docs/app/manifest.json from modules/
βββ core/ # Shared assets (copie_scr.sh, showScreen, status PNGs)
βββ research/ # 30+ reverse engineering docs (+ firmware/ Ghidra output)
β βββ ALGORITHM_CRACKED.md # RSA-64 key recovery
β βββ DISCOVERY_NARRATIVE.md # Full RE story
β βββ PCM31_CONNECTIVITY.md # LTE restoration guide
βββ tools/ # Firmware analysis utilities
βββ generate_codes.py # CLI activation-code generator
βββ FEATURES.md # Feature quick reference
- 64-bit RSA cracked from QNX SH4 firmware via Ghidra decompilation
- 26 features mapped with retail costs ($150β$3,500 each)
- USB autorun mechanism identical to Audi MMI3G+ (
proc_scriptlauncher) - V850 IOC reverse engineered (CMX-RTX RTOS, CAN gateway)
- LTE restoration path confirmed β
devn-asix.sodriver present in firmware - AX88772D workaround β QNX driver supports USB device ID override
- Why the unit boots to FM β not because Bluetooth is slow, but because package 20
PHONE_AND_BLUETOOTHshipsRequestState=STOPand is demand-started. No Harman platform of this era starts Bluetooth at boot (the Audi MMI does the same), so A2DP genuinely does not exist when the source is chosen. Which means every decision-layer patch is inert β including the byte patch we shipped, now measured dead on a car and paused. The fix has to ride the connect event. Also explains whydebugTools.shdoes not run at boot: research/BOOT_ORDER_AND_STARTER.md - Update discs decoded β the version ceilings are a dispatch table keyed on hardware ID, not a check; modules are RSA-1024 signed, so custom firmware cannot be installed by the OEM updater; and an official update wipes amplifier-profile edits and custom bootscreens: research/UPDATE_DISC_FORMAT.md
- The HMI is data, not code β 34
HBM5.mmifiles hold every screen and 44,100 strings in ten languages; the compressed payloads are stock LZRW2; screens resolve to real geometry on an 800Γ480 display: research/HMI_MMI_FORMAT.md - PCM 3.0 vs 3.1 β different hardware generations, tools are PCM 3.1 only
- MMI3G-Toolkit β Sister project for Audi MMI 3G/3G+ and VW RNS-850. Same Harman Becker platform, SD card delivery. Includes Google Earth restoration, 20+ modules, complete firmware reverse engineering.
- DrGER2/MMI3GP-LAN-Setup β Original Audi LTE setup method (same adapter works on PCM 3.1)
- WillCoder/PCM_31_AUX-BT β Found the BT/AUX boot fix and the
/proc/asruntime-patch method that the BT / AUX Fix module builds on
PCM-Forge modifies your PCM 3.1 head unit. The activation tool rewrites PagSWAct.002 (the original is backed up automatically). The toolkit modules go further β for example BT / AUX Fix patches the running PCM3Root in memory, Telnet opens a root shell, and USB Ethernet loads a network driver. All of it is designed to be brick-safe: everything runs from USB or a live /proc / /HBpersistence patch, nothing modifies the read-only firmware, and a reboot reverts runtime changes. Still, use at your own risk. This project is not affiliated with Porsche, Volkswagen Group, or Harman Becker.
MIT