Idle Air

by Michael Decipha Ponthieux
Posted: 12-5-2010
Last updated: 9-18-2016

Note: all writing in this color does not apply to older ford ecu's (such as the foxbody ecu)

Base Idle Reset / Throttle Body Set Screw Adjustment

For those using non-decipha tunes or to perform a base idle reset on a stock tune
Once the engine reaches a warm non-surging idle, unplug the TPS, IAC, and SPOUT connectors.
If the engine stalls, you will need to OPEN the throttle body stop screw to give the engine enough airflow to idle. If you have an automatic transmission, place the vehicle in gear with the parking brake set and chock the wheels to prevent the vehicle from moving. Be sure someone stays in the vehicle at all times with their foot on the brake. With the tps, iac, and spout unplugged, adjust the throttle body set screw to reach the MINIMUM rpm the engine will idle. Then shut off the engine and turn off the ignition, plug in/reconnect the iac, tps, and spout connectors. Fire the engine back up and allow a few drive cycles for the ecu to readapt to idle correctly.

If you so choose to dial in the airmass and throttle body airflow while custom tuning you must plug in the IAC, TPS, and SPOUT to calculate idle airmass.

To set base idle for those using an EFIDynoTuning Custom Tune or with
Mechanical Idle Control used, do the following. Once the engine reaches a warm non-surging idle, log the IPSIBR payload, if IPSIBR is greater than > 0.050 you will need to OPEN the throttle stop on the throttle body to allow the engine to get more air at idle. If IPSIBR is at 0.0000 and the engine is idling 50 or more rpm greater than 800 rpm (or the NUBASE idle rpm value), then you will need to DECREASE the idle stop screw to get the engine to idle down.
Note: You must unplug the throttle position sensor anytime you OPEN the throttle set screw, otherwise the ecu will set the part throttle flag and go into dashpot and part throttle spark control. If you had to OPEN the throttle stop, be sure to shut off the engine and plug the TPS back in prior to restarting the engine.
For now on, all ISC startup corrections will be performed in the FN1862 ISC Multiplier Table.
CHECK OUT THE STARTUP ENRICHMENT WRITE UP FOR SPECIFICS. Note: When using "Mechanical Idle Control" open the throttle body set screw if IPSIBR exceeds 0.050 when the engine is at operating temp and idling stable. Be sure to unplug the tps anytime the set screw is OPENED so the tps does not set the part throttle flag as the ecu will calculate that the throttle pedal is being pressed.

Mechanical Idle Control

"MECHANICAL IDLE CONTROL" diables the idle air kam corrections and forces the tuner to correctly adjust the throttle body set screw for optimal performance. This will prevent surging, stalling, inconsistent dashpot, and multiple other idle and decel issues from ever being possible. it is HIGHLY recommended to permanently keep the MINIMUM correction scalar (PSIBRM) set to 0.0000 and (UPDATM) to 255, if idle air is dialed in then you'll never need negative corrections, as an added bonus, the ISC Multiplier table can be increased at lower cells to add startup rpm with no ill effects.

To incoroporate Mechanical Idle Control in your tune, simply set:
FN875NY-axis to all 0.600
FN800Allow 0% ISCDC at 0 lbs/hr, remove clip of 10%, Clip max ISCDC to 98%, reduce 100% values
FN1862 / FN1861Divide entire table (all cells) by 6, this will result in a value of 0.172 at the top warm ECT cells that the engine normally operates at

Be sure to clear the KAMs to erase any ISCKAM adapted air trims learned BEFORE starting the vehicle for the first time when adding the mechanical idle control mod to your existing tune.
Mechanical Idle Control is now complete and your Idle Air is now dialed in, you can now jump back to the
Base Idle Reset section.

For now on all idle air tuning will be done in the ISC Multiplier table FN1861 / FN1862.
Note that all EFIDynoTuning Tunes have Mechanical Idle Control done, so the following DOES NOT apply to EFIDynoTuning tunes.

Idle Air Control

