E90Post
 


 
BMW 3-Series (E90 E92) Forum > E90 / E92 / E93 3-series Powertrain and Drivetrain Discussions > N55 Turbo Engine Tuning and Exhaust Modifications - 335i Tuning > Anjuna's N55 Tuning Thread



Reply
 
Thread Tools Search this Thread
      02-11-2020, 11:19 AM   #1
anjuna
First Lieutenant
United_States
316
Rep
399
Posts

Drives: f25
Join Date: Feb 2017
Location: houston

iTrader: (0)

Anjuna's N55 Tuning Thread

Hello everyone,

Since there has been a ton of interest in the custom tuning community (MHD based) we will be working here to spread work, share information, help development of the platform, and to help people help themselves with regards to some of the "beta" OTS tunes I have put out there.

Everything in this thread is
- AT YOUR OWN RISK
- AT YOUR OWN RISK
- AT YOUR OWN RISK
- A "live document" so explanations, definitions, working concepts, and the lot are all subject to change. If anyone says they have everything figured out, they're dead wrong.

Now, for those of you who do not know, I own a HW rev vehicle that is F series. I have translated a lot of what I have into the E series (9E60B and 98G0B) and other HW rev are being actively developed. Not even going to lie, my HW rev (00000D07596401) has a metric ton of definitions finished, scaled, and dialed in.

All definition files will be shared, "beta" OTS maps will be shared (completely unlocked and completely free - all of which have been fully developed by myself and the alpha testers), all tools will be shared, and all constructive criticism and conversation will be very much welcome.

I am doing this because there is a LOT of misinformation out there, lacking definitions, and a ton holding this community back. By focusing our efforts publicly, we will have an advantage of sharing resources and members sharing their strengths in development.

This is NOT an undercut at those doing professional tunes. It takes a very particular skillset to work with these files, to work with your own map, and to make the right adjustments and understand how one table will change the behavior of a vehicle.

I'll be breaking this out into multiple sections and filling it in as time allows. Forgive me for the blank place holders right now, but I already have people asking me for test maps, trying to work on definitions, supporting my family, as well as holding a full(er) time job

All downloads will be linked in the original post; I will add links below as time allows. - PS, if someone wants to contact me about a cloud link/account that can be publicly used to share these files, it is always safe to have mirrors/backups.

PS - for this to work, you'll need to find your HW rev (it's the header of the last column on ANY MHD log for your vehicle) to make sure they grab the right files. This is the easiest way as it's pretty fool proof. Even if you screw up, MHD won't allow flashing a different HW rev than your vehicle has.

TOOLS:
N55 Timing calculator for VANOS, Injection, Ignition, etc.

DOWNLOADS:
WORK IN PROGRESS!!!!!
9E XDF (datecode - 200214) - THIS IS LIKE 25% OF WHERE I WANT IT TO BE!
98 XDF - Added some of the exhaust valve control logic

REPO:
https://github.com/anjunamw/N55

LASTLY
I should say that all the tables covered here have one single table pulled out for explanation. My primary method for tuning this platform with its 8957981394 different ways to do the same thing is to make all the tables identical (i.e. comfort vs eco vs sport vs sport+) so that we can hopefully eliminate unexpected behavior. This includes
- making "cold" and normal tables the same
- eliminating the difference between eco, comfort, sport, sport+ etc.
- any time there are multiple tables for the same operation (a lot of the VANOS, Valvetronic, Injection timing, etc...)
- Elimination of spool mode (trust me, with the right tuning, ya wont miss it)

You can feel free to follow my own method and be happy. Alternatively, you can follow my method to start and then tailor the modes to your liking after getting a strong basemap. There are tons of you smarter than I am! I support your growth and engagement in the community.

Last edited by anjuna; 03-05-2020 at 08:42 AM..
      02-11-2020, 11:20 AM   #2
anjuna
First Lieutenant
United_States
316
Rep
399
Posts

Drives: f25
Join Date: Feb 2017
Location: houston

iTrader: (0)

BOOST CONTROL

WEW

HOLD ON YE LADS, THIS IS GONNA BE A FUN ONE...

Boost control on the N55 engine (regardless of E vs F series) is kind of incredibly cool, but also incredibly fucking hard to grasp.

I've seen charts and maps trying to discover the cli.... uhh... I mean the way boost control works. I'll do my best here to help you guys out with tuning, but also explain some of the limitations as we go.

FIRST AND FOREMOST boost target is directly associated with the amount of %L (load) that is required to satisfy the target load AFTER taking into account the %L that is supplied by fueling, VANOS, and ignition timing. Let me rephrase that. If we can achieve 75%L with fueling, VANOS, and ignition timing alone, we will not see a call for boost (0psi target boost). That said, there is some fucky logic that surrounds VANOS and target boost. I have not yet discovered the table/logic/reasoning behind it, but I will sometimes experience the DME calling for boost at a low load situation and it seems to be correlated with intake VANOS position. I do not know enough to declare how the correlation works, but I know it is there. There have been posts on other forums that claim to have found a table that supports this operation, but idk.

The primary table that (in my understanding) has a large influence on literallyfuckingeverything is the
Compressor characteristic with required compressor / turbine power (KF_ATL_PVERD)
X AXIS - (X/32)/3.6
Y AXIS - (((x/8192)*14.504)-14.507)
VALUES - ((X/65536)*100)

THIS IS MY CURRENT TABLE


It is my understanding that this table references boost and MAF to produce a "power" value. The DME basically says "ok, it takes this much 'power' to produce this much airflow at this pressure." I am using "power" in quotes because it's not really a thing - It's sort of an arbitrary value that is used in the calculation of wastegate duty cycle (WGDC). I know, I know, this sounds fucking weird. I hope that I can explain it effectively in the next few tables/paragraphs.

Lastly on this table, this is something that is global. If you consistently experience over/underboost, this may be a good place to start. HOWEVER, I do recommend that you keep this table pretty close to stock if you're using the stock downpipe. I am catless, which is why I chose to tweak some of the values here. The values that are in this table serve as an immediate lookup for the DME to calculate WGDC (they are the "base" values if you will) from the compressor itself.

The second most important table is the incorrectly named
Wastegate Position - für Vorsteuerung (KF_WGPOS_VST)
X AXIS - (X/32)/3.6
Y AXIS - ((X/65536)*400)
VALUES - (X/(65536)*100)
First, let's rename it. A more appropriate name would be WasteGate Feed Forward Table (Base) because we are taking that base value found in the compressor map and directly modifying that value based on "WGDC req MAF" which is a MAF value that is influenced by the PID and PID adder tables (which will be covered below). Let's take a look at the stock table, then we will take a look at a more reasonable and functional table.


After wrapping your brain around this, you may realize that it's kind of doing the exactfuckingopposite of what we would prefer for it to do - This table is taking the "WGDC Input (Y Axis)" and pretty much consistently making it lower. This sucks. For instance, on spool up we can see that at 44% WGDC input and 130g/s, it is pushing down the WGDC to 28%. wat. This means that the PID loop must make up for 16% error right off the bat PLUS whatever error we have from SP-PV (setpoint subtract process value [boost setpoint vs boost psi]).

So, we can modify this table to make a little more sense. The table posted below (like most of what is in this whole thread) is WIP (Work In Progress). However, spool up is on fleek and maintaining boost at lower MAF (general driveability) is great. Oscillations are to a minimum as well for reason's I'll explain as I get into the PID loop logic.


After looking at this for a little bit, you'll notice that I am pushing WGDC up much, much higher at lower g/s values. PLEASE REMEMBER THAT I AM CATLESS so your values will be different. However, you can note that after ~100g/s that the input to output WGDC is generally 1:1 ratio. I use this table to improve spool, improve driveability, and not have the stock feedforward table sandbagging everything like the asshole it is.

