!! work in progress, please provide feedback or point out errors !!
** right now this is a mirror for http://fbodytech.com/tuning.html (check there for up to date info and better formatting and pics, until we html this one...) **
The EE Mask
The EE bin mask is a program designed to control a very specific subset of engines, used only in the 1994-1995 f-body, y-body, and b-body GM vehicles.
Despite being only used in production for 2 years, and now being over 20 year old technology, a healthy enthusiast community still thrives on the EE platform. I use the word "healthy" referring to the size and strength of the community, not the actual mental health of it, which is about as healthy as a chinese made lawnmower engine with rod knock. Lets face it, LT1 fans are bananas.
To cling to such a platform when so many obviously superior engine controllers have emerged may seem insane, but sometimes the straightjacket of an antique engine controller is a comfortable one. Personally I enjoy a challenge and i root for the underdog, so I have decided to do as much as I can to understand this platform.
The largest limitation of the EE platform is the lack of research that has gone into it; the number of parameters that have been discovered is dwarfed by other more popular masks. Most of the reason behind this limitation is the fact that the LS1 came out just as the LT1 started to gain traction in the tuning community, leaving very little incentive for the more experienced hackers to continue work on it.
We're getting there, though....
Scope of this document
This document will focus on some of the poorly understood areas of tuning specfic to the 1994-1995 series of LT1 engines, henceforth referred to as EE (which is the mask for the software for this engine controller).
If you are the kind of person that "just wants it to work" without trying to understand why, this may not be the right tuning document for you.
As this document focuses on some of the more "black art" areas of this platform, I will assume a basic knowledge of tuning vehicles, however I believe being thrown into the fire may be the only reasonable way to learn about tuning.
Still, if this is your first time tuning, try some basics first. Scale an injector constant. Disable an error code. I'm not going to teach you that stuff here.
I am an experimental ameture just trying to learn as much as possible. Some information here is based on what I believe to be a logical conclusion, and may be inaccurate. If I tell you to do something and it wastes your time or blows your car up, it's your own damn fault for trusting the internets. But please, do give me feedback if you find something isn't working for you, I'd be happy to help.
The LT1 ecm is a very capable machine, in some ways...
A dual motherboard configuration, each with independant processors and memory
Flash memory capability, allowing programming without swapping chips
Two independant fuel metering methods (speed density and maf)
An optical cam timing reference (optispark) that allows very accurate ignition timing control
An advanced sequential injection system
A very capable closed loop control and learning system
Swappable knock signal filtering modules
However, it does have some incredible limitations:
Due to the way that RPM is stored internally, operation above 7000 RPM is impossible
The tables run out of MAP at atmospheric pressure, meaning this ECM requires some serious hacking to run boost
Some parameters simply don't exist, or have not been discovered
There are three main suites of software for editing and flashing EE ecms.
LT1Edit was written by one of the first researchers into the EE platform. This is a dedicated editor written for one platform only, and is not extensible.
It provides a built-in flash utility. It has the LEAST amount of parameters available of any EE tuning solution, due to being fairly out of date and being geared towards the beginner. It currently costs $200 and is locked to a single ECM.
Although I can't reccommend purchasing this software package, we must respect his work in being the first one to make this platform tuneable.
Tunercat is a package designed to edit bins for a wide variety of platforms, including the LT1. It is extensible and capable.
The maintainer of tunercat is a very capable bin hacker, and has discovered many of the parameters now known to the LT1 tuning community.
His software is affordable, not restricted to a single ECM, and has a built-in flash utility.
Tunerpro is a software package designed for the DIY bin hacker. It does one thing, edits bin files, and it does it very well.
It is free, and requires a definition file to work.
I have worked very hard to make a definition file that works well with tunerpro, and here it is. It is heavily documented with comments, and all of the parameters are categorized.
You can grab the latest version here
Loading tunerpro with this XDF and switching to 'Category' view provides an excellent tuning environment that should make any LT1 enthusiast happy:
the parameter tree of eex
It DOES NOT flash ecms, and requires software such as winflash (available from the tunercat website) to become a complete lt1 tuning solution.
Due to the fact that I both use tunerpro and maintain the best EE definition file for it, this document will assume you are using tunerpro with my EEX definition file.
Using tunercat, some parameters that I discuss may not be available, or will be named differently.
I reccommend purchasing winflash from the tunercat website to flash your ECM.
OBD-I Swap for Later Models
To make tuning later model (OBD-II, 1996-1997) LT1 engines cheaper and easier, it is trivial to convert them to OBD-I EE ecms so the techniques listed here will work.
Tuning software for 1996-1997 engines is fairly expensive, and due to the lack of research into them, is missing many critical parameters.
You will require only an ECM from a 1994-1995 LT1 (the model of car is not important), and the appropriate knock SENSOR for that car (which screws directly into the block).
The pinouts are identical, and no changes to wiring need to be made.
After swapping for an OBD-I ECM, the following unnecessary electrical parts will be non-functional, and can be safely removed:
The vacuum sensor for the CCP near the passenger fuel rail
The crankshaft position sensor
The rear oxygen sensors
Some datastream information to peripheral devices such as the body control module may no longer work, however I have done this swap many times without issue.
A 1995 bin appropriate for your car should be flashed onto the pcm after the swap due to an incompatible lockup in 1994 bins.
Fuel Metering Modes
A detailed understanding of the different fueling modes and how they are calculated is necessary to tune them effectively. If you do not understand all of the fueling calculations, tuning EE is very error prone.
Speed density operation takes effect when the MAF sensor is disconnected or faulty. It can also be used as a primary metering method, which has several advantages, including improved throttle response and simpler intake plumbing.
During speed density operation, the MAP pressure of the incoming air (density), and engine RPM (speed) are referenced against the VE (Volumetric Efficiency) table to estimate airflow.
This system is incredibly accurate, assuming the VE table is an accurate representation of the efficiency of the engine. If the engine is modified, the VE table must also be modified for speed density mode to function correctly.
In MAF (mass air flow) mode, a sensor in the intake tract using a series of heated wires attempts to directly measure airflow.
The sensor emits a signal which is compared to a table containing calibrations for the sensor to determine airflow grams per second (AFGS).
Although the calibration is not as sensitive to changes in engine design as speed density's VE table, it is still slightly sensitive to changes to the intake tract design, as well as the regularity of the incoming air, which can be affected by camshafts with higher than normal overlap, causing a back-and-forth motion of air across the sensor wires.
Influence of VE in MAF mode
In MAF mode, the VE table has only the smallest of effect. It is apparently used for some undocumented transitional fuel calculations.
Although previously rumored to have no bearing on MAF mode operation, it can be proven to have some influence by intentionally skewing the VE table while running in MAF mode and observing a total loss of driveability.
As I continue research into this area, I reccommend tuning the VE table using speed density mode to achieve a perfect tune with good transitional throttle response.
Open Loop Operation
This simple control mode takes effect when the car is too cold for the oxygen sensors to work, if they are providing an unreliable signal, or if the engine is operating in a range where the oxygen sensors cannot be trusted.
An open loop control system makes calculations and actuates the controls without having any knowldge of how accurate its calculations will be.
In open loop control mode, EE will use the selected MAF or Speed Density mode for the airflow calculation. It will then calculate the amount of fuel requierd by using the Open Loop AFR Target table, as well as the individual cylinder trims.
Closed Loop Operation
In closed loop operation, feedback from the narrow band oxygen sensors is used in an attempt to adjust the air/fuel ratio to 14.7:1, which theoretically provides optimal fuel economy and emissions.
Various conditions must be met before closed loop takes effect, including a time after startup, o2 readyness calculations, and coolant temperature.
Closed loop operation with narrowband sensors limits target air fuel ratios, as they can only provide accurate calculations in a very narrow band around 14.7:1, although some adjustment is possible through alterations in the intended voltage target.
After intial airflow calculation is made using the chosen MAF or Speed Density mode, fuel is calculated at a best-guess to hit a 14.7:1 ratio, then 'trimmed' using a variety of methods.
EE uses a three part system to make these adjustments as reliable and as fast as possible:
CORRCL - The hidden CL modifier
CORRCL mode works almost independantly of the rest of the closed loop system. It attempts to make small instanenous corrections to the AFR, a 'fast fine adjustment'.
A 'voltage error' as the o2 sensor swings back and forth is filtered, scaled, and turned into a small adjustment, which attempts to make the AFR climb and rise a very small amount near the o2 swing voltage.
For example, an o2 voltage of 300mv indicates a slightly lean air/fuel ratio, so CORRCL might increase fuel ever so slightly. If tuned well, this increase may land around 550mv, at which point the mixture is leaned out even more slightly, landing around 450mv, and so forth, until it gets closer and closer to 500mv.
Although maintaining constant 500mv is nearly impossible, the idea is to make the adjustments smaller and smaller until it makes a very small wave of adjustments near the target.
The effect of CORRCL is not directly visible in logs, and it would be useless if it did, since the corrections are made much too quickly for a datastream to record. It can be determined indirectly through the behavior of the integrator if the changes are positive, which becomes more stable when CORRCL is tuned properly.
INT - The Integrator
The integrator (or short term fuel trim) stores two variables in memory, with 256 possible values each, representing adjustments to the air fuel ratio. The median value of 128 is considered optimal. Values lower than 128 represent fuel being removed (a correction for a rich mixture), and values above represent fuel being added (a correction for a lean mixture).
The adjustments of the integrator are fairly coarse when compared to CORRCL. It attempts to correct larger errors in overall fueling by remembering the last fuel correction and attempting to improve on it.
After a correction is made, the integrator pauses itself for a short time. The length of this time corresponds to how long the new fuel mixture will take to reach the oxygen sensor. This varies depending on engine airflow, as at higher airflows, the changes will propogate much more quickly. This is referred to as the INT Delay.
BLM - Block Learn Mode
As it takes some amount of time for the integrator to make the coarse corrections necessary, it would be a waste to discard those corrections, but it would also be a terrible idea to continue to use them every time the engine operation conditions change.
The operating ranges of the engine are divided up into a group of 19 cells (numbered 0-18), each having a particular range of manifold pressure and RPM, so they can represent a range of engine operating. Each cell contains a single number, similar to the integrator - 128 being perfect, lower subtracting fuel, and higher adding fuel.
As the integrator makes changes, these changes are averaged into the BLM cells. When the boundary into another cell is crossed, the integrator is reset using the stored value in that BLM cell, so it can continue to adjust where it left off.
When the car is powered off, BLM values higher than 128 are remembered, but values lower are discarded (this behavior can be modified.). This allows lean conditions to remain corrected between restarts, avoiding lean engine damage.
The LT1 has three "Special" BLM cells, 16-18. 16 is used purely for stopped idling, 17 for decel, 18 for various other conditions, including some states of EGR operation.
PE (Power Enrichment)
As discussed above, the normal operating range of closed loop tends to be around 14.7:1 air fuel ratio. This provides fairly optimal emissions and power, and corrects for engine wear and a diverse range of operating conditions using oxygen sensor feedback during normal driving conditions.
When maximum acceleration is desired, a 14.7:1 air fuel ratio is no longer optimal, emissions are no longer a concern, and the oxygen sensors can no longer be trusted to provide accurate feedback in that operating range.
PE mode uses a set of tables that add a percentage of fuel to 14.7:1 to achieve a richer mixture.
Power enrichment, as it does not use the oxygen sensors, does not operate in closed loop. However, this mode is special on the LT1, as it does use the block learn mode memory for its base fueling calculation.
PE calculations begin by trusting 14.7:1 to be whatever the BLM value in the cell you just happen to be in, but only if the value is higher than 128 (the engine was running lean). This is a safety mechanism, as a lean condition during PE may be dangerous.
There is a patch to work around this called a BLM locker, which locks the BLM to 128 whenever PE is entered, ensuring your calculations are fully "open loop".
Scaling VE and MAF tables with BLMs
Tuning VE tables using the stock narrowband sensors can be problematic, due to the narrow operating range of them. As the sensor reads one of three realistic states, rich lean or close enough, trying to determine how far off the mixture is can be fairly impossible.
Fortunately, due to the fact that the closed loop system is constantly fighting to maintain a 14.7:1 AFR, and records the changes necessary to do so in the BLM table, an approximation of the adjustment required can be made using an average of the values in those tables over a period of time.
A fueling change as a multiplier can be estimated as: 1 - ( BLM / 128)
Changes to the VE table must be made smoothly and gradually, with only small increases or decreases to adjacent cells.
To calibrate a MAF table effectively with a blm cell, the entire range of maf operation contained in that cell must be determined through logging. This measurement will change as soon as the MAF table is modified, and must be changed again.
Adjustments should then be made while maintaining a smooth curve across the entire maf table, logging again to analyze the results.
As maf tables can be very sensitive, I do not reccommend modifying them if you are between 118 to 135 BLM values, unless one area of operating is substantially leaner or richer than others. Remember, it's ok to start out slightly rich with fueling calibration.
Idle Fuel Trims
This allows you to take advantage of the sequential nature of the LT1 by adding or subtracting fuel from individual cylinders. The stock calibration tends to be grossly incorrect on an aged engine, or one which is heavily modified.
Tuning is simple, zero the table, and measure each cyl's head temp with an infared temperature gun or reliable heat probe. Add a small amount of fuel to cylinders which read at a higher temperature, as they tend to be leaner than the others.
It will likely take several tries to get this right, and you will never get it perfect, but getting it closer will help.
individual fuel trims
The LT1 likes a lot of timing at idle.
Experiment starting at 25 degrees of idle timing, and check MAP. Increase timing until you stop making more vacuum, then back off two degrees or so for safety.
After raising timing, decreasing values in the spark advance vs coolant temp table may also be necessary to avoid pushing it through the roof when the car is cold.
Idle speed based timing corrections
EE has a mechanism that makes fine timing adjustments in an attempt to stabilize idle rm errors, due to the fact that timing can make minor engine speed adjustments more quickly than the idle control valve.
On a car with a lighter rotating mass (such as an aluminum flywheel), or with quite a bit of natural idle surge from a cam, the stock corrections may be too extreme.
Typically anywhere from 50-150RPM of surge is normal for a larger cam or a light rotating mass, and trying to fight it can end up causing larger speed fluctuations and instability.
Try lowering them substantially to try to let the car idle more naturally. This is also reccommend if the base timing (above) was increased dramatically, as the stock settings may enter dangerous timing territory during a large RPM error.
For example, if a tune at 32 degrees @ 700 RPM idle drops to 500rpm, with the stock settings it would have 37 degrees of final timing, possibly with even more from the coolant temp adder table!
The following settings work well with an aluminum flywheel and a mild cam.
idle timing err
Idle BLM splits, and the idle passages
If you have tried all of the tricks in the headers and cam sections, as well as the individual fuel trims mentioned earlier in this section, and you find your BLMs are still split, you might have to give up and run open loop idle.
But first, one major cause of BLM splits at low RPM is insufficent feed through the idle ports in the intake manifold. Due to the length of the plenum, idle air is supposed to be drawn through a series of ports on the bottom of the manifold instead of through the plates to ensure even low RPM feed.
Ensure your IAC counts are fairly high (35+), by closing the throttle plates. If further adjustment isn't possible, enlarging the bypass hole in the throttle body may be necessary. Some aftermarket throttle bodies don't even have an idle hole, contributing to the problem.
Open Loop Idle
For substantially larger cams, dealing with corrupt o2 readings which tend to force a very lean idle may be impossible or undesireable. Not to mention, big cams really like to idle rich, and closed loop simply will not do it.
The LT1 doesn't have open loop idle settings, however you can cheat using the PE tables.
Ensure PE activation around your idle speed happens at 0% TPS, and then use your low RPM PE table to affect idle fuel mixture. Remember there are two PE tables, rpm and temperature, make sure they both correspond to your desired settings.
idling in pe mode
Somewhere between 8-10% added fuel seems to be an appropriate starting point for most cams, but that depends how accurate your VE or MAF table is in the first place.
Tuning for Headers
When installing headers on an LT1, due to increased distance of the o2 sensor a change in exhaust pressure near the o2 sensor, as well as a slight increase in resistance due to o2 extensions, and an operating temperature difference, increasing the o2 swing voltage about 50-75mv is reccommended as partial compensation for what usually becomes a slight lean condition.
Experimentation and reading spark plugs may also assist in getting a true 14.7:1 AFR once longtube headers are installed.
o2 swing altered for headers
Changing the distance of the oxygen sensor in relation to the exhaust valve will change the time that exhaust gasses (and obviously the fuel corrections being measured by the oxygen sensor) will take to become measurable.
As the stock calibration expects the change to be measurable fairly quickly, the integrator becomes particularly unstable and innacurate if the delay is not increased. The effect is more dramatic at lower airflows.
Making the integrator delay too large may result in a delay in fuel corrections, but increases stability dramatically. For longtube headers, doubling or even tripling the integrator delay is reccommended.
int delay altered for longtubes
Tuning for Cam Swaps
Also see "Stabilizing Idle"
The stock timing table has a substantial amount of low rpm timing in driving range. Cams which are less efficient in this range require a substantial reduction in timing to avoid cam surge.
It is reccommended that timing be completely reconstructed so it increases gradually to the new torque peak of the cam. This is one situation where just increasing timing until you encounter knock would be a BAD idea.
This should be done at least to a certain extent before any other tuning is attempted, as cam surge can cause map fluctuations, affecting fueling, and also cause MAF inaccuracies.
The map below was necessary to eliminate cam surge in a fairly small cam, larger cams may require more dramatic adjustments.
reduced timing in low end for cam
CORRCL must be tuned down substantially with high lift and overlap cams, due to corrupted o2 readings in that range. Because the o2 readings become unstable, corrcl will begin to 'fight against the system', making inaccurate fueling calculations that cause a chain reaction with the integrator, then the BLM cells.
CORRCL appears to be a primary cause of the 'BLM Splits' reported with larger cams due to inaccuracies in o2 readings being too quickly propogated into fueling changes, but more testing is needed.
Reduce CORRCL correction strength to match the lumpyness of your cam, or you can try nearly disabling to see if the integrator is better off on its own. Generally the more control you give to the slower-reacting integrator with a big lumpy cam, the better.
The settings below cause corrcl to make smaller corrections, especially at low airflows where the o2 corruption is at its worst.
altered corrcl settings
Full Time Open Loop
Running open loop full time is an option for race only or extreme street cars where economy and emissions are of no concern, and corrupted o2 readings simply can't be corrected to a satisfactory level on some engines.
That's ok! You tried. Built smallblocks just LOVE to run rich, and you have obviously thrown out the desire for fuel economy by building such an engine anyway.
EE will run quite happily in open loop, and give you whatever AFR targets you want.
permanent open loop
Tuning all of the fueling tables as close as possible with a wideband is highly reccommended, then simply raise the temperature to enable closed loop.
This is also a good idea, when tuning with a wideband on a car intended for regular closed loop operation.
Charcoal Canister Purge
The CCP system on the LT1 is particularly problematic if removed, either for weight and complexity reduction (which is why i did it) or a standalone engine swap.
There are three approaches to dealing with the lack of a functional CCP system, each with their own advantages and disadvantages.
Disable the error code and leave it alone
This is a no-brainer... and should be done regardless of your solution to avoid the error code.
ccp error code disable
But, if nothing else is done, during CCP duty cycle extra fuel will be added. This will have a small effect on your fuel economy, and drive your BLMs lower seemingly at random (very hard to tune around)
If you are a picky bastard that wants your tune to be perfect, that just will not do.
Disable the transient fuel map
The extra fuel for the CCP duty cycle seems to be stored in a mysterious transient fueling routine, which can be disabled with this switch:
transient fuel sw
However, my butt dyno and my logs tell me that this transient fuel map must calculate other added fuel, possibly for burst acceleration. It definitely removes the spattering of added fuel from the CCP duty cycle, but it may do other things for driveability, so please experiment.
Remove the CCP duty cycle and hack BLMs up
This is a weird one. You go to raise the CCP enable temperature so the CCP never turns on, and suddenly, BLMs stop working.
What the hell do BLMs have to do with a purge canister!?
Well, I worked hard to find out, so I'll tell you, and give you workarounds.
Block learn mode operation on the LT1 seems to be (for some kind of programmer's convenience) tied directly to the CCP duty cycle.
Surely you have noticed that during irregular conditions (stopped idle, decel, etc) the LT1 operates in BLM cells 16, 17, and 18. Well, the condition that must be met for that to happen is actually the lack of ccp actuation, which it just so happens never operates during those conditions.
Disabling the CCP by putting the temperature out of range causes you to be stuck in cells 16-18, and block learning becomes useless.
The solution is to zero out another constant, which affects how much CCP duty cycle is necessary to enter the 'normal' 0-15 cells. Hopefully you've been paying enough attention to guess at the result: cells 16-18 are no longer used for anything.
This isn't actually so bad. Idle happens in whatever cell it happens to fall in, and so does decel. But still, play with it and see what you think.
Coincidently, this hack is also what you'd want to do if you ran a standalone LT1 with no VSS, so it wouldn't be stuck in cells 16-18 all of the time.