The idle air neutral function FN875N contains the actual air mass needed to reach a desired rpm WHEN THE ENGINE IS AT STABILIZED WARM IDLE ONLY and is multiplied by the isc table multiplier FN1862N. Typically, at a warm stable idle, the ISC Multiplier Tables should have a value of 1.000. Before continuing be sure you fully understand how this functions. The ecu looks up FN875N to determine an Idle Airmass at any given RPM and then muiltiplies that value by the ISC Multiplier Table FN1862.
This does not apply to those using the mechnical idle control, in the mechanical idle control FN875N must = 0.6 and FN1862 = 0.172 at a warm stable idle.

Likewise, the idle air Drive function FN875D must contain the actual air mass needed to reach a desired rpm WHEN THE ENGINE IS AT STABILIZED WARM IDLE ONLY and is multiplied by the isc table multiplier FN1862D. Typicall the when at a warm stable idle, the cell(s) in use is 1.000

These functions can only be dialed in WHEN THE ENGINE IS AT A WARM STABLE IDLE (typically 190-210 degrees ECT), which means the engine has been running at least 15 minutes and the throttle has been closed for at least 2 minutes, and the FAN HAS BEEN OFF for at least 2 minutes. You can not dial in idle air when the fan or A/C is on due to the extra air needed!!! There is seperate values for that FN885 & FN822B

Now you can ONLY dial in idle air AFTER your idle fuel is dialed in, if you are in closed loop at idle your fuel kams should be near 1.00 If your kams are more than 5% off at warm idle you will need to dial your idle fuel in first before proceeding.

YOU CAN NOT ADJUST IDLE AIR WHEN IDLE FUEL IS NOT CORRECT!! this is because any correction to idle fuel will alter the idle air requirements.

Now ASSUMING you've got your idle fuel dialed in, get her up to WARM operating temp and at a stable idle (no surging, swinging, loping, etc...), again FANS OFF

Make sure your average rpm is within 50ish rpm of demanded idle which will be the scalar NUBASE when in neutral, be sure there are no rpm adders in effect (such as fn825b - ACT adder, fn825a - ECT adder, fn821a - voltage adder, fn880 - time adder, fn890 - bp adder). You can verify there are no adders in use by logging the payload DSDRPM, dsdrpm is the rpm the ecu is trying to maintain, with no adders in neutral DSDRPM will be the same as NUBASE, +/- 8 rpm due to it being two different memory structures.

Idle TPS Voltage

The TPS at idle closed throttle means ABSOLUTELY nothing so long as its between the TAPMIN (tps minimum) and TAPMAX (tps maximum). If the tps is not within that range then the logged tps value will be the value of the scalar RATIV (failed tps value). Verify the tps does not match RATIV at closed throttle (typically 1.25) , if it does then more than likely the tps value is too low. To fix this you can simple reduce the min tp scalars VTAP1, VTAP3, TAPMIN, to put the tps sensor back in range, i usually set all 3 of those scalars to 0.400 volts (82 a/d counts). If your closed throttle tp is greater than RATIV you will be forced into part throttle. I recommend setting RATIV to 1.5v in all tunes regardless.

Many used to believe the TPS had to be at 0.99 for max power, thats complete crap anyone feeds you that garbage you wrap them in the mouth as per decipha. The ecu takes the lowest tp voltage since key on (known as RATCH) and uses that as a relative position of 0 throttle which can be logged as the payload TP_REL, this is the relative throttle position the ecu uses for its calculations. TP_REL does not exist in the older foxbody ecu's.

Idle Airmass Data

**This does not apply with
Mechanical Idle Control**
With the engine at a stabilized warm idle with no adders, timing locked to 10 degrees, and the fan off, keep an eye on the payload AM which is the air mass value. if you do not have access to the air mass payload than keep an eye on the MAF payload, if you don't have access to maf you'll need to log the maf voltage (imaf, mafv, or vmaf) then go calculate the air mass from it, if you can't log maf voltage, you'll need to probe the maf sensor and possibly (but not often) subtract UP TO approx ~0.14 volts from it then go look up that voltage in your maf transfer FN036 to know the air mass