Uhhhhhh I guess there's another pretty important value we should cover...
WGDC Limit (K_ATLR_MX)
This one is kind of self explanatory... It's the maximum value (in percent) of WGDC that the DME can call for. I have mine set at 100% because I'm constantly in the DANGAZONE but I mean you can kinda set it at whatever you want. Stock on my hardware rev is 65% and that's probably enough for most of you to begin with. There's no harm in setting it too low, as you'll just see WGDC pegged out at 65% if you need more... However setting it too high can lead to issues. At the least severe end, you'll see massive oscillations in WGDC as it goes from like 90% to 20% because your PID loop ain't right boy. At the most severe end, you'll see the DME call for a TON of WGDC and have the potential to overboost, though this is unlikely if you keep most of the stock boost control logic.

Along those same lines is the table
Additionnal WG due to the spring (zus. Grösse zur WG-Ansteuerung wegen WG-Feder
KL_WGFEDER)

This table is fairly straight forward. The primary function is to add WGDC to your final WGDC calculated value to counter the spring force from the Wastegate flap (the actual mechanical assembly of the wastegate flap, arm, diaphragm, etc. has a spring return to OPEN the wastegate in the event of an issue). Column values are Final Calculated WGDC and the values in the cells below them are added to the Final Calculated WGDC to produce the Final Commanded WGDC.

I guess now is a good time to mention that, although it does not make sense to have a "0" value or a "max" value in a lot of these tables, they are required for interpolation (a big fancy word for determining a value when you only have bounds to work with [which is a big fancy way of saying that if you have to look up "90" on a table that has a "80" and "100" on the axis, you have to determine what value corresponds to "90"]). I mention this only because it doesn't make sense to add 20% WGDC at 100% WGDC calculated

Some of the last "static" logic tables I'll cover in this section are the "Boost Bias" tables. These may or may not be defined for your platform at the time of writing this, but they're super important tables. I don't know their full impact on operation or function, but that's because I had one purpose for defining them and modifying them - to make them the same across eco, comfort, and sport. They seem to function where an increase in the cell value results in a higher boost pressure, but it seems that the boost target is not affected. This can cause problematic unexpected behavior. In my case, it manifested itself as a HUGE boost error (overboost) when placed into sport mode. I could end up with 4-7psi boost when the target was 0psi. Fun fact, if you start to make too much boost compared to target, the DME has this really ingenious idea to reduce load. It's called RETARD ALL THE TIMING AND RUN RICH AS FUCK which is absolutely, in no way shape or form, at all effective at reducing boost pressures and serves only to drive EGT through the fucking roof.

BOOST PRESSURE BIAS SPORT
Columns - X
Values - X/32768
Here's my table


You can see that I've pretty much flattened everything out, but increased bias on the upper end in an attempt to improve boost up top. Pro-tip: it sort of works.... eh...

NOW TIME FOR THE GOOD STUFF - PID LOOP INFO
Let me get you acquainted with a PID loop.
A PID loop is a type of control loop that looks at error (Set Point - Actual Value) and responds to that error in a way that works to correct the error. This enables the DME to respond to errors related to air temperature, density, barometric pressure, and literally anything else. However, it is agnostic to what actually impacts the process - It ONLY cares about the error. This eliminates the need for 987459 additional tables to account for these other variables.

The Absolute Final WGDC looks like this...
P gain summed with...
I gain summed with...
D gain summed with...
FeedForward value.

I KNOW THIS LOOKS CONFUSING, BUT STAY WITH ME HERE...


So now you can see how important the feed forward table is, but you must also understand that the PID loop can absolutely be negative and pull WGDC. There are some other tables that are important here as well, such as PID Ceiling as well as PID Floor which both serve to place limits on how much the PID loop can do for WGDC. If you're using the stock Throttle Body logic, this serves to reduce MANIFOLD boost pressure but it cannot increase it. There's another smaller table called WGDC PID Adder Ceiling which is a little different take on limits. WGDC adder just adds airflow to the MAF calculation for WGDC. This makes sense if we look at the Compressor Characteristic table, since an increase in airflow means an increase in "power" to drive the turbine (which also means more WGDC).

Back to the PID concept.
P gain determines how "proportional" the change is due to error; it is essentially a ratio of "how much error" to "how much correction". If P gain is too high, we get an overreaction to error and oscillation, BUT only if we actually hit setpoint. (i.e. error goes positive, hits zero, then negative, repeat). Too much and we get touchy oscillations, too little and it is much more difficult to correct for error.

BMW splits the P-Factor out into two different tables
WGDC P-Factor (KF_PDIFF_ATLR_P)
X AXIS - X/32/3.6
Y AXIS - X/8
VALUES - X/16



This is exactly as discussed above. Error are the rows, Values are the correction factor, but we also have the ability to change these based on airflow (columns). Pretty neat.

WGDC P-Factor part (KF_PVERD_GRD)
X AXIS - X/32/3.6
Y AXIS - ((X/8192)*14.504)-14.504
VALUES - (X/65536)*100



P-Factor Part, in my understanding, states how heavily the P portion of the loop is weighed. I didn't necessarily see a huge reason for it to fluctuate like the stock table, so whatever... here it is.

WGDC I-Factor (KF_FATLR_I)



