Idle Air

by Michael Decipha Ponthieux
Posted: 2010-12-05
Last Updated: 2023-11-16

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

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. Plug all the connectors back in, open the throttle stop and try again when it reaches a stable idle ~at least 3 minutes of run time.

With the TPS, IAC, and SPOUT unplugged, adjust the throttle body stop set-screw to reach the MINIMUM rpm the engine will idle. Then shut off the engine and (make sure key is in the full off position) plug in/reconnect the IAC, TPS, and SPOUT connectors. Fire the engine back up and allow a few drive cycles for the ecu to adaptives to adjust to the new idle position correctly.

Now that the throttle stop is set correctly you can now begin dialing in idle air. You have one of 3 options.


You would simply set arbitrary values in FN875N - the neutral idle airmass function to the following:
And if you have an automatic trans as well as a strategy that has a drive function FN875D you can populate it as follows:

First verify the ISC duty cycle is not too high to maintain a fully warmed up idle. If its between 15% and 35% then congratulations you have set the throttle stop correctly. If its above 35% then you will need to unplug the TPS and open the throttle stop a touch more to give her more air to idle correctly. Once you've got the ISC duty cycle below 35% at idle be sure to plug-in the TPS connector as well as any and all of the other sensors that you've temporarily unplugged if you hadn't already (don't forget the spout.)

Once the engine reaches a fully warmed-up non-surging idle log the DESMAF_PID_N (IPSIBR) payload. if IPSIBR is greater than > 0.100 you will need to REDUCE the ITHBMA (throttle body air flow scalar or function) to let the ecu know that the throttle stop is flowing more air.

Likewise if IPSIBR is NEGATIVE and below -0.100 then you will need to INCREASE the ITHBMA value to let the ecu know more air is flowing through the throttle body stop now.

Note that if the engine is idling 100 or more rpm greater than the commanded idle rpm (DSDRPM) then you will need to CLOSE the idle stop screw to get the engine to idle down. If you cannot close the throttle stop enough to get the engine down then you have an air leak no if ands or buts about it.

Note: ALWAYS REMEMBER you MUST UNPLUG the throttle position sensor anytime you OPEN the throttle set-screw. Otherwise the ecu will see the throttle position open and set the part throttle flag and go into dashpot and part throttle spark control.

And remember that if you had to OPEN the throttle stop then be sure to shut off the engine and plug the TPS back in prior to restarting the engine.

All ISC startup corrections are done in the FN1862 ISC Multiplier Tables (park or drive table -or FN1861 for the older strategies.)


OPTION 2 - "Mechanical Idle" Control 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" disables 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. However, this option is no longer recommended as it requires significant time from the tuner to dial in idle air properly.

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.

OPTION 3 - OEM Ford Idle Air Control with actual airmass values.

STOCK 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 (or FN1861). Typically, at a warm stable idle the ISC multiplier tables should have a null 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 (or FN1861).
Likewise, the idle air Drive function FN875D (if your strategy supports it) 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. Typically when at a warm stable idle the cell(s) in use are null having a multiplier of 1.000 thus giving no contribution.

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 from cold start 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!!! Their are seperate values for Fan and A/C compensation 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 in your idle fuel (maf) 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 make sure the FANS and A/C are both OFF.

Make sure your average rpm is within the commanded idle rpm DSDRPM. If no DSDRPM adders are in effect then commanded idle rpm which will be the scalar NUBASE when in neutral or park. Be sure no rpm adders are 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 at idle with no adders when in park or neutral. For park and neutral DSDRPM will be the same as NUBASE, +/- a few rpm due to it being two different memory structures.

Idle TPS Voltage

The TPS at closed throttle idle means ABSOLUTELY nothing so long as its between the TAPMIN (tps minimum) and TAPMAX (tps maximum) range. 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 volts). If it does then more than likely the tps value is too low. To fix this you can simply reduce the min tp scalars VTAP1, VTAP3, TAPMIN, to put the tps sensor back in range. In my tunes 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 highly recommend setting RATIV to 1.5v in all tunes regardless.

Many used to believe the TPS had to be at 0.99 volts for max power -thats complete nonsense and if 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 RATCH. Ratch is subtracted from actual TPS voltage to provide the relative throttle position which is what the ecu uses for all of its calculations.

Idle Airmass Data

**NOTE- This does not apply to
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 actual air mass the ecu is calculating.

In any case you want to get an average. It doesn't need to be exact just a good estimated average for stable idle at a given rpm. 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 (not jumping around as much). A 0.030 mafv fluctuation at idle is about normal. See the MAF Write Up for specifics

Now 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 then you cam often tame your idle by increasing the idle air correction constant scalar TC_OVER and decreasing TC_UNDER. I recommend values of 4.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 most easily by removing the SPOUT CONNECTOR (if applicable). On newer vehicle without a spout plug you can set 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 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. This is the case on some IAC valves where they will not flow consistently below approx. 40%. This is very common on aftermarket IAC valves that do not function properly which is very common. It is highly recommended to use only OEM motorcraft IAC valves for this very reason as most aftermarket values will cause idle issues.

ISC Duty Cycle

Once you have the idle tame it would be ideal to get the iscdc between 15% to 35%. The reason being is that this will allow head room for cold startup ISC compensation as well as for dashpot. Its most ideal to be nearer 15% if possible for maximum head room. Remember that if the ISCDC is above 35% you will need to open the throttle body stop to increase air and reduce the IAC duty cycle needed.

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 as the way Henry intended.
Again Note that 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've 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). This equation is in the tuning tips link on the homepage as well

Example: If your average MAF at idle was 1.00 lbs/min simply plug this value directly into the idle air function FN875N for the given rpm.

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. On later strategies and EEC-V this scalar is broken out as the PCV airmass function.

To calculate how much air the throttle body itself is flowing simply subtract the isc airflow from the actual airmass airflow. The engine only has 2 points of ingesting air; the first is the ISC valve and the second is the throttle body. Since you know the TOTAL airmass (1.00 lbs/min in this example) 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.

You will need to look up the ISC transfer table FN8000 for newer ecu's or the transfer function FN800 for the older ecu's and see exactly how much airmass the isc is flowing for a given ISC DC.

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.00 (AM) - 0.200 (DEBYMA) = 0.800 (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 does not apply to
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 DO NOT 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 does not apply to
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 to start. Then put the vehicle in gear and repeat the same procedure to dial in the idle air drive function FN875D.

Its not uncommon for 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

After idle is dialed in 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 and it will take several revisions to dial it in fully. The objective is to get the isckam and the ipsibr to stay near 0.000 You achieve this by adjusting the multiplier table to get your rpm to match dsdrpm which will result in IPSIBR having minimal contribution.

If your dsdrpm is too low when cold then you need to increase the DSDRPM adder functions accordingly FN82x.

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.

Continue reading on to the
Dashpot Write Up.

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