In any case, you want to get an average, it doesn't need to be exact just a good guesstimate average, if its jumping around quite a bit then chances are you're getting a bit of turbulence through your maf and it would be wise to install a mesh screen to smoothen out the airflow. See the PRE-TUNE INFO for specifics You may also try 'clocking' the MAF by loosening the clamp and twisting it until you get THE HIGHEST POSSIBLE MAFV at idle which should be where its most stable. (I.E. Not jumping around alot) A 0.030 mafv fluctuation at idle is about normal. See the MAF Write Up for specifics

Log the iscdc - "ISC Duty Cycle", you'll need this value to cross calculate how much air is flowing through the ISC valve to maintain idle. The isc duty cycle should be pretty consistent, if its not you need to tame your idle by increasing the idle air correction constant scalar TC_OVER and decreasing TC_UNDER. I recommend values of 9.0 and 0.75 respectively.

Temporarily Lock Out Timing

You must temporarily lock out the ignition timing to get an accurate idle airmass, this can be achieved by either removing the SPOUT CONNECTOR (if applicable) or by setting the "SPK_ADD" scalar to 10 degrees and the "SPK_MUL" scalar to 0.00

If that still doesn't stabilize the iscdc you may need to disable idle air kam correction by either setting both the min correction PSIBRN scalar to 0 as well as the max PSIBRM scalar to 0 or if you have access to the isc global multiplier scalar IDCMUL set it to 0 and global isc adder scalar IDCOFS set to 20, if you had to set both correction clips to 0 and still can't get the idle to stop surging then you can temporarily clip the isc min duty cycle by increasing the DEBYCP scalar, keep increasing it until the idle no longer surges.

ISC Duty Cycle

Once you have the idle tame it would be ideal to get the iscdc between 15% to 25%, reason being is that this will allow headroom for cold enrichment and dashpot. Its most ideal to be near 25%, if its above 25-35% you need to open the throttle body stop (increase air)

It is imperative that the above be followed, if the ISCDC is below approximately 15% then the IAC valve is about completely closed and the ECU cannot control the idle.

Now with a stable AIR MASS or MAF value and ISCDC we can input the correct info we need to let the ecu know how to control idle correctly.
**This does not apply to
Mechanical Idle Control**

FN875 - Idle Airmass

Go to the neutral idle air function FN875N and put in the NUBASE value and the actual AM value you averaged, if you only have MAF to log
then you'll need to convert from kg/hr to lbs/min by multiplying the average MAF Flow (kg/hr) by 2.2 then dividing by 60 (=lbs/min).

Ex: Your average MAF at idle was 28 kg/hr, 28*2.2/60= 1.026 lbs/min, not exact but good enough, this value goes directly into the idle air function FN875N.

Throttle Body Airflow - Bypassed Airmass

Next you'll need to dial in the throttle body airflow scalar ITHBMA, the t/b airflow scalar is the amount of airflow flowing through the throttle body in which the ecu cannot control. So how do you figure out how much air the throttle body itself is flowing? Simple, the engine only has 2 points of ingesting air, the first is the ISC valve and second is the throttle body. Since you know the TOTAL airmass (1.026 lbs/min in the example given above) You can very easily figure out how much air is flowing past the t/b blade by subtracting the ISC airmass from the total airmass which will only leave the throttle body airmass. Simple, so now we must go look up the ISC transfer table FN8000 for newer ecu's or the transfer function FN800 for the older ecu's.
Note: ITHBMA should ALWAYS be EXACTLY 0.100 less than FN875N, if it is not, then you need to adjust the throttle set screw to get it there.

ISC Airflow - DEBYMA

Calculate the lb/min contribution from the isc (known as DEBYMA) by interpolating the flow at your logged ISCDC value. If you can log the DEBYMA payload then you don't have to do the following, since most def's do not have access to that payload we will calculate the isc airflow the long way.