I gain is a portion of error correction that gets greater and greater the longer the error exists. So if we are constantly below setpoint for like 5 seconds, the gain from I will be continuously growing until we hit the maximum allowed I value. However, it does not just go back to zero once we hit set point. The I gain will retain the value held, as the PID loop has required that amount of I gain. P and I work together to move the actual boost closer to the setpoint (as long as their gain limit isn't maxed out). P is the rapid mover, I is the slower but more constant adjustment. Also, slower is really relative here, because a lot of this happens in milliseconds.


WGDC D-Factor (KF_PATLR_D)
Unlike P and I, D gain is only concerned with how quickly the process is changed. If there is a HUGE proportional (P) gain, D is the thing that is attempting to smooth it from rapidly changing from 0 to 100 in a split second.



WEWEWWWW JESUS THAT WAS A LOT... I will get to wastegate position, boost limits, and multipliers another time

Last edited by anjuna; 03-05-2020 at 11:13 AM..
Appreciate 4
      02-11-2020, 11:21 AM   #3
anjuna
First Lieutenant
United_States
316
Rep
399
Posts

Drives: f25
Join Date: Feb 2017
Location: houston

iTrader: (0)

VANOS

VANOS is a hot topic for a lot of people and there is a metric fuckton of misinformation out there regarding the operation, purpose, and the impact of changes made. The basic purpose of this system is to ADVANCE the intake camshaft and RETARD the exhaust camshaft. Lots of publicly available XDFs give no true reference value for the values in the table, so I've provided some documentation here to help understand WHAT we are dealing with.

First, here's a helpful chart straight out of BMW's own documentation for the N55.


This chart shows us that baseline for the intake camshaft is 240° BTDC. Baseline for the exhaust camshaft is 475°F BTDC (or 245° ATDC, though I prefer to look at this all with a standard value of BTDC).
This chart also shows us the adjustable range for each camshaft - Up to 70° advance for intake camshaft and 55° retard for the exhaust. As such, we can change all sorts of engine parameters - VE, Effective compression, overlap, and the likes.
- EVERY SINGLE CHANGE YOU MAKE TO VANOS will have a sizeable impact on engine performance.
- YES VANOS does impact how much ignition timing advance you can run - If you reduce overlap, you increase effective compression ratio and decrease EGR. EGR is very much responsible for helping deter pre-ignition, since there is less oxygen content and lowering effective compression ratio decreases... well... compression ratio of the engine, so you'll see less pre-ignition due to heating of the air/fuel mixture on compression stroke.
- Changing VANOS WILL impact what you need to do on injection timing. A LOT of people make changes here without understanding that they are effectively changing air/fuel mixture (NOT RATIO) in the cylinder. This is why we can make VANOS changes and notice high EGR or sluggish throttle response. Congratulations, you played yourself.
- KEEP IN MIND that VANOS will take some time to change the camshaft position. As such, some tables that are RPMvCOMMANDEDLOAD can be difficult to work with if your VANOS is moving all over
- Lower overlap means that your AFR will stay much tighter/consistent

There are a few different opinions online about advancing/retarding camshafts. My notes....
1. Advancing intake and retarding exhaust together increases overlap and lowers effective compression ratio. This makes for good cruise and a pretty decent starting point to increase load into high boost.
2. Keeping as much cam separation as possible (low intake advance, low exhaust retard) makes idle nice and happy.
3. Trying to run low overlap (increasing compression) in cruise is possible, but only to a certain degree. You may think that decreasing overlap sounds fantastic and you want all the compression. Let me stop you there - You will have to pull a fair bit of ignition timing to reduce pre-ignition. So, not only are you increasing air consumption, you are also losing ignition timing. This sucks.
4. Running low overlap at high RPM has shown to be advantageous, as even BMW takes this type of model to their own stock VANOS tables. The velocity of the air, the volume of the air, and the compression into the cylinder allow for this approach to be effective. I tend to still run a little intake advance, but YMMV.
5. The VANOS Load axis is based off COMMANDED load, NOT actual load like other tables

These are some notes from a publicly sourced N55 document as well.
1. "Overlap = good for spool/low back pressure, bad for lots of back pressure."
2. "Lots of overlap leads to an EGR effect as exhaust gasses will escape into the intake manifold. This contributes to carbon buildup, but also fills the cylinder with inert gas and improves fuel economy by decreasing engine displacement."
3. "[Reducing Exhaust Cam Retard] increases cylinder pressure and engine vacuum in some cases, reduces EGR effect etc with less effect on power than changes to the intake cam."
4. "[Increasing Exhaust Cam Retard] can decrease cylinder pressure in some cases and can increase EGR effect"
5. "[Reducing Intake Cam Advance] is good for top end power (can increase cylinder fill due to speed of incoming air at high RPM)"
6. "[Increasing Intake Cam Advance] is good for low end power (increases cylinder fill when piston/air speed is slower and back pressure is lower, helps the engine gobble more air down low)"

Some other theories to take into account is the short runner vs long runner concept. E90 N52 engines with the DISA valves make the intake runner longer at lower RPM to increase the inertia of the airmass, such that when it is faced against a closed intake valve, the inertia will "force" the airmass in when the runner is longer and the airflow is low. When the airflow is high, the long runner is a disadvantage and the DISA valves shift the runner to being short. VANOS allows is to take a similar method to tuning airflow in the N55 engine, as the intake advance allows us to both scavenge (use the exhausting gasses to pull the intake air in) as well as improve EGR. /rant

Now I've noticed that the public XDFs fall short of making these references against true values, so here we go
VANOS INTAKE
COLUMNS - X/100
ROWS - X
VALUE - ((X/1.25)-120)

This will show you the camshaft timing vs baseline (as shown on the chart) as to help you better visualize and calculate (using the calculator in the original post).


VANOS EXHAUST
COLUMNS - X/100
ROWS - X
VALUE - (115-(X/1.25))



My tables, as they are posted now, need a little tweaking to support better overlap on the low RPM, high load area. I pretty consistently run into pre-ignition that doesn't seem to be affected by ignition timing in start/stop situations.

Last edited by anjuna; 03-05-2020 at 08:30 AM..
Appreciate 1
      02-11-2020, 11:22 AM   #4
anjuna
First Lieutenant
United_States
316
Rep
399
Posts

Drives: f25
Join Date: Feb 2017
Location: houston

iTrader: (0)

VALVETRONIC / THROTTLE TALBES

Ah yes, valvetronic. The topic of literally every conversation I have with myself. What is valvetronic? Think vtec - now think bigger. It's an infinitely adjustable (through the range) of adjusting your intake cam opening. NO VALVETRONIC IS NOT "THROTTLE POSITION" FROM MHD LOGS!!! By using valvetronic, BMW moves to control engine air consumption by shifting toward using an uber-complex but uber-cool way to control airflow. Again, the valvetronic controls the lift of the intake valves by varying the input ratio of the intake cam. Check out wikipedia for mo betta information.

Why does valvetronic matter? Well, it kind of directly has an impact on the air being consumed by the engine. BMW still uses throttle plate logic to control the.... throttle plate... but I usually do away with all that - Like BMW.. ya know.. documents in all their shit - they claim the throttle plate is ALWAYS OPEN and in reality we all see this not to be true using MHD logs (again, throttle plate is throttle position. we cannot see valvetronic position [yet] with mhd).

Since the valvetronic position has everything to do with the intake valve position, we can get into some fucky conditions if we don't know what we are doing (and we generally don't, because we can't see true position, don't worry, i'll repeat this again and again). For instance, if we DON'T open the valvetronic enough, we can experience "overboost" and that sucks. However, if we open valvetronic TOO MUCH, we will experience too much Actual Load vs Requested Load. Sometimes it's a result of flowing too much air and not building enough relative boost. This means we get an "Implausible boost pressure in charge pipe" type DME drivetrain malfunction... Get the picture yet?

My approach to tweaking valvetronic is probably.... unique... but I'll talk about that in a second.

First, here's what the valvetronic tables look like STOCK for my vehicle (by the way, there are like 10 tables, which control different modes, so yeah...)
VALVETRONIC5 - MW (STOCK)


So let's take a second to look at this table. It's non-linear! waaaaat. Yeah, so all you guys complaining about "non-linear throttle" not being massively improved by using the "linear throttle" option of the MHD flash, stay tuned! However, it's not as bad as it looks. We must understand that at a higher RPM (even with the same throttle input) we need more air. Additionally, this table is a little confusing on it's own... Like, OK, if throttle position isn't valvetronic position and this table has a axis that looks like throttle position, then what the fuck is it??

My best understanding is as follows.
You put your foot on the accelerator (loud pedal, right foot) and that transmits a position. Let's call that something unique, like "accelerator position" phew... that took me a bit.
Now, your accelerator position gets scaled by another table, like "Pedal Comfort (KF_PEDAL_0)" to produce something we can call "Absolute Accelerator Position (or AAP if you don't have the time).
- AAP is used in a ton of places. stay tuned.
THEN your AAP is used as a lookup in the valvetronic table for valvetronic position. It does not seem to waver (like if throttle position is reduced by throttle plate interventions).

Lets take a look!
Pedal Comfort (KF_PEDAL_0)

1. SO you put your foot at 20% on the accelerator at 2000rpm
2. This table returns an AAP value of 23%
3. Your valvetronic table uses AAP of 23% at 2000rpm to return a valvtronic position of ~15%ish according to the stock table.
4. Pretend to die because this is weird.

So what does this all mean? It means that this is suuuuper hard to tune and work with unless you've spent a good bit of time working with your own table. HOWEVER we can use this table to optimize airflow, but we can't see valvetronic position so good luck.

lastly, I'll leave a little tidbit here... If you notice, the accelerator position to AAP table is scaled up to "106%" in my example. This is how the transmission does kickdown logic - If you flatten out this to be 100% max, you'll never ever see kickdown when you're in Manual Mode on the auto. On my accelerator pedal, I have a range (0-95%) that is linear, then the last 5% is more of a "click" which is where the kickdown occurs. BMW does this so that if you're a moron driving in manual mode and you really need to hit it, you'll depress hard enough and it will just do magic. As such, if you want to TRULY delete kickdown without buying one of those funky little plastic gromets to go behind the accelerator, just flatten this out to 100% max.

MY THROTTLE TABLE


I continue to use 113% max as my AAP max and, as such, scale my valvetronic tables up to 100% on the columns. This means that 100-113% doesn't change valvetronic (it's already at max), but 100-113% does in fact downshift the automatic.

Before I define these tables, I want you to note that the N55 opens up to 9.9mm (according to the BMW spec) but the stock BMW logic only opens to 9.8mm. I'm assuming this is to keep a little safety in the valvetronic motor/etc. Good enough for them, good enough for me. If you want to try the 9.9mm, substitute 9.9 in place of 9.8 on the value conversion below. The value conversion makes this a 0-100% of valvetronic position so that things make a little more sense.

COLUMNS - X/100
ROWS - X
VALUE - ((X/1000)/9.8)*100
VALVETRONIC5 - MW

Last edited by anjuna; 03-05-2020 at 08:37 AM..
Appreciate 1
      02-11-2020, 11:23 AM   #5
anjuna
First Lieutenant
United_States
316
Rep
399
Posts

Drives: f25
Join Date: Feb 2017
Location: houston

iTrader: (0)

