e39 540i 6speed Supercharged,
E36 v8 m62 with m60 headers, Turbp HX-40 0.6-0.5bar or 9psi, custom exhaust & Turbo manifold, injectors 440cc, ECU Invent EMS-2, Mishimoto Intercooler and oilcooler, etc…
Updated OP with how the configuration of outputs for our DME works how to calculate them and find them within your 64kb file
This will let you do things like disable SAP at the topmost level of the programming inside our DME
I like to pretend I know stuff
Also on my github I have what I consider to be a 70% well rounded XDF there are some more items I personally would like to add and I also need to update the later year model XDF to match my older year one I have been playing with in my personal car
I have attached a Wiki to the github that gives some light overview information but I will be updating this forum thread as I discover more
https://github.com/zarboz/BMW-XDFs/wiki
XDF files found here:
https://github.com/zarboz/BMW-XDFs/t...V8/XDFS/Zarboz
Projects and their status can be found here:
https://github.com/zarboz/BMW-XDFs/projects
if you run into an issue with the XDF and / or code used for patches please report it here:
https://github.com/zarboz/BMW-XDFs/issues
Last edited by zarboz; 05-02-2019 at 12:24 PM.
I like to pretend I know stuff
This is a fantastic accomplishment -- kudos to you sir!!
I found a cheap motor to turbo as well and play with the system constant variables for turbo
From what I can ascertain from data sheet just need bigger injector and math for the voltage / pulse time to be programmed and then the turbo switch to be flipped for basic boost
I have found the DME supports PID based boost control algorithms so that is pretty cool
also supports 3-16 cylinder setups and also supports running in a 2x DME config 1 as master 1 as slave (for more than 8 cyl)
cray stuff man!
I appreciate the post thank you much I am going to keep on pushing until there is repository of information for our cars DME
I like to pretend I know stuff
Nice! What tool for reading the DME and flashing do you use?
[E39 540i] - with S/C ESS kit (plus some upgrades)
[E34 540iA] - Gone
WOW, you are really finding some amazing little gold nuggets in there! I have to say, if I didn't have so many projects already ongoing, I would be extremely tempted to grab a TU car and join in. Hopefully some of our other esteemed members of the forum will do so.
BTW, I don't remember you mentioning if you have found a "global scalar" or "constant" or whatever it is called in DME speak. I did find one in the M5.2, and was able to scale for 80# injectors with it. The dead times were close enough that I was able to get idle dialed in really nicely without ever finding anything for adjusting the dead times, latency, or whatever you want to call it...
I'm having a little trouble recalling now whether I used an additional adjustment to the global constant value to accommodate the rheostat I added to the MAF signal wire for scaling that down. I think I must have. As I recall, I never did make any changes to the MAF scaling table in the tune. I did mess around with the MAF scaling table in the MS41.1 tune of the E36 though, which may be more representative of what will be found in the ME7.2 calibration.
I found that the MAF scaling table is not nearly as magical as most people would have us believe, and instead, it really was just another factor to adjust as you see fit for the purpose of dialing in the tune. Having said that though, I think more thought will have to be given to how the MAF scaling table needs to be handled when torque modeling is involved in these potentially more complex tunes you are dealing with.
Last edited by tptrsn; 05-02-2019 at 04:37 PM.
The Me7.2 uses 2x variables
- KRKTE - Airmass to fuel injector on time conversion based on injector size and fuel pressure (primary fueling)
- TVUB - Injector offset dependent on voltage
I can go through the function sheet and notate the math for these items on the wiki but it allows you to use a higher CC flowing injector
I also have the math for fuel consumption gauge to make that work as if it was "stock" car
For those advanced members I am willing to share the function sheet if they are willing to openly and freely contribute to the project
Dude I think your mind would melt a little bit when you see all the algorithms that get nudged by the SY_TURBO=1 instead of =0
delta spark
timing
ignition
throttle position
air mass pressure calculations
fuel
the way knock correction works changes too
The way the MAF works there is a linear model for the expected voltage conversion from the MAF and there is also a number to offfset that with (we can use the Audi R8 ones for instance and just use their MAF map for voltage and offset number"
2650mbar absolute pressure is the max the ME7x can handle BUUUUUUT there is a hack in the audi forums i am going to attempt to patch over to our dme that allows a maximum resolution of 5120mBar absolute pressure
- - - Updated - - -
using K+Dcan cable and Galletto 1260 to get the 64kb files
The files are year specific it looks like you have a 96... which would have the m5.2 dme (there is an XDF uploaded for that! It is rather robust and should be able to get you "tuned up" )
Unless your 96 is converted to a me7.2 somehow
Last edited by zarboz; 05-02-2019 at 05:42 PM.
I like to pretend I know stuff
Lurking for clues on my m5.2 dme tune. Lots of the variable names carry over so I may be able learn enough to do some maf table changes on my car.
That SY_Turbo variabLe is something I was totally unaware of on the 7.2. Does that exist on the 5.2 as well?
98 540i 6, 525 whp, 120 mph 1/4, V3 Si S/C'er @16 psi, W/A I/C, Water/Meth, Supersprint Headers, HJS Cats, 3" Custom Exhaust, UUC Twin Disc, Wavetrac LSD, GC Coil Overs, Monoball TA, AEM FP, Aeromotive FPR, AEM Failsafe AFR/Boost, Style 65's w/275's, M5 Steering Box, Eibach Sways, M3 Shifter, Evans Coolant, 85 Deg Stat, PWM Fan, 10" Subs, B.A. speakers, Grom Aux/BT, Still Rolling as my DD!
Successfully disabled SAP with ESKONF settings
00 C3 23 F3 30 30 F3 FF 01 >> 00 C3 23 FF 30 33 F3 FF 01
I changed byte 3 and 5 (because we count from 0 in hex 0 = 1 lol math fuckery)
Byte 3 Declares these installed items:
NC | NC | SLP | ??
Manual shows bit pairs as such for these items by factory
11 | 11 | 00 | 11 < This indicates that item 1= no check , item 2 = no check , item 3 = installed check, item 4 = no check
we need to alter this to become
11 | 11 | 11 | 11 < To tell the DME that our SAP is no longer installed
So F3 will then become FF when we convert 11 11 11 11 to hex
Byte 5 declares these installed items:
LDP/TDMV | LDP | EV5 | SLV
Manual shows bit pairs as such for these items by factory:
00 | 11 | 00 | 00 < 1=installed check, 2= no check, 3= installed check, 4=installed check
we need to alter this to become
00 | 11 | 00 | 11 which then converts 30 to become 33 in hex after we convert from hex to binary
swap those 2x hex out in your binary ... there is a COUPLE more items to do but that is the MOST complicated part (the rest involves sliding sliders to 00 lol )
I like to pretend I know stuff
I can try to get 5.2 reference materials for freez
I found lots of 7*** variant for free but had to pay for the BMW function sheet to learn more.
I do have info on the 5.2 that I am sure some folks would find interesting (its way easier to disable EWS from what i can tell on the older DME's ) BUUUUT there is this discussion (even though i had to ask a russian friend to translate it ) on the forums that belong to the man from whom i bought this datasheet that goes to the m62tu
and they are talking about using an ME7.2 on a m62 NON tu car and how to code it to run properly
I would IMAGINE you could just set variable cam timing OFF in the ESKONF I would have to read the functionsheet more to support that theory as its just a stab in the dark
I can try to help out with the 5.2 but theres not a lot of nfo out for it all i really have is a A2l and xdf file and OLS file for it (that might be the best stuff you'll find) the A2l is a condensed function sheet
it just doesn't give wordy elaboration on things or describe items such as the eskonf
it will tell you what dependant values it uses for a function and you can kind of use some logic to say like OK Torque XYZ is a referenced item and it uses RPM on X and 0-100 on Y it must be pedal response torque (or you might get lucky and be able to translate the description)
I will tell you this I could imagine that the MAF table hex content would be the same if not identical for your car
it would require some backtracing with a hex editor though
Last edited by zarboz; 05-02-2019 at 09:58 PM.
I like to pretend I know stuff
I know nothing about tuning ecu's, or am i in anyway competent in computing but would this kind of info help me avoid having to get a standalone to run my m62 with the jag blower, i was thinking Maxxecu.
1999 540 Auto with Eaton M112 supercharger
Airlift 3H/P management, M5 steering box, M5 LSD, Eibach/Dinan front and rear anti roll bars, PM Modifich door boards, 4 Eton 6.5s, Sound Magus VS3500.1, 2 x 10" Kove audio subs, Alpine ICS X7 Headunit, 19" BBS Hammer Sports RT245/RT246, Muffler delete, electric coolant fan.
Definitely it would Keith! When this project gets all fleshed out, you will be able to do most everything for your blower setup really well with the factory ECU (DME). There will be a few bells and whistles that standalones offer that won't be present on the DME, but the main components will be there for you.
Oh my gosh, i think i need to speak with Enda about this.
1999 540 Auto with Eaton M112 supercharger
Airlift 3H/P management, M5 steering box, M5 LSD, Eibach/Dinan front and rear anti roll bars, PM Modifich door boards, 4 Eton 6.5s, Sound Magus VS3500.1, 2 x 10" Kove audio subs, Alpine ICS X7 Headunit, 19" BBS Hammer Sports RT245/RT246, Muffler delete, electric coolant fan.
but knock protection under boost runaway.... things like that
They work with the DME
in fact they work REALLY well and can be manipulated in awesome ways
Also the function sheet has been watermarked and is going to get uploaded to be distributed with folks who are interested in contributing to the project and in the long run the betterment of any at home tuning to be done by any 540i owner in the future.
its a solid 1k++ pages of math functions and mapping that give an EXPLICIT roadmap as to how our DME functions what it can / cant do etc
This XDF is meant to be as friendly as possible to use
all the tables have min/max safe settings that you can't exceed and some are even color coded to let you know what you're doing to the map
I include little snippets of If you change X it impacts Y or this item A scales against this item C
should be VERY friendly to use the concept was more ease of use leads to more users trying to do things on their own leads to more wiki content of "this is how i deleted XYZ/Tuned XYZ/Mapped XYZ"
Otherwise itll just be me adding to my file for my 00 540i with LDP that everyone uses haha
Last edited by zarboz; 05-03-2019 at 12:31 PM.
I like to pretend I know stuff
The turbo configuration is likely to have something to do with the Bentley Arnages.
There is another interesting config inside the ECU called NOLRA, which is supposed to switch on and off adaptations.
The plan would be to switch off any adaptation, you could then sort out your fuel trims without the ECU making adjustments to them, and then switch it back on to hold it at that level.
Unfortunately when I tried this, it didn't seem to work as intended.
You can get a general idea of what would be in the ECU from the S4wiki
https://s4wiki.com/wiki/Tuning
The ECUs are very similar
Giftschrank Projekt
Check your PM good sir ALSO the bentley arnage green label 4.4 had a m5.2 dme AFAIK i have found NONE with the 7.2 (maybe BMW did this as a preproduction idea? the 7.3.1 has this flag so does the 7.5 and so on... i think it just became a part of their "available" programming)
- - - Updated - - -
Calculation of the activation conditions of the ranges:
The multiplicative adaptation variable of the lower learning range is activated via the bit B frau = TRUE. The range is limited
by a lower air mass threshold (ml >= MLU2) and a lower relative load threshold (rl >= RLU2) as well as by an upper air mass
threshold (ml <= MLO2) and an upper load threshold (rl <= RLO2).
The multiplicative adaptation variable of the upper learning range is activated via the bit B frao = TRUE. The range is limited
by a lower air mass threshold (ml >= MLU4) and a lower relative load threshold (rl >= RLU4).
If the air mass ml <= MLO3, the engine speed nmot >= NU3 and the relative load lie between RLU3 and RLO3, then the bit B rkaz is
set to TRUE and thereby the learning range for additive adaptation correction per injection is chosen.
The learning range for the additive adaptation variable per time unit (range 1) is chosen by the engine speed nmot <= NO1 and by
the air mass ml <= MLO1.
Remark: If the throttle valve is completely open (HFM pulsations) learning must be prohibited: -> see threshold WDKARN in %LRAEB.
The general activation condition B lra(2) is reset here. The above-mentioned learning conditions remain unchanged from
this.
Calculation of the reset conditions for the integrators in LRAINT(2):
There are several conditions, for which the adaptation integrators should be set to neutral values.
They are furthermore generally reset:
a) After detected power fail (C pwf)
If the voltage supply is interrupted, then this is detected by a power fail test. (A stored test word then no longer
corresponds to the value, which is also stored in the EPROM). In this case the adaptation is started with neutral values.
b) During the initialization C ini = TRUE,
1. If one of the integrator values (frau w, frau2 w or frao w, frao2 w) is outside of the absolute limit
2. With detected fault E dpl
Deactivation of individual integrators:
The status byte NOLRA is a simple possibility to deactivate individual adaptation ranges.
This should also then happen if the respective range is not entered.
a) Bit 0 in NOLRA resets the RKAT-integrator in LRAINT(2) B norkat
b) Bit 1 in NOLRA resets the FRAU and the FRAO-integrator in LRAINT(2) B nofra
c) Bit 2 in NOLRA resets the RKAZ-integrator in LRAINT(2) B norkaz
In case of exchanged Lambda sensor plugs (B lsvvsp = TRUE) all adaptation values are reset to their neutral values.
Remark: It is not useful to only deactivate one of the two multiplicative integrators. Therefore a separate reset of FRAO and FRAU
was abstained from.
For the clearing of the individual fault path the bit reset readiness B lrareb is made available. The bit B lrareb
is set to TRUE,
a) if bit 3 of NOLRA = FALSE or
b) if bit 4 of NOLRA = FALSE and B edkvs or B edkvs2 = TRUE.
B edkvs(2) is set as soon as a fault threshold of the DKVS is exceeded. If bit 3 was set to TRUE and bit 4 was set to FALSE then
the individual adaptation variables are only reset in case of clear fault path if a fault of the DKVS occurred.
Attention:
==========
In the series production version the adaptation must at least then be reset at clear fault memory if a fault of the DKVS occurred.
A general resetting is, however, recommended.
==> NOLRA bit 4 must be FALSE in any case, it is also recommendable to set NORLA bit 3 to FALSE.
NOLRA bit 3 and NOLRA bit 4 may only both be TRUE during the application phase.
If SY STERVK = FALSE all integrators in LRAINT2 are reset (B lrare2 = TRUE). Thus all integrators of the LRAINT2 are at their
neutral values with a mono-system. In the software bank 2 is not processed and no program codes are generated.
b) Description of the partial functions LRAINT(2):
Since the two partial functions LRAINT and LRAINT2 (for 2. bank) are designed similarly, the description of LRAINT2 is abstained
from here. Where stereo labels exist, it is mentioned explicitly (e.g. frm w(2) means frm w for bank 1 and frm2 w for bank 2).
LRAINT(2) consists of:
- Calculation of dfrm w(2): The frm w(2) (mean value of the Lambda controller from continuous or 2-step Lambda control) serves as
input value
- Calculation of fra w: Interpolation between frau w(2) and frao w(2) over the air mass ml w
- Calculation of rka w(2) from rkat w(2), rkaz w(2) and nmot
- The following partial functions:
INTFRAU(2): Integrating of the frm w(2) deviation for the lower multiplicative fault correction and for the calculation of the
condition "frau w(2) outside the reduced range" B fraur(2)
INTFRAO(2): Integrating of the frm w(2) deviation for the upper multiplicative fault correction and for the calculation of the
condition "frao w(2) outside the reduced range" B fraor(2)
INTRKAT(2): Integrating of the frm w(2) deviation for the additive fault correction per time and for the calculation of the
condition "rkat w(2) outside the reduced range" B rkatr(2)
INTRKAZ(2): Integrating of the frm w(2) deviation for the additive fault correction per ignition and for the calculation of the
condition "rkaz w(2) outside the reduced range" B rkazr(2)
A little snippit of how the byte order of NOLRA works in our DME this is from the me7.2 BMW functions sheet which you are right shares about 60% of the pages from the m7.1 DME from the audi frousm
Last edited by zarboz; 05-03-2019 at 12:42 PM.
I like to pretend I know stuff
I'm getting dizzy, but in a good way
Diehard E39 driver.
I'd rather die or take a walk before driving an E60 or any BMW made after Y2K.
"Your momma's so ugly she makes Bangle cars look nice"
Zarboz, I wasn't trying to say that the ME7.2 won't be good in some way, just that some fancy tidbits like AFR safety parameters, 2-step, and whatever else won't be available with it.
And just so everyone besides Keith knows, Enda320 is the friggin man!! He is one of the main reasons I was able to do anything with the M5.2. The other reason was Mika's TestO logging program, but without Enda helping me to get going, I wouldn't have been able to do anything.
I am working on 2 step now or.... well .... . this gets nerdy to an extreme but my GOAL is to hijack the VMAXD function redirect it to my own 2 step function
thats a few months out though
But i did find this on the youtube so i know its possible:
https://www.youtube.com/watch?v=HFTURa3R_iM
Cuz that guy HAS to be manipulating the stock tables I am referring to (overrun cuttoff vmax stuff )
Enda has a copy of the function sheet hopefully it lends some insight on the functions he was playing with
I like to pretend I know stuff
Oh, hardcut, I did something like that last week I think, damos name is "gangabhängige Hystherese für harte Drehzahlbegrenzung"
eg - gear dependant hysteresis for hard rpm limiter
Stock values are 250rpms (factor is 0.25 on the numbers)
Shorthand name is DNMAXHG, and it was just before the main RPM limiter.
Giftschrank Projekt
Ok cool i have DNMAXHG defined and located in the xdf just haven't played with it much and only got about 300+ pages deep into that manual
and when i read about it I thought it would need a little more playing
The condition B nmax is set, if the engine speed exceeds the threshold NMAX. Thereby cylinder cutout is possible, if air and
ignition-angle intervention is not sufficient (cf. %MDRED).
Once the engine speed exceeds the threshold NMAX+DNMAXHG, the condition B nmaxd is set. Thereby minmx w is set to zero for
anzkwu w (UKWNMAXG)!
SOOO it seemed like NMAX (6500 in my case + 200 = 6700) but i must be missing a factor somewehre
Last edited by zarboz; 05-03-2019 at 06:13 PM.
I like to pretend I know stuff
Check for codes maybe? Maybe immobiliser related (full reads can copy over a different EWS code, and you sometimes might need to have the throttle adaptation completed, so let the ignition stay on for a few seconds and it should do a test sweep if you don't press any pedals.
Then you can switch off, wait a few seconds and try and restart.
Sometimes you need to do the test sweep, then start the car and let it idle for a short while, then switch off.
Another possibility is if you have modified the file, the checksum might be incorrect.
Giftschrank Projekt
Was there anything in particular you were looking for in the ECU, or just general tips are tricks?
1000 pages of that PDF isn't light reading, but just going for bits one by one should be more manageable.
Giftschrank Projekt
Bookmarks