Ex: average ISCDC was 35, lookup your isc transfer, for this example, the transfer gives:
39 dc0.25 lb/min
28 dc0.12 lb/min
So to interpolate what the flow is at 35dc,

39dc - 28dc = 11 dc difference;
Now work the flow: 0.25 lbs/min - 0.12 lbs/min = 0.13 lbs/min difference;

0.13 lbs/min airflow difference over the 11 duty cycle difference gives us:
0.13 / 11 = 0.0118 lbs/min per duty cycle

Now we subtract our ISCDC from the upper end of the scaling
39 - 35 = 4

We now multiply our duty cycle difference by the airflow per duty cycle

4 * 0.0118 = 0.0472 but wait, not done yet,
do not forget to subtract this from the upper airflow value of the airflow scaling from which you interpolated your iscdc to get the total isc airflow.
0.25 - 0.0472 = 0.2028
The isc valve is flowing 0.2028 lbs/min of air at 35% dc.

See how simple it is? Just basic math, the ecu uses the following formula:

AM - DEBYMA = ITHBMA which is equivalent to ITHBMA = MAF - DEBYMA.

Now subtract that value from the AM, ex: 1.026 (AM) - 0.2028 (DEBYMA) = 0.8232 (ITHBMA)

This is the value for the throttle body airflow ITHBMA scalar, as you can see this is the amount of air the ecu SUBTRACTS from the AM to calculate the iscdc it needs to get to rpmdsd.

Before continuing its imperative that you fully understand the above, to clarify in other words, the ecu looks up the idle air function to see how much airflow AM is needed to reach the dsdrpm, by having the actual AM needed from from the function, the ecu then subtracts the amount of airflow that is going through the throttle body ITHBMA that then only leaves the amount of airmass needed from the ISC valve (a.k.a. Idle Air/Speed Control valve).

IPSIBR - Instantaneous Idle Airmass Correction

You should be able to infer by now that
FN875N - ithbma = ISC flow
AM (maf) - FN875N = ipsibr (correction)

Since this can be a bit confusing i will do another example, lets say the engine has an average idle MAF of 32.32 kg/hr which equals 32.32 kg/hr * 2.2 / 60 = 1.185 lbs/min AM at an iscdc of 17.5%, by looking in the function ISC transfer fn800 or fn8000 we can cross calculate the ISC duty cycle, A9L2 has the following values:
0.12 lbs/min28dc
0.00 lbs/min10dc
Which gives us 28 dc - 10 dc = 18 dc difference
0.12 lbs.min - 0.00 lbs/min = 0.12 lbs/min airflow difference

0.12 lbs/min / 18 dc = 0.0066 lbs/min per dc

Now to interpolate the airflow
28 dc - 17.5 dc = 10.5 dc, * 0.0066 = 0.0693 lbs/min less than high input airmass
0.12 lbs/min - 0.0693 lbs/min = 0.0507 lbs/min flowing through the idle air control valve when the duty cycle is at 17.5%
am - isc air flow = ithbma
1.185 lbs/min TOTAL - 0.0507 lbs/min through ISC = 1.1343 lbs/min through Throttle Body

Be sure you understand this before proceeding!!!

High Idle Airmass

**This step can be skipped when using
Mechanical Idle Control**
When an engine is very cold it will typically require a higher base idle rpm to prevent surging, thus we need to have a higher rpm value with airflow for the ecu to interpolate between for the increased engine speed. To do this increase the NUBASE scalar by 500 rpm, once the engine has stabilized at the new dsdrpm calculate the new
average AM then insert that value and the new dsdrpm value into FN875N function just like you did before. You DONOT readjust ITHBMA, only adjust FN875N to dial in the higher RPM airmass.



(max scale rpm)2.000
(min scale rpm =0)0