INJECTION TIMING

Why didn't I put Injector timing under fueling? Well, because it's a whole-notha-level of shit to understand and the variables are offset differently, too.

First - What is injector timing?
Injector timing is literally fucking that you moron (just kidding). It is the time before top dead center (BTDC) that the injector STARTS to spray. I dislike that it is start time as opposed to closed time (I have seen other ECUs go with close time) but I think that since the table is RPMvsLOAD, this proves to be somewhat advantageous, since we can assume that we will be injecting more at higher load and therefore shift the injection timing to be more advanced under higher load. Additionally, at higher RPM we may see a benefit from advancing injection timing, since everything is moving pretty damn fast and we want a good mix.

Second - Why do I care about injector timing?
Any changes made to VANOS should have a proportional amount of change made to the injector timing. My current understanding is that these are single-event injections (look into other vehicles/fuels and you will see that diesels and some GDI shifted to multiple injector events to promote better mixing and reduce injector noise, but we have other things going for us). As such, I've seen sloppy changes to VANOS without changes to Injection Timing and see high EGTs, sucky lag, or just general bullshittery.

NOW, before I show you my table, I want to reiterate a few things.
- Higher values = earlier injection start time
- Lower values = later injection time
KEEP IN MIND THAT VANOS PLAYS A HUGE FUCKING PART HERE. Seriously. As you look at my table you'll think "but holy shit you're advancing under cruise and NOT under high load" - well yeah you nosey little shit, I am, but keep in mind that VANOS is advancing my intake cam as much as 60° and this table doesn't make a ton of sense without taking that into account (which is why I provided you with the calculator in the first post. Look at it).

AS SUCH HERE WE GO
Injection Angle Start (there's like 4 tables)
COLUMNS - X/20.48
ROWS - X
VALUE - X*3/128
and voila.


Oh, and remember that cat warmup table I mentioned earlier? It looks something like this


Notice how the Injection timing is quite retarded in the warm up range. This is no coincidence - In cat warmup, there is retarded injection timing and retarded ignition timing. This causes EGT to shooooooot up and makes cool spooly swooshy neighbor-abuse noises. I am catless and I run the cold start warmup because it does allow for some of the exhaust and valvetrain to warm up quickly. If you hate the warmup, you have a couple choices.
1. Copy your regular injector timing tables over to the cat warmup table. You'll still see some retarded timing on cold start, but the raspy noise from retarded injector timing is mitigated.
2. Change Cat temp threshold to deactive cat warmup (K_KHNST_TABG_IKAT) to some number that is colder than you'll ever get. You could probably get away with setting it to -300 (its in °C) and be fine. If I want to turn mine off, I just set mine to -30 since I live in texas, as I will never see -30°C.
3. Use the MHD flash option to disable cold starts

I'll probably expand on this a little later, but also may cover some of it again in the exhaust flap, burble, overrun section, since we can do some cool stuff with it there (m2 brap thread mofos - eat a dick, dumb shits)

Last edited by anjuna; 02-13-2020 at 10:25 AM..
Appreciate 0
      02-11-2020, 11:23 AM   #6
anjuna
First Lieutenant
United_States
316
Rep
399
Posts

Drives: f25
Join Date: Feb 2017
Location: houston

iTrader: (0)

EXHAUST FLAP, BURBLE, OVERRUN

This is a partial comment as I am running out of time for comments this evening. I will update this more as I have time with good tables, burble tuning, and overrun.

EXHAUST FLAP CONTROL - WORK IN PROGRESS, ADDITIONAL BEHAVIOR IS UNDER REVIEW
All these tables have the same columns types and row types
COLUMNS (rpm) - X*40
ROWS (Gear) - DO NOT USE DATA MEMORIES, use a ascii char and they are labeled as such - Reverse, Neutral, 1, 2, 3, 4, 5, 6, 7, 8 (For ZF8HP45)
VALUES (1 is CLOSED, 0 is OPEN) - (X/2.55)/100 THIS VALUE SCALING IS INCORRECT, IT APPEARS THAT THERE IS ADDITIONAL LOGIC FOR OPENING THE EXHAUST VALVE UNDER LOAD AS WELL. HOWEVER, IF YOU'RE LOOKING TO GET A START ON CONTROLLING THE LOGIC, THIS IS A GREAT START.

AKRGRCC - Exhaust Flap Control (?Mode?)
AKRGRCCAT - Exhaust Flap Control (?Mode?)
AKRGRCCATM - Exhaust Flap Control (SPORT)
AKRGRCCM - Exhaust Flap Control (SPORT)
AKRGRCO - Exhaust Flap Control (?Mode?)
AKRGRCOAT - Exhaust Flap Control (?Mode?)
AKRGRCOATM - Exhaust Valve Control (SPORT)
AKRGRCOM - Exhaust Valve Control (SPORT)

Exhaust flap control word (CWAKR) - my HW rev uses a value of "18" to enable this type of control.

If you want to run your tune with the flap open during sport (this is the sport position on the transmission shifter) then flatten out the sport tables with 0 everywhere.

Last edited by anjuna; 02-14-2020 at 09:42 AM..
Appreciate 0
      02-11-2020, 11:25 AM   #7
anjuna
First Lieutenant
United_States
316
Rep
399
Posts

Drives: f25
Join Date: Feb 2017
Location: houston

iTrader: (0)

LOAD / LIMIT, TORQUE,

ok so like everyone freaks out about the limit tables, and it's actually pretty simple. I've seen charts, graphs, maps, machine learning skynet ass shit trying to decypher the whole load/limit stuff that BMW has in place.

Now, I'll still touch on those bits here, but I will also explain how to un-cluster-fuck your tune so that things are super straight forward.

First, I'll clear up the whole Load/Torque/Limits thing....

Let's pay attention to the table called Load to Torque limit (KF_MDIOP_1)
I've heard people say this is a lookup table AND an inverse lookup table. SORT OF WRONG. These three tables are just conversion values from torque (nm) and load %. Load % (I'll abbreviate as L%) is an arbitrary value UNTIL this table. There are a ton of tables that have reference values to L% (like ignition timing, VANOS, fueling, etc.) There are VERY few tables that actually use torque (but most of the tables covered here will be referencing torque) so these are a pretty important set of tables.

To cut the shit, Load to Torque tables allow the DME to control the engine output based on both load and torque limits. We can begin to quantify torque and use that to limit drivetrain stress - the ZF 8HP transmission in our vehicles has a torque limit and, if exceeded, will call the DME to reduce output. This is why you hear a lot about people skewing the last two rows (160%L and 220%L) and making them significantly higher - this causes the interpolated value from 140%L and up to under-report torque and evades the drivetrain torque limits. At that point, we could make 200%L and the DME calculates that torque to be significantly less than stock. This bypasses the drivetrain limits but conversely does not allow the drivetrain components to realize the actual torque on them. This can cause line-underpressurization for the transmission and xdrive should use caution with this approach. Personally, I leave these tables pretty fucking close to stock and then utilize xHP to bypass drivetrain limits. This is the way.

blah blah blah what does it all mean? tl;dr, these tables convert the arbitrary %L and RPM to a torque value in newton meters. Here's my table below. A bit of smoothing, massaging, and general fuckery has produced my table. All three of my L2T tables are identical


Now lets look at other torque based tables.
Modeled torque limit 1 (KF_MDKMAX_GANG_MOD1) (and 2)
Yeah so just set both of these tables to 900. Everywhere. You'll likely never make 900nm, but this is sort of an unnecessary safety that BMW has built in. It limits the engine output per gear per rpm. If you REALLY wanna use it, just set it to 900, tune, take some logs, figure out where you want to limit torque, and model these tables after that.

Torque request ceiling (Auto) (and DCT and manual)
I set these tables to 910 for the same reason as above. However, you can use them to limit general output of the engine per RPM. Neat-o.

Now, the number one question I always seemed to find people asking (and myself in the beginning) is HOW DO I MAKE MORE POWER?
Seems simple, right? But with my series vehicle, my logic was caught up in "I'm already smashing the load pedal into the floor... I can only advance ignition so much, I can't just change boost and turn it up..."

