This patch brings CarPlay song information including title, artist, album, playback progress, shuffle view and cover art to the Virtual Cockpit instead of just showing the generic "Apple CarPlay" text.
It also enables a "Share to External Maps" button within navigation apps to directly import the addresses into the internal MIB2 Navi (only EU for now).
(Full navi and telephony implementation are coming in the next update)
Works with both wired connection and wireless connection via third-party dongles.
Should work on all firmwares.
For a more detailed explanation of how it works, see technical-readme.md
-
Only works with MIB2Std TechniSat/Preh ZR/PQ (MIB2 Standard)
-
Does NOT work with:
- MIB2Std Delphi (MIB2 Standard)
- MHI2 Harman (MIB2 High) (works so far, but not yet released)
Completely vibecoded project. Not responsible for any damages. Use at your own risk. More info at the bottom.
Screenshots of every variant are in the pics folder.
Requirements
- mib-std2-toolbox installed
- mib2std-toolbox files on your sd card
- SD-card formatted to FAT32, cluster size 4096 bytes
- D-Link DUB-100 Ver.D1 Ethernet to USB adapter (optional)
- or a compatible converted adapter
- Laptop (optional)
In this guide, I'm going to refer the sd-card as /mp001 or slot-2, the script works on both slots.
Path of sd slot-1: /media/mp000/
Path of sd slot-2: /media/mp001/
Also I'm going to use the EU Full Patch here as the example
After reboot, there is a very high chance that your sd-card slots swap numbers, if you have 2 sd-cards inserted.
So sd-slot2 becomes /mp000 and vice-versa.
- Only place 1 jar file in folder
- Every variant except lite also needs the native
cpvc-cover-bridgehelper - The jars for each variant are in
required-files/region-[eu|cn]/variant[x]/. - Region is auto-detected from the HU
| Variant | Song info | Cover | Progress | Shuffle | Navi |
|---|---|---|---|---|---|
| full | ✅ | ✅ | ✅ | ✅ | ✅ |
| no-navi | ✅ | ✅ | ✅ | ✅ | ❌ |
| no-navi-no-prog | ✅ | ✅ | ❌ | ✅ | ❌ |
| lite | ✅ | ❌ | ❌ | ❌ | ❌ |
Playback Progress
shows accurate playback progression under the song
replaces the fourth row which is normally empty and used to display longer song titles
Looks like this (
m:ss / -m:ss)Supports up to (
9:59:59 / -9:59:59)
Navigation
Within Map Apps in CarPlay, it enables a hidden button, which is used to import addresses or destinations directly into MIB2 internal Navi
There are some pictures in the pics folder
True turn-by-turn route guidance is still not researched enough on MST2 :(True turn-by-turn implementation is done and is coming soon
also not yet available on cn-region as it causes some problems, like carplay blackscreen.
CN has no navi variant (yet).
| Variant | Song info | Cover | Progress | Shuffle |
|---|---|---|---|---|
| full | ✅ | ✅ | ✅ | ✅ |
| no-prog | ✅ | ✅ | ❌ | ✅ |
| lite | ✅ | ❌ | ❌ | ❌ |
2 ways to enable the patch:
method1-GEM/- custom menu entry in the MIB-STD2-Toolbox. Enable / disable / status / debug via Green Engineering Menu, no laptop required.method2-console/- run the scripts from terminal via telnet, laptop + ethernet adapter required.
copy the files from your chosen required-files/region-[eu|cn]/variant[x]/ folder into sd/custom/java
sd-card should look like this
sd/
└── custom/
├── greenmenu/
│ ├── carplay-vc.esd
│ └── scripts/
│ ├── cpvc_activate.sh
│ ├── cpvc_activate_debug.sh
│ ├── cpvc_common.sh
│ ├── cpvc_copy_logs.sh
│ ├── cpvc_deactivate.sh
│ └── cpvc_status.sh
└── java/
├── mst2-carplay-vc-full-eu-v1.jar
└── cpvc-cover-bridge
- Open GEM
- browse to /mibstd2-toolbox/customization/greenmenu
Copy custom GEM screens and scripts to unit- Re-open GEM when done
- browse to /mibstd2-toolbox/customization/carplay-vc
Enable Patch- Reboot if everything ok
- Enjoy :)
- Feel free to share your results in this discussion <3
If there are any errors with patching, do NOT reboot.
Check first, if any files have been modified.
if the runHMI.sh is damaged, and it couldnt be restored, you need to restore it manually with the backups.
Try to run the disable script to restore the backups and avoid bootlooping the HMI
You need to have (permanent) access to terminal enabled in mibstd2-toolbox to be able to connect and run the scripts.
sd-card should look like this
sd/
└── mst2-carplay-vc-patch-v1/
├── mst2-carplay-vc-full-eu-v1.jar
├── cpvc-cover-bridge
├── cpvc_common.sh
├── enable_patch.sh
├── disable_patch.sh
└── collect_logs.sh
Set following IP address config on your laptop:
own: 192.168.1.10
subnet: 255.255.255.0
gateway: 192.168.1.4 (optional)
Connect to MST2 terminal via Putty (or any other tool):
connection type: telnet
ip: 192.168.1.4
port: 23
Login:
user: root
password: root
Run the script:
sh /media/mp001/mst2-carplay-vc-patch-v1/enable_patch.sh
# reboot to applyEnjoy :)
Feel free to share your results in this discussion <3
If there are any errors with patching, do NOT reboot.
Check first, if any files have been modified.
if the runHMI.sh is damaged, and it couldnt be restored, you need to restore it manually with the backups.
Try to run the disable script to restore the backups and avoid bootlooping the HMI
- Open GEM
- browse to /mibstd2-toolbox/customization/carplay-vc
Disable + Cleanup- Reboot if everything ok
- Back to stock, all backups restored
sh /media/mp001/mst2-carplay-vc-patch-v1/disable_patch.sh
# reboot to applyMethod 1 GEM:
You need to enable the --debug version of the patch to allow logging.
- Open GEM
- browse to /mibstd2-toolbox/customization/carplay-vc
Enable Patch with --debug- Reboot if everything ok
- Then reproduce the errors and log them
- browse to /mibstd2-toolbox/customization/carplay-vc
Copy logs to SD (if --debug enabled)- Create an issue here and maybe I'll look into it if I find some spare time.
Method 2: via console access
disable patch, then enable again with the --debug parameter:
sh /media/mp001/mst2-carplay-vc-patch-v1/disable_patch.sh
# reboot
sh /media/mp001/mst2-carplay-vc-patch-v1/enable_patch.sh --debug
# reboot to applythen run this after reproducing errors to copy logs to sd /media/mp001/logs_<date+time>/:
sh /media/mp001/mst2-carplay-vc-patch-v1/collect_logs.shMain Unit:
- MIB2Std TechniSat Preh ZR
- Part Number: 5F0 035 877 (only patchable with solderless method)
- Region: EU
- SW Version: 0516
- HW Version: H50x
- Seat Leon 5F
VC:
- Software Version: 1701
- Part Number 5F0 920 790 A
Devices:
- iPhone 14 Pro iOS 18.7.2 (main)
- iPhone 15 Pro iOS 26.5
- iPhone 11 Pro iOS 16.6.1
Music sources:
- Apple Music (main)
- Spotify (I need more testers to debug and verify as I barely use Spotify anymore, I think its buggy as it first shows a blank spotify cover, then the real cover)
- Youtube Sideloaded
- Local mp3 files (files apps)
Wireless adapter:
- Carlinkit 3.0
Shoutout to @omonob for helping out and testing cn-region <3
Tests were done with:
MST2
- MIB2Std TechniSat Preh PQ
- Part Number 5C0 035 682 G
- Region: CN
- Software Version: 0478
- Hardware Version: H32
MHI2.5
- MIB2High Harman
- Part Number 3EB 035 048
- Region: CN
- Software Version: 0841
- Hardware Version: H55
- Note: MHI2 Version is in the works. all MHI2 testing was done by him, not me.
- Cover art even more reliable. Currently this version can fail sometimes.
- Full telephone integration
- recents list
- date and time stamps
- callable from vc with buttons
[ ] favorite listnot possible to show on vc- call duration (not possible natively, only as text behind name)
- mute
- fix mute state on vc persists through hang up to next call
- hold
[ ] caller picturenot possible to get from iphone- battery state
- replace "Apple CarPlay" with device name
- its possible, but you lose the native carplay icon
- however you CAN use the carrier name to replace with anything
- native carplay icon before "Apple CarPlay" string
- removed call bypass implementation from main patch as it really serves no purpose right now
- recents list
- Full navi implementation
- true turn by turn implementation
- eta
- lane guidance
- sidestreets
- highway fixes
- localization
- into internal maps via most?
- MHI2 support (almost done)
- Display shuffle icon if on (no interest in repeat icon as I don't use this ever and it also collides with shuffle on Seat Leon HU)
- Cover art faster than 7 sec frequency (15 sec max?)
- make songtext almost instant with 0,5sec delay
- fix that songtext gets empty after 120 seconds but covers stay, while calling
- fix that songtext doesnt get cleared sometimes
- fix that scripts sometimes freeze
- fix that scripts wont accept jars
- fix that scripts chose the wrong region
- fix that covers get stuck indefinetly rarely
- maybe ambiente light in VC in the color of the cover art, like a dynamic album color background
- olli991/mib-std2-pq-zr-toolbox
- scripts to dump mst2 filesystem
- java patch architecture and script implementation
- custom GEM menu entry
- console access
- +much more
- adi961/mib2-android-auto-vc
- bridge architecture
- luka-dev/mib2q-carplay-rgi
- java build toolchain
zulu8.78.0.19-ca-jdk8.0.412withjclFoundation11.jarandj9jce.jarbootclasspath stubs - build pattern:
javac -source 1.4 -target 1.4 -bootclasspath jclFoundation11.jar
- java build toolchain
- luka-dev/jxe2jar
- for converting MIBHMI.jxe to .jar
- Mr-MIBonk/M.I.B._More-Incredible-Bash (discussion #93)
- for confirming the NavActiveIgnore patch approach
- grajen3/mib2-lsd-patching
- MHI2 research
- drive2.ru write-up
- for MIBHMI.jxe patch approach through tsd.mibstd2.hmi.ifs
I originally made this patch because it annoyed me that there was no stock implementation. I also wanted to see how far I could push AI without writing a single LOC myself.
It turned into a bit more iterations than I expected. Somewhere around 300 patch builds and about 120 trips to the car to test them, since theres no safely way to work on these units and every test means copying it over, rebooting and checking
Bootlooped the HU twice along the way, first one was because I was messing with cpu.conf, and second one was because of emtpy runHMI.sh on reboot
Also I wrote this readme by myself tho, no AI used

0 comments
log in to comment.