After you've made all those changes don't forget to change the DEBYCP scalar to 0 and open up the PSIBRN scalar, also if you had to adjust the spark feedback gain set that back to a reasonable value 0.50 or 1.00 for example log the IPSIBR (instant correction) and ISCKAM2 (long term correction) payloads. They should be near 0 or on their way there, give it a minute to allow the corrections to get back near 0, a fluctuation of -0.05 to .05 is normal, if its off by more than that then you messed up somewhere and need to start from the beginning again, make sure the fan never came on during this time, if it has you'll need to wait until after the engine has settled again to start over. Most importantly, don't forget to set NUBASE (or DRBASE) back to your desired idle RPM (ex: 800).

ISC KAM Correction

**This can be skipped for
Mechanical Idle Control**
For Reference:
ISCKAM0Idle air correction with a/c offIn DriveAuto Transmission Uses in Gear not P/N
ISCKAM1Idle air correction with a/c onIn DriveAuto Transmission Uses in Gear not P/N
ISCKAM2Idle air correction with a/c offNeutralManual Transmission always uses, Auto uses in P/N
ISCKAM3Idle air correction with a/c onNeutralManual Transmission always uses, Auto uses in P/N
Note: It is HIGHLY RECOMMENDED to set UPDATM to 255 to prevent ISCKAM's from updating while dialing in idle air.

If you have an automatic transmission, you can copy FN875N over to FN875D now put the vehicle in gear and repeat the same procedure to dial in the idle air drive function FN875D.

Its not uncommon for the ITHBMA to be off when the vehicle is placed into gear, DO NOT ADJUST ITHBMA WHILE IN DRIVE instead, compensate for the IPSIBR correction within the FN875D function.

Startup & Cold Idle Airmass Multiplier Compensation - FN1862 / FN1861

From now on all idle air correction will be done in the multiplier table(s) FN1862N and FN1862D or FN1861 for the older ecu's. You adjust that table by adjusting the cell in use to get the isckam# and ipsibr to stay near 0.000 You are doing so to compensate for the additional friction and lack of efficiency due to the engine being cold. That table is multiplying the stabilized engine idle airmass FN875 to compensate for the cold engine idle.

FROM NOW ON ALL YOUR IDLE AIR CORRECTION WILL BE DUE TO THE MULTIPLIER TABLE(S) you'll need to log a cold startup in order to dial in the complete table. The objective is to get the isckam and the ipsibr to stay near 0.000 you do this by adjusting the multiplier table to get your rpm to match dsdrpm.
If your dsdrpm is too low when cold then you need to increase the rpm adder functions accordingly.

RPM Adder Functions

**These should all be set to 0 when using the mechanical idle control**
FN825B"ACT Adder"Always active based on ECT, recommend all 0s
FN825A"ECT Adder"Always active based on ACT, recommend all 0s
FN825A_ALT"Alternate ECT Adder"^^x2 "" "" When the Alternate Calibration flag is set (not used)
FN826A"Startup ECT Adder"Active at Startup until TKDTM expires, Use for RPM adder at start if needed
FN821A"Voltage Adder"Active when the battery is discharging, recommend all 0s
FN880"Neutral Timer Adder"Active based on the Neutral CT Timer, recommend all 0s
TKDTM"Startup High Idle Max Time"Startup kick down timer
BZZRPM"Startup Buzz RPM"Buzz RPM added at initial crank, recommend 0
BZZRPM_ALT"Alternate Startup Buzz RPM"^^x2 "" "" When the Alternate Calibration flag is set (unused)
BZZTM"Startup Buzz RPM Timer"Seconds that the Buzz RPM remains active, recommend 0
BZZTM_ALT"Alternate Startup Buzz RPM Timer"^^x2 "" "" When the Alternate Calibration flag is set (unsued)

This all may sound like alot but for all of the 2 minutes it takes your completely done with dialing in idle air, the only time you'll ever have to revisit this is if some one decides
to mess with the set screw later down the line you should notice now that your tip-in throttle response is improved. This is due to the ecu knowing the exact air requirements
needed off closed throttle, so it can calculate fuel more consistently at idle tip in.