LOOK NO FURTHER THAN THE LOAD CEILING (MAIN) (KF_RFMAXATL_KR)
This table has a pretty basic layout. RPM rows, and ignition correction (due to knock) for the columns.

Here's mine. Don't copy it unless you wanna go stage 984359+ (or whatever the fuck stages are - BULLSHIT)

Here's my STOCK table


So just looking at these two side by side, you can realize that I'm asking for a metric fuck ton of load everywhere. Use the L2T table posted above and you'll see that if I actually achieved target L%, I would make ~620nm at 3500-4000rpm (protip - this can be done on stock turbo, but I can barely make 140%L on the top end).
I'm lazy and don't wanna go through a bazillion logs, so here's what I have from lately.


Use this table in gentle graduations. I know I'll never make target load in most cases, but jesus christ if the engine won't try to. I've made WAY too much torque down low when first experimenting with xHP and increased target L% tables. This is how you bend rods, destroy transmission clutches, and have a bad time. IF YOU TAKE THIS OUT OF CONTEXT, MISTAKES WILL BE MADE. Lastly, the columns are ignition values based on ignition correction (knock) to help you define a dynamic load limit based on pre-ignition. This helps keep you from calling for way too much %L if you have bad gas, mechanical issues, or whatever. You'll notice that mine stay pretty strong with light ignition correction, but fall off harder the more ignition correction occurs.

Next up is Load ceiling (super knock) (KF_RFMAXATL_SK)
I DO NOT RECOMMEND CHANGING THIS TABLE BECAUSE IT (and ignition table 3) ARE THE TABLES USED FOR FAILSAFE!!! IF YOU EXPERIENCE A MAJOR MISFIRE, OVERBOOST TO 24PSI LIKE A FUCKING IDIOT (me), OR HAVE ANY OTHER SORT OF RUNAWAY ISSUE, THIS IS WHAT THE DME FAILS BACK TO! It is also the table used when "drivetrain malfunction" occurs. This can be caused by a multitude of issues, but I've ran into it when playing with boost control. It drives like a dog for a reason - to get you home.

You may find another table, such as Max load constant (K_RF_MAX)
Although I haven't found too terribly much on this cell, I believe that it's simply the max output in %L that your DME will allow in non-overboost conditions. Set it just slightly above your max load target that you expect to run (if your max load in load ceiling main is 185, set max load constant to 190).

You'll also find some "torque reduction" tables for coolant temp, intake air temp, and oil temp. Use your brain here. Stock tables are fine, but if you want to build in some safeties for oil temp and stuff, you can do it here; BMW only pulls %L with too high of temperatures, but will allow you to try and make max %L on a cold engine. Personally, I haven't done this because if an emergency occurs and I have to jump in my car and drive aggressively to get somewhere in a hurry, I don't want some logic holding me back. An emergency drive takes precedence over my engine health.

That's all for now!

Last edited by anjuna; 02-28-2020 at 06:52 PM..
Appreciate 0
      02-11-2020, 11:26 AM   #8
anjuna
First Lieutenant
United_States
316
Rep
399
Posts

Drives: f25
Join Date: Feb 2017
Location: houston

iTrader: (0)

IGNITION

For all the topics we have covered, ignition is generally the one that most everyone is familiar with. So, i'll discuss a few general basic ideas around ignition AND touch on some of the more specific concepts to the N55 DI platform.

First, ignition timing follows the value in the cell - a positive number is an "advance" and a negative number is a "retard" in timing. If our cell value is 20, then we are firing the coil for the spark plug as close to 20° BTDC (Before Top Dead Center) as possible.

The reason for ignition advance has a lot to do with a lot of things, but some of the most basic are flame front velocity, air fuel mixture (both how well the air and fuel is mixed as well as the Air Fuel Ratio [AFR]), engine load, and VANOS... Those are just a few, but also the ones that we are in control of if we are tuning our own. I'll walk through those.

Flame Front Velocity - This is a fancy way to say "how quickly the fuel burns" which can be affected by fuel octane, fuel type, and general temperature in the chamber.
- Lower octane fuel has a faster flame front velocity, but consequently is more prone to pre-ignition (spontaneous ignition that does not occur because of the spark - often more advanced than our spark - this is what knock sensors try to capture) - Additionally, this is a radical oversimplification.
- Higher octane fuel has a slower burn rate, but is not as prone to preignition
- Ethanol has a VERY slow burn rate, but the octane rating is also much, much higher than petrol and therefore is even less prone to preignition. Additionally, E100 requires ~35% more fueling then conventional petrol.

Air Fuel Mixture (atomizing/tumble/physical mixture of air and fuel) - This very much contributes to how effective and efficient your engine will be. If the air and fuel are mixed poorly, you can end up with fuel on the walls of the cylinder, but also pre-ignition, as the uneven mixture of air and fuel contributes to hot spots and a large collection of fuel in the cylinder is more prone to pre-ignition. VANOS helps us with this, though.

Air Fuel Ratio (AFR) - A leaner mixture is more prone to pre-ignition, where a richer mixture has a much lower flame front velocity. I won't touch on it too much here (since this is dedicated to ignition) but a richer mixture needs more advanced ignition, which sounds great! We all think more ignition = more powa, right? Not always. As I will touch on in the fueling area, the N55 really likes to be as lean as possible with as much ignition as possible (at that AFR) to make the most power. Remember how flame front velocity and AFR are related? If we can burn the fuel faster without pre-ignition, we make more power. There are some minor deviations from this thinking (like very long high loading, where the heat in the valvetrain and spark plug can contribute to pre-ignition when not rich enough) but this concept is a great starting point.

Engine Load - When under a higher load, more air and fuel will be mixed together. The more air and fuel mixed together, the higher the cylinder pressure. With more to compress, on the compression stroke, there is more heat involved in the compression stroke. That added heat (this is adiabatic [very fast - not related to engine or coolant heat]) means that the mixture is, again, more prone to pre-ignition. As such, under higher loads, we must retard ignition.

VANOS - VANOS directly affects the "dynamic" compression ratio of the engine. To sum it up fast and dirty, the compression ratio of the engine does not change (the difference in max cylinder volume vs min cylinder volume) but the amount of time that the cylinder is FULLY CLOSED AND COMPRESSING does change. We do this with overlap (where the intake and exhaust valve are both partially open, with the exhaust closing and intake opening) or relative retard of the intake cam (meaning the piston is on the way up and the intake valve is still open) - This seems counter intuitive until you realize that air is a fluid and carries inertia; the air will still continue to fill the cylinder (to a certain extent) while the piston is beyond bottom dead center, especially on a turbocharged application. BUT to sum it up super quickly, the more overlap, the less compression, which means the more ignition advance you may be able to run. The less overlap, the higher the compression. As such, I don't want to hear any more of this shit about how VANOS doesn't impact knock or whatever. GTFO. I'll cover overlap and "blow through" more in the fueling section of this thread.

If it hasn't already become clear in covering the above topics, more boost also influences how much timing you can run. More boost = more heat.

Additionally, coming from a port injection world, you may see that ignition timing SEEMS much less aggressive (more retarded) when in fact, that's pretty much a DI engine in a nutshell for you. Better mixture, more precise injection timing, and the higher compression that most Turbo Direct Inject motors are blessed with means that we just can't accept as much timing.

