I the past, I've shared several of my researches here:
— ambienceColorMap.res hacking
— Some more ambienceColorMap.res hacking
— FPA dataset hacking (see my Github as well)
— A lot of research went into the MIB2 Toolbox
Today, I've started looking into the various zones that are available on the infotainment.
There are a lot of ".gca" (GenericCarAdjuster) files on the MIB2High. These hold the positions for certain screenelements that are used to adjust car settings on the infotainment screen.
For instance: the zones in the Ambient lighting screen and climate control:

Since my Seat Leon has less zones than the Golf, and the Golf has less than the Passat, and the Passat has less than the Tiguan, I decided to have a look at the logic behind it.
I started by looking at the files:

Each car model has his own .gca file, which is logical since each car has different setups and zones, and also different graphics that go with it. By the way: latter I found out: 0.gca is LHD, 1.gca is RHD.
I opened up the file and took my faithful 010 editor and started writing a template for the file.
For some, it might look intimidating to see just a big selection of data on the screen, with seemingly not much structure:

I like to make things a bit easier by highlighting the 0000's with a black background and gray font, so they stand out less than the rest of the data. As you can see, there's already a visible "shape" inside the data when you do this:

And sometimes it helps to just make the screen a bit wider, and then all things line up:

So, I found I was looking at groups of 42 bytes…and I could also read 0100 counting up to 0800 in the left side. Interesting. Let's look at this specific car how many zones it has.
There are graphics files for 8 "features":

So I made a guess: these 8 features are probably the 8 groups of 42 bytes in the file. Let's have a look at the data…
At the top there's a short, 0900… could there be 9 zones? Yeah, probably. Let's look at them!
Each of the groups has a distinct shape:

An ID number, then 8 0's, followed by "0400" which turned out the be relevant as well. Followed by (in blue) 8 SHORT values that were all valued like resolutions or coordinates of some kind. I started mapping them on the background image like you can see in my first rough sketch in Photoshop. It showed me that I was on the right path:

So each of the groups consisted of a bunch of coordinates, which would draw up a rectangle.
I started writing a script that would convert the raw coordinates and zones to an ImageMagick command, so I could generate images of all the zones in a file.
On the Leon Cupra it looks like this:

I started copying the graphic files onto the background to see if they matched up. This turned out to be pretty accurate:

The red squares show where the ambient light zone indicator is shown on screen. The Leon has door-lighting and footwell lighting from factory. (Not always RGB). These can be seen here. But there were also some zones in the upper left corner… why were these there?! I decided to have another look at the graphics files, and found out what the other zones were meant for.
There are in fact a few graphics files that aren't used, but can be used by the ambient zones. Marked in Blue are empty graphics files, 3 of them. And then there's also the submarine light in the ceiling. The graphic is faulty, it's actually the graphic of a different car showing here, and it doesn't line up well with the steeringwheel, shifter and infotainment screen. And there's also the light in the USB-area. It's not there from factory, but it's a popular retrofit. But it has an official overlay graphic here. I would love to retrofit this light some day.
So the good news is: we can add more buttons to this screen, or move them around.
The other good news is: there are spare graphics files, so even when the car doesn't equip a specific zone with ambient graphics overlays, we could make them ourselves.

Enough talk for today… let's show some more pictures I made during the process:





and last but not least… on MIB3, the logic is slightly different.

I hope this inspires people to dive into binary files and start looking for cool stuff. Don't be afraid, enjoy the creative process and be proud of yourself when you make a cool discovery or find some logic!
UPDATE:
Here's what happens if I put a Passat GCA file onto my Leon: Additional "suns" are placed, and the alignment of the overlays isn't correct anymore (see the door line!), but… it adds a new control.



Comments 9
So, I am trying to add some extra RGB leds on a Skoda Karoq which already has RGB ambient lights on doors and dasboard but, no matter what I code with VCDS I can not see an extra "sun" on my MIB. Do I need to to patch pe unit and install new GCA file or since I did not add the new led to a specific group, the sun won't show?
I can control the color of the new led but I can not change the brightness.
It's a combination of having the right gca file in the right folder that your car is using, and also the right adaptation in Module 9.
I think I am starting to figure it out. I've managed to activate a new slider 😅
I don't know if are more slider available for future projects…
daChillout
It's a combination of having the right gca file in the right folder that your car is using, and also the right adaptation in Module 9.
But, I think that for the Karoq, 5 areas is the maximum that I can use, right?
Deep dive analysis is the best analysis!
Really enjoeyed that.
Very interesting. But what about mib2 std?
Could we just copy files from tiguan to golf?
I never touched an MIB2 Std, but i guess it's the same. Copying from one car to another should work, but i think nothing would display as long as there are no additional devices connected on the lin bus
I have a firmware and can take a look inside. But i have low info how to create patch.
very informative!
TNX