Idle RPM Correction Rate

If you have a cam that has a large idling range, and you don't disable the air mass correction then you'll need to adjust the isc rpm deadband RPMDED to a higher value so IPSIBR doesn't constantly swing your idle around. if you want to get more advanced into the idle air logic, you can go manipulating the update rate function FN860, increasing the loops will make a correction slower, you also have the KPSI** scalars which control the rate at which the correction is applied, you can decrease those correction values to stabilize idle as well.

if your using any of the EFIDynoTuning Base Calibration files then all of the idle spark and correction values are already set correctly.

For 94+ ECU's, Idle RPM Correction Rate is based on the TC_OVER and TC_UNDER scalars. Those scalars are the time requirement (in seconds) that actual RPM must be above (TC_OVER) or below (TC_UNDER) dsdrpm for an idle correction to be made = IPSIBR Correction. For really choppy cams its not uncommon to arrive at values of TC_UNDER = 0.75, and TC_OVER = 10.0

Spark to Tame Idle

The SPK_FBS_GAIN scalar (feedback spark gain) is the amount of ignition timing the ecu throws around spark at idle per loop to maintain the dsdrpm, keep in mind on a large lift cam or a stupid overlap cam setting the gain multiplier to 0.0 will probably make it surge, if this is the case you will need to increase the gain. A value of 1.00 usually works out well for most engines, however, too high will also cause a surge as well


Lets say your idle is screwed and you just can't seem to get it tame enough for the ECU to control the ISC correctly. You may have to temporarily crack open the throttle blade to get the idle tame and do the following:

Get her up to warm idle (180-200*F ECT), once shes been idling at normal operating temp for 5 minutes take note of the ACTUAL

Lets say you come up with an average of:

Airmass (lbs/min) = 31.5 kg/hr x 2.2 / 60
1.115 lbs/min @ 971 rpm
800 rpm / 971 rpm = 0.823 % <
1.115 lbs/min x 0.823 % = 0.917 lbs/min airmass at 800 rpm
Put 800 = 0.917 lbs/min in the idle air function

10% iscdc is no idle air adder, isc is basically off at 10% duty cycle

so ithbma (t/b airflow) = 0.917 lbs/min - 0.00 lbs/min from isc

So u would set ithbma to the same 0.917 lbs/min since all the air is coming through the throttle body

but since we want to get the isc to control idle, we will need to target about 30% isc duty cycle which is about 0.15 lbs/min of isc airmass (approx)

0.917 lbs/min (airmass @ 800 rpm) - 0.15 lbs/min (airmass through isc valve) = 0.767 lbs/min through throttle body

airmass is 0.917 lbs/min from function and 0.15 lbs/min is what we want from the isc valve, which leaves 0.767 lbs/min of airmass that must come through the throttle body

since the throttle body is flowing 1.115 lbs/min CURRENTLY and we only want it to flow 0.767 lbs/min, we need to CLOSE the throttle body stop to reduce the airflow through the throttle body blade

Go ahead and set ithbma to 0.767 lbs/min

CLOSE the throttle body stop by about 3/4 of a full turn

this should get you in the ballpark

After you make those corrections and adjustments, write the tune and fire it up


If she idles like shit keep your foot on her until she gets up to warm operating temp

let the idle settle and watch ipsibr and isckam2 they should both be working their way towards 0.000

add them both together, if their sum is +/- 0.05 then call it good and never look back

otherwise if their sum (ipsibr+isckam2) is greater than 0.05, then you need to open the throttle stop a little bit (1/4 turn)

If their sum is less than -0.05 then you need to close the throttle body stop a little bit (1/4 turn)

be sure to allow ample time for the ipsibr and isckam2 to update, it usually takes about 3 minutes after each t/b set screw adjustment to correct

if I failed to make any of this clear don't hesitate to ask for clarification on the forum so I can update this write up accordingly.

Return Home
Jump to Forum - EFIDynoTuning LC - New Orleans, LA