Lastly, engine speed has a LOT to do with timing. With shit moving faster, we need to ignite sooner. If we assume flame front velocity is constant (protip - it's not) and we only increase engine (piston) speed, then we need to understand that where we may have had to wait X time for the mixture to fully ignite, we don't get that much time at higher engine speed. As such, we must advance the timing to get our mixture to produce energy INTO the piston on the power stroke at the right time.

Hopefully all of this makes sense. I feel like I took a lot of time to explain that, but the BMW stock ignition maps are pretty good! Most of us will not be radically changing them unless it's for E85, Methanol (which both cools the intake charge AND increases resistance to pre-ignition) or radically changing VANOS tables.

I have changed my VANOS tables pretty radically and as such, must run much less timing in places that I've decreased overlap. I also can get away with advancing timing in places with greater overlap and/or lower load.

DOUBLE LASTLY, injection timing can have a good bit to do with ignition timing as well. There's a point of diminishing returns, but under low load we can inject later and also run more advanced ignition. This means better fuel economy...

So generally speaking
More advanced timing = more power (up to MBT, the point in which more timing does NOT increase power output)
Less advanced timing = less power, also less "knock" BUT can result in an increased EGT (since some of that energy might not be used for power stroke, the energy is output in heat out the exhaust valve).

I'll add more later as well as some tables, but you may also refer to the N55 calculator in post #1 for some clarification.

Last edited by anjuna; 02-21-2020 at 12:43 PM..
Appreciate 0
      02-11-2020, 11:27 AM   #9
anjuna
First Lieutenant
United_States
316
Rep
399
Posts

Drives: f25
Join Date: Feb 2017
Location: houston

iTrader: (0)

FUELING

First, this area will primarily deal with fueling (including alternative fuels), pressures, injector correction (ms), AFR targets, and fueling correction for EGT.

To begin, you need to choose what type of fuel you will be using.
We will begin by taking a look at the table called "Fuel Scaling" (Kennfeld Vorsteuerungkorrektur Bank 1 KF_FRKKORRF_1)
The conversion factor for this table will be as follows
COLUMNS - X/100
ROWS - X
VALUE - ((X/(65536/2))*100)-100

Using this value correction will allow you to simply enter in the +% change in fueling. Due to the data type, I use bounds of 0% to 30% correction factor. This also helps with visualizing the data in the tables, as the colors you choose to use in TunerPro will help you see gradation and change.

For fueling on pump gas, you may expect a 0-10% addition of fuel over baseline. I personally use 0% but some areas have a higher ethanol content for pump gas. Watch your long term fuel trims here along with short term fuel trims. You can't use singular cherry picked values here, as I generally run the fuel scalar pretty flat. There are other things that play into STFT and LTFT which are not really centered around this table (they may end up in injector correction, fuel pump capacity, etc.)

For fueling on STRAIGHT E85, you will expect to push this table much further toward +30% correction, as E85 requires that much more fueling to hit stoich. I highly advise against running straight E85 unless you have a low pressure fuel pump AND you are using some sort of fueling lubricant. HPFPs in general dislike running high ethanol content, as the petrol that previously served to lubricate the components inside are now supplied with ethanol, which provides much lower lubrication.

Fueling on mixes SUCK unless you have an ethanol content sensor and decide to retune this table every single time you fill up (pain in the dick). I have yet to find an option where there is an opportunity to integrate an ECA into the stock DME (and the associated logic) but I am optimistic. Some other platforms have used the secondary o2 input for an OCA input, but we will see what the future holds. As such, you'll have to come up with a general curve for your ethanol content vs fuel scalar. I highly suggest that the community comes together here to help develop a curve for ethanol content vs fuel scalar. It will generally be non-linear. I would help out here, but I do not have an upgraded LPFP to support the fueling requirement for E85.

Fueling on other mixes (race gas) are beyond my scope. Others can chime up here and we can go from there.

This leads into our next table
Fuel Scalar max (FRKMAX_UM)
There's not much to define here for columns/rows since this is a singular value defined by the public XDFs
VALUE - ((X/128)*100)-100

This is simply the maximum for the fuel scalar that is in the previous table.

The next few tables function to help us define the DME's targets and limits for various situations.
For instance - Lambda target minimum (K_ES_LA_MIN)
Again, nothing much to define for columns and rows since this is a singular value. This is an actual AFR value.
VALUE - (X*(16/65536))*14.7

This is simply the minimum for the AFR to target by the DME - This will come into play in the next table.

Fuel (Bank 1) (Basislambda im Homgenen Bank 1 KF_LABAS_1) and Fuel (Bank 2) (Basislambda im Homgenen Bank 1 KF_LABAS_2)
These tables are the AFR targets that the DME will try to target (regardless of open vs closed loopf fueling). This table is load vs RPM defined, since most of the tables are all load based.
COLUMNS - X
ROWS - X/100
VALUES - X/4096*14.7

This table is pretty straight forward in terms of use and I love the fact that the RPM is reasonably spaced and the load values generally have a delta of ~10-20 from eachother. For higher load / performance maps, I always extend this table out to a load of 200. I always tend to run the table a bit rich, but I have seen others run high load at 12.5 AFR. YMMV - Rich is safer, but when pushing the fueling system, you'll probably have a little leaner (higher value) targets. Additionally, this table can be driven to support burbles/etc... To be covered later.
14.7 AFR is stoich (lambda 1) and lower values are richer. There's no reason to run any leaner than 14.7 (see spool table below for more details). If you do, you'll be really refining your fueling for overrun and spool (blow through) to push the limits of the vehicle even further. I lack enough experience to advise when a lean burn would be beneficical (don't do it under cruise to "save fuel" as we will cover that as well).
I've attached a table that I've used with pretty good success.


Fuel (spool) (Überspüllambda im Homgenen Bank 1 KF_UESP_LA)

This table shows the AFR targets for the DME in spool mode. From factory, there are some lean spool areas, but with all the changes on VANOS, boost control, and the lack of knowledge to fully dial lean spool in, I move this to a mirror of my Fuel Bank 1/2, though it's a smaller table.
COLUMNS - X
ROWS - X/100
VALUES - X/4096*14.7

Again, identical purpose of Fuel Bank 1/2, but they are only used in spool. This will grow in understanding with time. No need to attach a copy, as it's based on Fuel Bank 1/2

Basic lambda homogen by super knock (KF_LA_SK)
This is the fueling used by the DME during superknock conditions. It's much richer in a lot of areas.. This promotes cooling and attempts to reduce knock by enrichment. I made no changes.
COLUMNS - X
ROWS - X/100
VALUES - X/4096*14.7

Rail pressure homogen (KF_PRAIL_H)
LIFE PROTIP - I use some sort of fueling lubricant to help extend the life of my HPFP and injectors. You can do this too. I know it sounds like snake oil, but mixing up something like Lucas Fuel Injector Lubricant 1oz:1gal is a great idea.
This is generally your fuel pressure table. Since I use MHD in standard units, I've moved the conversion factor over to psi. Additionally, there are limitations around what the stock HPFP is capable of outputting - my max is 2756psi. If you're running E85, I've seen some tunes CRANK this table up but again, most of my wisdom comes from Pump gas.
COLUMNS - X
ROWS - X*0.04882813
VALUE - ((X/((65536/100)/4))*14.504)

There are a few things you can do here for driveability, but with a tradeoff. The lower the pressure, the less general wear on the HPFP; the higher the pressure, the better the atomization and (generally) capable of improved fuel economy. PROTIP - Increasing pressure means the injector stays open for a shorter amount of time to move the same fuel mass. This means that Injector timing is skewed by this table if fuel scalars are constant. This can be mitigated by VANOS/Injection timing adjustments.
Attached below is a copy of my own table. Notice the consistency between RPM breakpoints and load breakpoints. Also notice that the table doesn't extend too terribly far up into the load range. This has a lot to do with the fact that this is hardware control and less about refinement in timing, fuel mass, etc.


Fuel Start (KF_ST_RKBAS_VVT) + Fuel Start Comfort (KF_ST_RKBAS_COMF_VVT)
This table is used to help determine how much fuel should be open-loop injected when starting the vehicle. There's not much feedback to be provided to the engine over the time frame that the engine is to start in, so this table is necessary. The column values go from negative to positive as the table is a proportional table to try help stabilize fueling at idle. You will need to increase this table if running E85/mix. These are fairly arbitrary values, but adjusting them by percentages improves start performance. This is a signed value, which means that we can input negative values as well.
COLUMNS - X/100
ROWS - X
VALUE - X/20.48


Last but not least, we have EGT For Switch to Component Protection (Abgastemperaturschwelle fuer Umschaltung aktive Umschaltung
KL_TVKLK)
and again, I convert this over to °F. Default values are 1000°C (1850°F) and there is NO NEED to increase these at ALL. This has a LOT to do with the metallurgy in the exhaust gas flow. I've seen people increase this by 50% and I think it's shameful that they are putting their customers at risk of true damage. That said, when this function activates, there is a ton of fuel dumped and ignition is retarded, which (in my experience) only drives the EGTs up further under load.
COLUMNS - X
ROWS - N/A
VALUE - ((X*0.1)*(9/5))+32

One that we will expand on in the future is the Fuel Correction Factor - This is currently not defined by public XDFs, but will be released in my XDFs.
It is a ms of injector vs RPM table that accounts for the non-linear functions of the injector to improve AFR due to injector latency. It's a function of the percentage expected vs percentage output and allows for general correction.
COLUMNS - X/4
ROWS - X/1000
VALUE - (((X/65536)*2)*100)-100

That's all for now!

Last edited by anjuna; 02-13-2020 at 10:22 AM..
Appreciate 1
Supermoon166.00
      02-11-2020, 11:28 AM   #10
anjuna
First Lieutenant
United_States
316
Rep
399
Posts

Drives: f25
Join Date: Feb 2017
Location: houston

iTrader: (0)

MISC.

Spot reserved for N20 TMAP conversion, disabling codes, engine cooling, and other misc documentation and explanation

N20 TMAP CONVERSION
For those of you who are not familiar with this concept, the N55 and N54 engine have TMAPs that only support "2.5" bar absolute. Since the N55 engine runs with VALVETRONIC enabled, there is very little vacuum, meaning this is effectively a 1.5bar sensor (21.75psi). If you want to read pressure greater than this, you must install the N20 TMAP. On N55 there is no re-pin required and the TMAP bolts and plugs right up with no changes. Further, the N20 TMAP is a 3.5bar, meaning that you get 2.5bar of positive pressure, allowing you to read up to 36.25psi. Is it overkill? maybe. It does allow us to read further than the 21psi, so if we are running ~20psi, we can get a nice safety net of area we can read, proper boost control, and work in additional safeties without worrying if the DME will just flatline the boost reading and never engage.

Now MHD does offer the ability to simply check a flash option for N20 TMAP, but let's go the extra mile and bake it into our tune. I am not sure all what else MHD does with the N20 TMAP option, so I like to know what I'm dealing with

On all most public XDFs, we have a section called "Sensor Calibrations" and two particular tables of concern.
PRESSURE SENSOR BEFORE THROTTLE OFFSET
This table simply defines our offset value. If we took the easiest linear line formula, Y=mx+b, this would be the "b" variable.
The publicly available XDF has a note - "set to 14.2 for N20 sensor" but I found that this was incorrect. It might have been my TMAP, I'm not sure... but I ALWAYS got readings about a psi greater than anywhere else (even when the engine was off, I was showing 1psi - not right).
As such, I will say that this value has worked out at 12.8203 for me.

PRESSURE SENSOR BEFORE THROTTLE GRADIENT
This would be the "m" variable in y=mx+b - we are scaling what the voltage multiplies by to give us our final value.
Public XDF is good enough for the girls I go out with. 72.3 works great.

Last edited by anjuna; 02-13-2020 at 09:53 AM..
Appreciate 0
      02-11-2020, 11:29 AM   #11
anjuna
First Lieutenant
United_States
316
Rep
399
Posts

Drives: f25
Join Date: Feb 2017
Location: houston

iTrader: (0)

ZF8HP70

Spot reserved for ZF8HP70 documentation and explanation
Appreciate 0
      02-11-2020, 11:34 AM   #12
anjuna
First Lieutenant
United_States
316
Rep
399
Posts

Drives: f25
Join Date: Feb 2017
Location: houston

iTrader: (0)

FUTURE

Spot reserved for future expansion
Appreciate 0
      02-11-2020, 01:17 PM   #13
nicked8
Private First Class
United_States
104
Rep
144
Posts

Drives: 2013 E92 335i M-Sport xDrive
Join Date: Aug 2019
Location: CT/NY

iTrader: (0)

Thank you for putting this thread together and for all your great work. I've been following your insights in various threads for quite some time now - it's great to see that we'll have one place to go now for information / collaboration. I look forward to seeing this develop!
Appreciate 0
      02-12-2020, 08:22 PM   #14
kanovic
Lieutenant
457
Rep
518
Posts

Drives: 06 evo
Join Date: Sep 2013
Location: Rossville Ga

iTrader: (0)

This hurts my head as I wish I understood it better but love the detail and everything you are doing sir!

Last edited by kanovic; 02-13-2020 at 05:00 PM..
Appreciate 0
      02-13-2020, 09:03 AM   #15
Pladi
Lieutenant Colonel
Pladi's Avatar
Canada
722
Rep
1,753
Posts

Drives: 2011 335i xdrive
Join Date: Nov 2017
Location: Waterloo, ON Canada

iTrader: (0)

Excellent work ! I have to one day find the time to go through all you have posted. People like you are true assets to the community. I discourge anyone to post their issues here and this turn into a troubleshooting thread.
Appreciate 0
      02-13-2020, 09:27 AM   #16
drwillb
BMW Fan
drwillb's Avatar
United_States
295
Rep
849
Posts

Drives: e30 M3, e30 M3, e46 M3
Join Date: Aug 2008
Location: northern NJ

iTrader: (4)

All I can say is WOW!!!

There is nothing I can contribute to this dissertation but I will be reading every update ( with about 10% comprehension).
Appreciate 0
      02-13-2020, 10:20 AM   #17
TheMidnightNarwhal
Major General
TheMidnightNarwhal's Avatar
Canada
2814
Rep
6,384
Posts

Drives: 11' 335is DCT
Join Date: Jun 2015
Location: Gatineau, Quebec

iTrader: (0)

Nice I always wondered how tunes were done.
Appreciate 0
      02-13-2020, 10:31 AM   #18
anjuna
First Lieutenant
United_States
316
Rep
399
Posts

Drives: f25
Join Date: Feb 2017
Location: houston

iTrader: (0)

Quote:
Originally Posted by TheMidnightNarwhal View Post
Nice I always wondered how tunes were done.
Me too.....

Appreciate 2
      02-13-2020, 06:32 PM   #19
JPuehl
Lieutenant
JPuehl's Avatar
109
Rep
425
Posts

Drives: 2011 135i N55 DCT
Join Date: Mar 2015
Location: Greater Seattle area

iTrader: (0)

Quote:
Originally Posted by anjuna View Post
Last but not least, we have EGT For Switch to Component Protection (Abgastemperaturschwelle fuer Umschaltung aktive Umschaltung
KL_TVKLK)
and again, I convert this over to °F. Default values are 1000°C (1850°F) and there is NO NEED to increase these at ALL. This has a LOT to do with the metallurgy in the exhaust gas flow. I've seen people increase this by 50% and I think it's shameful that they are putting their customers at risk of true damage. That said, when this function activates, there is a ton of fuel dumped and ignition is retarded, which (in my experience) only drives the EGTs up further under load.
COLUMNS - X
ROWS - N/A
VALUE - ((X*0.1)*(9/5))+32
Thank's so much for doing this. I have a JB4 with the BEF and want to tune the AFR's and this read will help. I just want to point out that the JB4 BEF does exactly what you mentioned above; increases the EGT value by 50%, from 1000 to 1500. Unless anyone has a valid counter argument, I plan to reset this value to 1000 when I update my FUEL tables this weekend.

Looking forward to more content and reading others experience in tuning to help the community learn to tune for ourselves (or at least make adjustments where possible).
__________________
Jim
2011 135i DCT - FBO PS750 - 618 RWHP - 100-200 KPH 5.50


1Mpostr

Last edited by JPuehl; 02-14-2020 at 10:45 AM..
Appreciate 0
      02-13-2020, 11:35 PM   #20
JPuehl
Lieutenant
JPuehl's Avatar
109
Rep
425
Posts

Drives: 2011 135i N55 DCT
Join Date: Mar 2015
Location: Greater Seattle area

iTrader: (0)

Quote:
Originally Posted by anjuna View Post
EXHAUST FLAP, BURBLE, OVERRUN

This is a partial comment as I am running out of time for comments this evening. I will update this more as I have time with good tables, burble tuning, and overrun.

EXHAUST FLAP CONTROL - WORK IN PROGRESS, ADDITIONAL BEHAVIOR IS UNDER REVIEW
All these tables have the same columns types and row types
COLUMNS (rpm) - X*40
ROWS (Gear) - DO NOT USE DATA MEMORIES, use a ascii char and they are labeled as such - Reverse, Neutral, 1, 2, 3, 4, 5, 6, 7, 8 (For ZF8HP45)
VALUES (1 is CLOSED, 0 is OPEN) - (X/2.55)/100

AKRGRCC - Exhaust Flap Control (?Mode?)
AKRGRCCAT - Exhaust Flap Control (?Mode?)
AKRGRCCATM - Exhaust Flap Control (SPORT)
AKRGRCCM - Exhaust Flap Control (SPORT)
AKRGRCO - Exhaust Flap Control (?Mode?)
AKRGRCOAT - Exhaust Flap Control (?Mode?)
AKRGRCOATM - Exhaust Valve Control (SPORT)
AKRGRCOM - Exhaust Valve Control (SPORT)

Exhaust flap control word (CWAKR) - my HW rev uses a value of "18" to enable this type of control.

If you want to run your tune with the flap open during sport (this is the sport position on the transmission shifter) then flatten out the sport tables with 0 everywhere.
Has this table(s) been found for the E series N55? I have a 135i w/N55 and a hollow D.P. and rock the OEM muffler and it's too loud for my taste. It has the flap that opens 1 of the tips about 1 minute or so after the cold start calms down and seems like it's straight-through. I'd love to be able to leave it shut except when in sport or manual mode and the rpms are above like 4k. Then I can creep thru my neighborhood and parking lots without drawling attention and waking up neighbors.
__________________
Jim
2011 135i DCT - FBO PS750 - 618 RWHP - 100-200 KPH 5.50


1Mpostr
Appreciate 0
      02-14-2020, 06:08 AM   #21
anjuna
First Lieutenant
United_States
316
Rep
399
Posts

Drives: f25
Join Date: Feb 2017
Location: houston

iTrader: (0)

Quote:
Originally Posted by JPuehl View Post
Quote:
Originally Posted by anjuna View Post
EXHAUST FLAP, BURBLE, OVERRUN

This is a partial comment as I am running out of time for comments this evening. I will update this more as I have time with good tables, burble tuning, and overrun.

EXHAUST FLAP CONTROL - WORK IN PROGRESS, ADDITIONAL BEHAVIOR IS UNDER REVIEW
All these tables have the same columns types and row types
COLUMNS (rpm) - X*40
ROWS (Gear) - DO NOT USE DATA MEMORIES, use a ascii char and they are labeled as such - Reverse, Neutral, 1, 2, 3, 4, 5, 6, 7, 8 (For ZF8HP45)
VALUES (1 is CLOSED, 0 is OPEN) - (X/2.55)/100

AKRGRCC - Exhaust Flap Control (?Mode?)
AKRGRCCAT - Exhaust Flap Control (?Mode?)
AKRGRCCATM - Exhaust Flap Control (SPORT)
AKRGRCCM - Exhaust Flap Control (SPORT)
AKRGRCO - Exhaust Flap Control (?Mode?)
AKRGRCOAT - Exhaust Flap Control (?Mode?)
AKRGRCOATM - Exhaust Valve Control (SPORT)
AKRGRCOM - Exhaust Valve Control (SPORT)

Exhaust flap control word (CWAKR) - my HW rev uses a value of "18" to enable this type of control.

If you want to run your tune with the flap open during sport (this is the sport position on the transmission shifter) then flatten out the sport tables with 0 everywhere.
Has this table(s) been found for the E series N55? I have a 135i w/N55 and a hollow D.P. and rock the OEM muffler and it's too loud for my taste. It has the flap that opens 1 of the tips about 1 minute or so after the cold start calms down and seems like it's straight-through. I'd love to be able to leave it shut except when in sport or manual mode and the rpms are above like 4k. Then I can creep thru my neighborhood and parking lots without drawling attention and waking up neighbors.
Yes. Later this morning or maybe this afternoon I will post up the XDFs that I have and am trying to keep up to date.

The public XDFs out there do have these tables defined.

I'll add the section to cover "exhaust flap open on start duration" as well.

EDIT - I spoke out of line. For 9e and 98, the exhaust portions have yet to be defined. I will work to define these over the weekend. Scanning the BIN with WinOLS is USUALLY pretty straight forward once you know what to look for. I'll put the XDFs up then, because at this moment, the 9e and 98 XDFs I work off of are the same as the public, but scaling is adjusted per the posts above.

Last edited by anjuna; 02-14-2020 at 09:36 AM..
Appreciate 1
JPuehl109.00
      02-14-2020, 08:29 AM   #22
MatthewLC
Private
23
Rep
53
Posts

Drives: 2011 BMW 535i
Join Date: Mar 2018
Location: Toronto, Ontario

iTrader: (0)

Quote:
Originally Posted by anjuna View Post
Quote:
Originally Posted by JPuehl View Post
Quote:
Originally Posted by anjuna View Post
EXHAUST FLAP, BURBLE, OVERRUN

This is a partial comment as I am running out of time for comments this evening. I will update this more as I have time with good tables, burble tuning, and overrun.

EXHAUST FLAP CONTROL - [COLOR="Red"]WORK IN PROGRESS, ADDITIONAL BEHAVIOR IS UNDER REVIEW[/COLOR]
All these tables have the same columns types and row types
COLUMNS (rpm) - X*40
ROWS (Gear) - DO NOT USE DATA MEMORIES, use a ascii char and they are labeled as such - Reverse, Neutral, 1, 2, 3, 4, 5, 6, 7, 8 (For ZF8HP45)
VALUES (1 is CLOSED, 0 is OPEN) - (X/2.55)/100

AKRGRCC - Exhaust Flap Control (?Mode?)
AKRGRCCAT - Exhaust Flap Control (?Mode?)
AKRGRCCATM - Exhaust Flap Control (SPORT)
AKRGRCCM - Exhaust Flap Control (SPORT)
AKRGRCO - Exhaust Flap Control (?Mode?)
AKRGRCOAT - Exhaust Flap Control (?Mode?)
AKRGRCOATM - Exhaust Valve Control (SPORT)
AKRGRCOM - Exhaust Valve Control (SPORT)

Exhaust flap control word (CWAKR) - my HW rev uses a value of "18" to enable this type of control.

If you want to run your tune with the flap open during sport (this is the sport position on the transmission shifter) then flatten out the sport tables with 0 everywhere.
Has this table(s) been found for the E series N55? I have a 135i w/N55 and a hollow D.P. and rock the OEM muffler and it's too loud for my taste. It has the flap that opens 1 of the tips about 1 minute or so after the cold start calms down and seems like it's straight-through. I'd love to be able to leave it shut except when in sport or manual mode and the rpms are above like 4k. Then I can creep thru my neighborhood and parking lots without drawling attention and waking up neighbors.
Yes. Later this morning or maybe this afternoon I will post up the XDFs that I have and am trying to keep up to date.

The public XDFs out there do have these tables defined.

I'll add the section to cover "exhaust flap open on start duration" as well.
This is awesome! I've been slowly working on my own tune as well but I'm not at a point where am savy enough to be able to define tables in the XDF or know much more than what's in the Cobb tuning guide.

I'm using Bootmod3 to tune my car (F series N55) and it seems as though almost all (if not a lot) of tables are defined. At least when I've compared it to the public XDF's that are available.

If you want to share a bin file, I can upload it and see what additional tables are available and pass along some screen shots? I'm not sure how beneficial that would be as it wouldn't tell you where the tables located but you can potentially see the values and compare? That might help in defining them?

Just trying to help anyway I can, as I would love to see more development in end user mapping!
Appreciate 0
Reply

Bookmarks


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off



All times are GMT -5. The time now is 03:36 AM.




e90post
Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.
1Addicts.com, BIMMERPOST.com, E90Post.com, F30Post.com, M3Post.com, ZPost.com, 5Post.com, 6Post.com, 7Post.com, XBimmers.com logo and trademark are properties of BIMMERPOST