In service of the ME7.2 excitement that we have going, but trying to address some of the poor documentation / organization / judgement / recommendations in some of the other stuff that is going around...
I feel this is maybe best posted in a separate thread... so... here we go...
Excited about ME7.2 M62 Shenanigans?
Ready to FLASH THE CRAP OUT OF YOUR ECU!?!?
READ THIS CAREFULLY OR YOU MAY CROAK YOUR ECU, OR WORSE, YOUR ENGINE:
OK - a little extreme but not entirely inaccurate. Before embarking on messing about with bits inside your ECU's brain, there are several high level points you must understand.
This first post is not intended to teach you how to read/edit/checksum/flash your ECU. This is the crap you need to know before you touch any of that.
Here's the TL;DR:
- You CAN KILL YOUR MOTOR. If you are aren't a dumbass you probably won't. But you can and guys do.
- You MUST KNOW THE VERSION OF THE PROGRAM your ECU has inside it at all times, and,
- The mapping (aka XDF files) you use MUST MATCH YOUR VERSION. If not: Go to #1.
- If you aren't on "the last/latest" version of the software… you want to be on the latest/last program versions. Unless you have an aftermarket tune....
- That stuff you read about some other BMW DME - and even Audi/Porsche/Alfa/Ferrari/Telsa/Kelvinator "that runs ME7 too!" - probably does not mean crap and does not remotely apply to your ECU.
You can kill your motor…
Modern ECU's are great things. Not only do they make engines radically more efficient than the old carbs-and-distributors days, but they contain a lot of failsafes to make it extremely hard to blow up an engine without really trying and driving straight through warning lights.
And YOU… can screw all that good stuff up easily and instantly, by messing with things inappropriately.
Bad things that can happen if you "tune" your motor badly, or, even 'randomly' apply some changes to your ECU:
- High cylinder pressures breaks things
- High combustion and exhaust gas temperatures (EGT) melt things
This is not the place for a "how to tune ECU's 101" but at the highest level you must be extremely careful with anything related to:
- Mixture
- Ignition timing
- Knock-sensors
And really the list goes on. Unless you really know what you're doing, don't mess with stuff. Yes tuners do. They do it (or at least the non-sh~t ones…) because they know what they are doing and they do it with the support of careful measurements on a dyno to stay within safe parameters.
Accordingly… with rare exception, you probably should not just "try those changes that BubbaJoeKillStory17 on BimwadEngineKillerForum.com said made +100 whorespowerz!".
Who knows how he came up with that stuff. BubbaJoeKillStory17 might have big injectors. BubbaJoeKillStory17 forgot to mention that he runs a 5bar fuel pressure regulator with those settings. BubbaJoeKillStory17 forgot to (was embarassed to) mention he melted the pistons a week after he posted how awesome his tune was. BubbaJoeKillStory17 is a moron.
Another factor to keep in mind is that, in comparison to standalone / race type ECU's, factory ECU's are pretty complicated.
BubbaJoeKillStory17 likes to think that "OH THIS ONE TABLE HERE IS FOR THE IGNITION, SO THERE I CHANGED IT!" In reality with these German ECU's there are often many interrelated tables and logics for how the fuel and timing gets calculated. Often - if not always actually - for any given 'parameter' they have several tables / maps / constants they are switching between depending on the operating mode. OEM ECU's are very challenging to fully understand.
You should as a rule think of messing with the tuning bits of your ECU like you've sawed off the top of someone's skull and are now poking around inside.
You have gotta be super careful and know what you're getting into. Unless you hate the guy inside the skull. Then go for it. Eff him up.
Enough about that.
You gotta know what your version is!
Every modern ECU basically contains* 2 separate flashes to run the engine. At a simplistic level you have:
- The Program flash
- The Data flash
YOU HAVE TO KNOW WHAT VERSION OF PROGRAM your ECU is on before you do ANYTHING.
- The Program is basically like the OS a PC or a smartphone. The program gets updated by the manufacturer over time for fixes (mainly) or new features (seldom).
- The Data is the actual "Calibration" or "Tune". It is all the values that the program uses to do whatever it does. It also gets update sometimes - mainly for emissions/regulatory but sometimes for some other improvement - maybe idle or something like that. MOSTLY it is where the stuff is that we want to fiddle with to make the program do things differently.
- For any given thing the DME needs to look up the Program needs to know where the Data is in memory. DME wants to know "what should idle speed be when coolant < 50C on a Thursday in June with secondary-air-system-on, running-AC, and 2-passengers in the backseat smoking weed and making out". OK it needs to find like 2 master values and 3 tables or something maybe to get there. Really it constantly uses 100's of values and maps and tables, and it needs to know where to go in memory to find them.
- Here's our big issue: When the program changes, the great majority of the time, the location of the specific data items moves around also. Some things never move, but many things move around quite a bit. AND frequently the dimensions of a table change - so for OldProgram a table was 8rowsx10columns but now for NewProgram it suddenly is 12x16. Ruhroh. Way different.
When someone makes a mapping file - like an XDF** - they make that to match a specific version. That's what we have in the now-available public XDF's.
Trying to use the wrong mapping file version is like trying to drop bombs on Berlin using a 150 year old map. It just doesn't apply. The map says there is a train station at X but really it’s a school. Or a field. Or maybe a new train station that they rebuilt twice as big but really its moved over by 300 yards.
So: STEP 1 WITH ANY ENGINE COMPUTER IS TO FIND OUT WHAT VERSION OF SOFTWARE IS INSIDE
You gotta match the mapping to your version!
Now some good news. So you gotta find your program/software version. The nice thing is that for M62TU definition in the XDF should not move (needs to be static so you can figure out what version a version is versioned...) so you CAN use the 'wrong' XDF for that...
So what do you do? Well there are several ways to get this done. Two of the easier ways are:
Option 1 - If you have WinKFP running you can use function to read the ZIF 'live' in the car, and look at the 'entries of data reference'.
Option 2 - If you're setup to read binaries from your DME already, read data from the DME. Should be a 64k file. Open TunerPro. Load any of the zarboz ME7.2 XDF's. Open the "Software Version Entries" table. Option 2b is just look at it in a hex editor but if you're going in on this project you'll have wanted to load TunerPro anyway, might as well start using it.
What you are looking for is a ZL-REFERENZ *** something that looks like like "01119500 6901 R402" of which:
- 01119500 you can consider a 'constant' meaning "the M62TU ME7.2 platform"
- 6901 is the program version and
- R402 is the actual data/calibration/tune version
Voila. You now know you can use XDF for 6901.
See really just very simple.
You really gotta get on the latest versions of the program…
"Oh wait" you say. "Mine was 6602."
"But BubbaJoeKillStory17 said that for Model Year 2003 it’s the 6901 XDF so my car is MY03 so I can just use that, right? So cool I can use 6901!"
I thought we already covered that BubbaJoeKillStory17 is an idiot.
"But my car was like, dealer serviced a bunch and so like it must have the latest version, right?"
No. For any model year, the program has been updated some arbitrary number of times. Possibly zero.
There is 100% no way to know when/how it has been flashed with what without looking.
- For SURE your car did not leave the factory with what are now the latest versions of the software per-MY
- There is no way to know what version your MY03 car is on without looking at it
- There's actually a much higher chance you are NOT on the latest MY03 program, than you are
Those of us who work on them see ECU's all the time that have only been flashed ONCE, in Germany, when it left the factory, and was NEVER updated after that. Those programs are generally so old you can't even find them in the WinKFP data files anymore.
If not once, quite often they were flashed 2-3 times but still never with this latest version we are discussing.
So. What do you need to do to get on the current versions of the program? Flash a "ZB" with WinKFP.
ZB-numbers are the 'assembly' numbers that BMW uses with WinFKP to identify a Program-Data combination. You need to fire up WinKFP, figure out how to use it (easy but not the place to teach you - there are millions of threads and websites for that), then flash the appropriate ZB.
"Which ZB" did you say?
Vehicle |
Last ZB # |
Program |
MY99-00 540i6 |
7539302 |
5A01 |
MY01 540i6 |
7533584 |
6902 |
MY02 540i6 |
7533592 |
6901 |
MY03 540i6 |
7533611 |
6901 |
Euro 540i6 |
7539328 |
5A01 |
Do that, THEN pull the data file again, then you'll be on the A-train. Life will be sweet. All hookers and blow and free broadband.
Wait but can I apply the ZB from a different model year!?!? MORE HORSEPOWERS RIGHT!?!?!
No. More engine codes and warning lights.
The main difference across those (5) ZB#'s are emissions-equipment related - including evap-systems - and your ZB (which is not JUST the program but also the DATA remember) should match the hardware that is in your car.
Oh yeah. A word about commercial tunes.
IF YOU ALREADY HAVE A TUNE THIS WILL BLOW IT AWAY. Sorry that's just how it is.
Your options for a commercial tune are:
- If it is on a project-supported version (listed above) then fine, you can read it and use an XDF and have a time. No worries. Probably want to back it up before messing it up, but you're good.
- Blow your tune away and start over. You can back your tune data, however, if you are on a really old version of the program, you may not be able to flash that program back again. Lets say you are on 5201 program with your commercial tune. You either need to full-boot-read the DME to back up the entire thing, or you'd have to find the 5201 "0PA" file, which very likely is not readily available. Many old factory original versions of tunes never had the code available for WinKFP.
- Either find somebody who'll help you map an XDF, or, strap on your big-boy pants, sharpen your mechanical pencil and slide-rule, and dig into some hex analysis and make your own XDF. You'll have to find every parameter one by one by comparing to other 'known good' sets. Doable. Tedious and time consuming but doable.
About that stuff you read over at MSS54 thread or NefMoto or Alfadoghackers or wherethefarkever:
"Cool cool cool but I read at MSS54 thread that to virginize you change 123 bytes at 0x3249EA3 to 0xEF, and over in the Audi forums for ME7 I read that I can change the XLKDLF map FOR SUPER BOOST at its at 0x23E45G133 and they have ME7 so I want that too !!!!".
BubbaJoeKillStory17 I thought I told you to STFU.
Mostly… No. Mostly… no.
Other BMW ECU's? 98% chance it is USELESS to you. MSx ECU's run code from Siemens, there might be some maps that have similar names cuz German engineering and BMW but mostly forget about it. Its like bolting a Honda cylinder head on your BMW M54. Will. Not. Work.
And… "ME7" is basically a product line of engine management systems from Bosch. When a car maker decides ("decided" really, its been obsolete for 20yrs now) to use it, what they get is only vaguely related in the underpinnings to what the other guys get. Each 'client' demands and gets radically modified and customized versions of the product.
What changes ALWAYS across these versions:
- Immobilizers. Each automaker has their own gig and systems with that. While there may be some deep hooks in the code that are similar/same, the implementations and details are totally different. Audi ME7.1 has an immob flash chip hardware that BMW does not. BMW ME7.2 uses EWS modules that Audis don't have. Who knows what Alfa/Porsche/Ferrari ME7's have except I'll guarantee they ain't the same. So "virginizing" or "immo off" as the hackers say, is usually completely different stolen-kettle of stolen-fish.
- Comms and diags. Audi "VAG" diag protocols, BMW INPA/DIS/ISTA/etc. protocols… completely different. Meaning completely different programs for that stuff. Different config parameters possibly for them.
- Specific engine hardware implementations. Porsche variable valve timing vs BMW VANOS. Possibly hardware / driver chip differences on the boards. Certainly dramatically different logic / programming in the code.
OK… so what is the same?
- Core operating theory principles and fundamental characteristics. ME7 is a torque-demand based system with electronic throttle control. There will be VE maps someplace. There will be torque demand maps someplace. It will not use cable accelerators and throttles.
- IF you read the super-secret-squirrel stuff, then the terminology is mostly simliar/same. Bosch will use the same map names for big stuff. Mostly. Especially the really big main core logic things. Stuff like OBD DTC codewords probably crosses over. But again sometimes the tables/maps change because of the hardware - ex: VVT maybe BMW uses different set of tables for VANOS that say, Porsche didn't require or implemented in a different way, and the names are different and the logic is actually completely different.
Yes you can learn some "general principles" from the NefMoto stuff. For most purposes though, theres not a lot that you can take from one to the other. If you can, its "in principle but not in detail".
If you see "oh OK the Audi guys have this / that map"... well... you may or may not have that, and it may or may not be used. Entire blocks of program logic are disabled or missing in other versions. Why would BMW versions have a lot of forced-induction logic support if Bosch knew from BMW that there was no intention to support that? (and yes there's the Arnage DME which would be nice to get a read of but as a rule that stuff is all either turned off or not there...) So...
Mostly, ignore that stuff..
And certainly don't go telling people "Hey man change table XLKJVE values to 3725 and you're like, have POOPS AND BURPLES!!! I READ IT ON NEFMOTO!!!!".
Don't be BubbaJoeKillStory17.
--------------------------------------
*In reality theres more inside the memory chip of most ECU's than that. Outside of the 'data', in addition to what we call the 'program', there is also a 'bootloader', and then the area where things like adaptation values and current error codes are stored as well as what we call 'manufacturing data' - part numbers and identifiers and good stuff like that. Mostly though you don't need to care much about that. Mostly we care about the program a little, and the data a lot. Some cars like Audis even have other flash chips for the immob and that's another memory bucket entirely....
** XDF = mapping files for TunerPro, but could also be mapping files for other tuning programs - ROMRaider, WinOLS, etc. etc. Making XDF/map files is work intensive and - unless somebody has access to the secret squirrel factory data for that exact version (sometimes but rarely) - it entails lots of looking for things, triple confirming sizes of tables, and, if you do this work, you find you never know what is going to change location or dimensions.
*** BMW/Bosch often use multiple terms to refer to similar things and keep terminology confusing. In addition to the ZL-Referenz terminology, other parallel/overlapping number schemes exist… Programs and data also get 'pseudo part numbers'… This then extends to the "ZB number" which is a combo of a Program+Data is also labeled an "Assembly number" in some places… In some cases this is "numbers Bosch uses vs numbers BMW internal R&D uses vs numbers dealers are supposed to use" but basically they make it as confusing as they can for us to reverse engineer.
Bookmarks