# Idle control - HOW TO

**URL:** <https://community.ecumaster.com/t/idle-control-how-to/3822>\
**Category:** V3 SOFTWARE\
**Created:** [June 6, 2025, 9:29pm UTC](https://community.ecumaster.com/t/idle-control-how-to/3822 "2025-06-06T21:29:37Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jadzwin\_ECUMASTER](https://dub1.discourse-cdn.com/flex013/user_avatar/community.ecumaster.com/jadzwin_ecumaster/32/28_2.png) [@Jadzwin\_ECUMASTER](https://community.ecumaster.com/u/Jadzwin_ECUMASTER)\
**Post date:** [June 6, 2025, 9:29pm UTC](https://community.ecumaster.com/t/idle-control-how-to/3822/1 "2025-06-06T21:29:37Z")

</div>

Many people have problems to set up idle control. Here is a guide how to do it step by step.  
Remeber PID is only for fine tuning, the VE table (stable lambda) and Active state airflow table are essential.  
If you have any question please ask here, as it helps to polish the tutorial.

**How to properly set up idle control?**

Properly configured idle settings should maintain the desired idle RPM under standard conditions without the need for PID controllers.  
PID controllers are used to correct idle speed under varying conditions such as coolant temperature changes or engine load (e.g. when the rear window defroster or radiator fan is activated).

* * *

**Step 1: Configure the Idle Activation parameters**  
Ensure that _Idle On PPS_ is set lower than _Idle Off PPS_. For initial setup, the default values can be used.

* * *

**Step 2: Configure the desired idle target based on coolant temperature**  
This is done in the _Idle Target RPM_ table.  
The colder the engine, the higher the idle RPM should be.  
If the engine is equipped with aggressive camshafts, oversized injectors, or a lightweight flywheel, the idle target should be set higher than in a stock engine.

Also configure the _Afterstart RPM Increase_ table under _Idle Target_.  
This table defines how much the idle RPM should be increased after engine startup.  
The colder the coolant, the more the RPM should be raised during startup.

* * *

**Step 3: Configure the Idle Ignition target angle table**  
Set ignition timing so that advancing or retarding timing affects engine speed in a predictable and symmetrical way.  
This is typically a few degrees before TDC.  
At this point, set all PID parameters (_kP_, _kI_, and _kD_) to 0.

* * *

**Step 4: Configure the airflow control method**  
This step is critical for proper idle control.  
In the _Actuator_ settings, choose the correct method of airflow control (e.g. DBW, PWM valve, etc.).  
Make sure the actuator can provide sufficient airflow for maximum idle RPM during cold start, and that it does not allow the engine to stall at minimum airflow (adjust _DBW Target Min/Max_ or _Solenoid Min/Max DC_ accordingly).

* * *

**Step 5: Use the Override Airflow feature**  
Start the engine and log engine RPM at various coolant temperatures and airflow percentages.  
These values will help you fill in the _Active State Airflow_ table.  
This table is essential for the correct operation of idle control!

* * *

**Important note:**  
If the engine speed is unstable with a constant airflow setting, it likely indicates problems such as incorrect fueling, wrong injection timing, oversized injectors, or idle RPM set too low to be stable.  
PID controllers cannot compensate for such issues.  
Ensure a stable lambda for each airflow value. Lambda \< 1 usually results in more stable idle.

* * *

**Step 6: Fill in the Active State Airflow table**  
Use the logged data. Interpolate missing values from surrounding cells.  
At this point, changing the _Idle RPM Target_ should result in actual engine RPM closely following the target.  
If not, adjust airflow values for the relevant temperature.

* * *

**Step 7: If idle is still unstable**  
Improve the fuel map in the idle region, use a lower _Lambda Target_, or increase the idle target RPM (a higher target usually results in better idle stability).

* * *

**Step 8: Tune the Armed State Airflow table**  
If RPMs are not dropping as expected and the idle controller remains _Armed_, reduce values in the _Armed State Airflow_ table.  
This table controls how quickly RPM drops after throttle closure.  
Too high of a value will prevent RPM from dropping effectively.

* * *

**Step 9: Fine-tune the deceleration to idle behavior**  
Once stable idle has been achieved for all combinations of CLT and idle targets, configure idle behavior when RPMs are dropping in _Neutral_ gear.  
Briefly tap the throttle and observe how RPM falls compared to the fall of the idle target affected by the _Ramp Down Offset_.

Tune _Ramp Down Decay Rate_ and _Ramp Down Delay_ so that engine RPM decreases in sync with the ramp down offset.  
This prevents PID saturation and ensures a smooth transition to idle without RPM dipping below the target.

* * *

**Step 10: Configure the PID controller for ignition (Ignition PID)**  
This should help minimize idle RPM deviation from the target.  
The default values are a good starting point.

---

<div class="post-metadata">

**Author:** ![Jadzwin\_ECUMASTER](https://dub1.discourse-cdn.com/flex013/user_avatar/community.ecumaster.com/jadzwin_ecumaster/32/28_2.png) [@Jadzwin\_ECUMASTER](https://community.ecumaster.com/u/Jadzwin_ECUMASTER)\
**Post date:** [June 6, 2025, 10:02pm UTC](https://community.ecumaster.com/t/idle-control-how-to/3822/2 "2025-06-06T22:02:50Z")

</div>



---

<div class="post-metadata">

**Author:** ![Wtd](https://avatars.discourse-cdn.com/v4/letter/w/e19adc/32.png) [@Wtd](https://community.ecumaster.com/u/Wtd)\
**Post date:** [June 7, 2025, 6:39pm UTC](https://community.ecumaster.com/t/idle-control-how-to/3822/3 "2025-06-07T18:39:11Z")

</div>

I’ve done all the above, I have a sold idle around all of the CLT points but every now and again the RPMs drop below 500 and it stalls. Target is 950 but for whatever reason once or twice on a drive it doesn’t react and stalls. I’ve had this issue a while now.

---

<div class="post-metadata">

**Author:** ![AbZeX](https://avatars.discourse-cdn.com/v4/letter/a/ecb155/32.png) [@AbZeX](https://community.ecumaster.com/u/AbZeX)\
**Post date:** [June 8, 2025, 3:55am UTC](https://community.ecumaster.com/t/idle-control-how-to/3822/4 "2025-06-08T03:55:07Z")

</div>

I use almost the same manual (by expirience) and it works well, but when I turned on airflow PID - oscillations started.  
I tried several ways, but how I noticed it always goes fight with each other (ign pid vs af pid).  
I set 12 degrees btdc for idle, but sometimes it’s around 20, because airflow pid can’t achive normal position. I wouldn’t like to post logs ~2 hours on idle.  
As I understand, sometimes it “think” that is ok to 20 degrees instead of 12, just because of target rpm = rpm. But in my head its should work another way - for idle is airflow control, but for immediately corrections - ignition control.  
It’s hard to tell how it was in v2, I start use EMU Black from v3. But with MS3 - this engine, with this configuration (only ECU has been changed) - it works ideal on idle, 800 rpms (790-810 max osc), even tuner the same (me),

I still hope that it’s just new SW for me and I still don’t understand something.  
Please continue the HOW TO from step 10… only on Ign PID it works well, even 600-1200 rpms can be achived only by ignition advance. Airflow PID makes IDLE ocsillation.

---

<div class="post-metadata">

**Author:** ![SteveDawson](https://avatars.discourse-cdn.com/v4/letter/s/43a26b/32.png) [@SteveDawson](https://community.ecumaster.com/u/SteveDawson)\
**Post date:** [June 8, 2025, 2:22pm UTC](https://community.ecumaster.com/t/idle-control-how-to/3822/5 "2025-06-08T14:22:37Z")

</div>

Excellent write up, Jadzwin. Very timely since I’m in the process of sorting out the idle settings.

Question: What is the process to calibrate the “Airflow VE correction” table? I have ITBs, an idle air control valve and am running Alpha-N. Is this a critical setting or can I use some default values?

---

<div class="post-metadata">

**Author:** ![Wtd](https://avatars.discourse-cdn.com/v4/letter/w/e19adc/32.png) [@Wtd](https://community.ecumaster.com/u/Wtd)\
**Post date:** [June 10, 2025, 9:58pm UTC](https://community.ecumaster.com/t/idle-control-how-to/3822/6 "2025-06-10T21:58:54Z")

</div>

Hi @Jadzwin_ECUMASTER

You’ve looked at this issue before but I’m still getting random stalls once or twice on each drive. I have a nice smooth idle that control’s well at around 950rpm. Please see attached log, the stall happens at 46:50 in the log.

Thanks  
Wayne

[cut out.emublog3](https://community.ecumaster.com/uploads/short-url/c8yZAcby8R6dxITbaXtX7S9LGIM.emublog3) (5.0 MB)  
[20250521\_0656\_00.emub3](https://community.ecumaster.com/uploads/short-url/7edqsQznsl05GsXkDsm7GMEXhLy.emub3) (66.9 KB)

---

<div class="post-metadata">

**Author:** ![Mlynek](https://dub1.discourse-cdn.com/flex013/user_avatar/community.ecumaster.com/mlynek/32/3773_2.png) [@Mlynek](https://community.ecumaster.com/u/Mlynek)\
**Post date:** [June 11, 2025, 6:06am UTC](https://community.ecumaster.com/t/idle-control-how-to/3822/7 "2025-06-11T06:06:56Z")

</div>

I also have a problem that sometimes the idle speed control does not enter the armed state and the engine stalls

 ![image](https://europe1.discourse-cdn.com/flex013/uploads/ecumaster/original/2X/4/4677ea9f53f131b9600f35934ce8c62240aa11a1.png)  
[20250611\_0743\_idle\_not\_armed2.emublog3](https://community.ecumaster.com/uploads/short-url/a6gv6yXhEQfV7J7DGxS8aa2gA7M.emublog3) (118.9 KB)  
[20250611\_0736\_idle\_armed\_active.emublog3](https://community.ecumaster.com/uploads/short-url/yqR38ZcFOFq1FZ8hi5rbPtxY2NE.emublog3) (94.3 KB)  
[20250611\_0730\_idle\_not\_armed.emublog3](https://community.ecumaster.com/uploads/short-url/leN0WYXvcsti89IAQIfEVnzLVrP.emublog3) (106.4 KB)

---

<div class="post-metadata">

**Author:** ![Jadzwin\_ECUMASTER](https://dub1.discourse-cdn.com/flex013/user_avatar/community.ecumaster.com/jadzwin_ecumaster/32/28_2.png) [@Jadzwin\_ECUMASTER](https://community.ecumaster.com/u/Jadzwin_ECUMASTER)\
**Post date:** [June 11, 2025, 9:30pm UTC](https://community.ecumaster.com/t/idle-control-how-to/3822/8 "2025-06-11T21:30:50Z")

</div>

Your problem are those settings:

 ![image](https://europe1.discourse-cdn.com/flex013/uploads/ecumaster/original/2X/0/05e9207638e2a44f865a4134e2bb791afa072cc1.png)

You have very high vacum in manifold (about 16-16 kPa) so the idle control activate much to late.  
So you can put small numer like 14kPa for idle On if MAP over or adjust armed state airflow to lower vacum during engine brake.  
I would start to put 0 for MAP over parameter and drive to check if stalls dissapear

---

<div class="post-metadata">

**Author:** ![Jadzwin\_ECUMASTER](https://dub1.discourse-cdn.com/flex013/user_avatar/community.ecumaster.com/jadzwin_ecumaster/32/28_2.png) [@Jadzwin\_ECUMASTER](https://community.ecumaster.com/u/Jadzwin_ECUMASTER)\
**Post date:** [June 11, 2025, 9:31pm UTC](https://community.ecumaster.com/t/idle-control-how-to/3822/9 "2025-06-11T21:31:55Z")

</div>

I think you have the same problem with the MAP over setting wrong. But I cant confirm without base map

---

<div class="post-metadata">

**Author:** ![PhoB](https://avatars.discourse-cdn.com/v4/letter/p/49beb7/32.png) [@PhoB](https://community.ecumaster.com/u/PhoB)\
**Post date:** [June 11, 2025, 11:42pm UTC](https://community.ecumaster.com/t/idle-control-how-to/3822/10 "2025-06-11T23:42:03Z")

</div>

What about makes armed state table 3D , with CLT axis. For example from 1x8 to 2x4 to not waste memory. It can make transition to idle more stable during warmup. Its detail, but…

---

<div class="post-metadata">

**Author:** ![Tagurit2365](https://avatars.discourse-cdn.com/v4/letter/t/b9bd4f/32.png) [@Tagurit2365](https://community.ecumaster.com/u/Tagurit2365)\
**Post date:** [June 12, 2025, 12:06pm UTC](https://community.ecumaster.com/t/idle-control-how-to/3822/11 "2025-06-12T12:06:40Z")

</div>

Something I noticed with this tune/base map/log is that the accel enrichment is hammering all the time. The table has 15% across the zero TPS row. This doesn’t seem right. This causes the AFRs to be all over the place.

---

<div class="post-metadata">

**Author:** ![konrad](https://dub1.discourse-cdn.com/flex013/user_avatar/community.ecumaster.com/konrad/32/49_2.png) [@konrad](https://community.ecumaster.com/u/konrad)\
**Post date:** [June 18, 2025, 1:28pm UTC](https://community.ecumaster.com/t/idle-control-how-to/3822/12 "2025-06-18T13:28:56Z")

</div>

Gents, not sure if that’s directly related to Idle, as when idle kicks in it works nice.  
When starting the engine I have a drop in RPM caused by IGN target (?) being at 0, before Idle control kicks in.  
Cranking is at 6 deg BTDC. Maybe I’m missing something?  
Which parameter I should set so the IGN would not try to go to ZERO before Idle goes active?

 ![Zrzut ekranu 2025-06-18 o 15.27.38](https://europe1.discourse-cdn.com/flex013/uploads/ecumaster/original/2X/9/9653a36a71a4a56d80634b06195ddac2f834783c.png)  
[2025-06-17-005\_Idle-setup-start-tune.emub3](https://community.ecumaster.com/uploads/short-url/dZaAvYCgD3RYOMUVTKrLDwpcKRs.emub3) (66.1 KB)  
[20250618\_1524\_Idle-Start-Tune.emublog3](https://community.ecumaster.com/uploads/short-url/y4oxMmg7yA2pOmd5pGgajvxvYty.emublog3) (11.3 KB)

Second question, when trying to drive half-clutch, or exactly to start moving by slowly depressing the clutch pedal I see that my PWN DC for Airflow sticks to c.a. 50% (and the engine dies). Why it’s not going over to like 60-70% to prevent engine stall?  
Which parameter limits that?

[20250618\_1743-half-clutch-stall.emublog3](https://community.ecumaster.com/uploads/short-url/bqD39b0GCAaZY7dvKqusRDHGU9l.emublog3) (20.3 KB)

 ![Zrzut ekranu 2025-06-18 o 17.33.53](https://europe1.discourse-cdn.com/flex013/uploads/ecumaster/original/2X/6/6dc313ac5de1cb94928e117cf93052af9f0b6fc8.png)

---

<div class="post-metadata">

**Author:** ![konrad](https://dub1.discourse-cdn.com/flex013/user_avatar/community.ecumaster.com/konrad/32/49_2.png) [@konrad](https://community.ecumaster.com/u/konrad)\
**Post date:** [June 18, 2025, 4:37pm UTC](https://community.ecumaster.com/t/idle-control-how-to/3822/13 "2025-06-18T16:37:00Z")

</div>

One important note. I’ve upgraded from 3.033 where all was running fine and after upgrading to 3.051 this went bananas.

---

<div class="post-metadata">

**Author:** ![konrad](https://dub1.discourse-cdn.com/flex013/user_avatar/community.ecumaster.com/konrad/32/49_2.png) [@konrad](https://community.ecumaster.com/u/konrad)\
**Post date:** [June 18, 2025, 5:30pm UTC](https://community.ecumaster.com/t/idle-control-how-to/3822/14 "2025-06-18T17:30:26Z")

</div>

Another thing that is not clear to me.  
We have three tables for Idle Ignition Management.

Min Torque ign. ang.  
Max Torque ign. ang.  
Target Ign. Table

I would expect that the Min/max tables refer to the REAL RPM and help to add some advance or remove it to get the real RPM closer to Idle RPM target and then stabilise on ing. adv. defined in Target Ign. Table.

BUT I see that Min/Max operate in the range of a TARGET RPM not the Real RPM.  
Therefore when engine begins to stall and RPM drops Ign. Adv. is added as in the Target RPM range, not Real RPM range.

This is counter intuitive to me honestly.

 ![Zrzut ekranu 2025-06-18 o 19.26.39](https://europe1.discourse-cdn.com/flex013/uploads/ecumaster/original/2X/2/288659a60b43c0d14024f4a2b889cb176d7a8ee1.png)

---

<div class="post-metadata">

**Author:** ![baxtercrafter](https://dub1.discourse-cdn.com/flex013/user_avatar/community.ecumaster.com/baxtercrafter/32/2130_2.png) [@baxtercrafter](https://community.ecumaster.com/u/baxtercrafter)\
**Post date:** [June 18, 2025, 6:07pm UTC](https://community.ecumaster.com/t/idle-control-how-to/3822/15 "2025-06-18T18:07:26Z")

</div>

Very good point!!! I didnt even notice it said target rpm and not ACTUAL rpm, no wonder timing never behaved like expected!

---

<div class="post-metadata">

**Author:** ![konrad](https://dub1.discourse-cdn.com/flex013/user_avatar/community.ecumaster.com/konrad/32/49_2.png) [@konrad](https://community.ecumaster.com/u/konrad)\
**Post date:** [June 23, 2025, 1:36pm UTC](https://community.ecumaster.com/t/idle-control-how-to/3822/16 "2025-06-23T13:36:33Z")

</div>

Is there a recommended way to pull up engine revs when operating half clutch (no TPS movement, fixed at 0%)?

This is for “driving” in a traffic jam.

For the time being I use custom correction table for AIR active when Fn out is 1 (RPM \>400 to not make mess when cranking). When RPM drops to 600, 800, 900 I open Idle Air Valve 50, 30 10% (add) respectively.

This causes some oscillation issues sometimes, as the PID controller is not dealing with a bigger volume of additional air (at least the way I tuned it for the remaining part of Idle).

I want to have this as close to OEM behaviour as possible - which basically means the engine almost stalls and recovers smoothly with no oscillation.

Thank you 🙂

---

<div class="post-metadata">

**Author:** ![tombate911](https://avatars.discourse-cdn.com/v4/letter/t/ecb155/32.png) [@tombate911](https://community.ecumaster.com/u/tombate911)\
**Post date:** [June 23, 2025, 2:31pm UTC](https://community.ecumaster.com/t/idle-control-how-to/3822/17 "2025-06-23T14:31:24Z")

</div>

Do you have a clutch switch? I bump up the idle target by 200rpm when the clutch is depressed. This helps with moving the car around as OEM.

---

<div class="post-metadata">

**Author:** ![konrad](https://dub1.discourse-cdn.com/flex013/user_avatar/community.ecumaster.com/konrad/32/49_2.png) [@konrad](https://community.ecumaster.com/u/konrad)\
**Post date:** [June 23, 2025, 2:49pm UTC](https://community.ecumaster.com/t/idle-control-how-to/3822/18 "2025-06-23T14:49:41Z")

</div>

Nope. No clutch switch. An old car (1990) and no option to add one.

---

<div class="post-metadata">

**Author:** ![Jadzwin\_ECUMASTER](https://dub1.discourse-cdn.com/flex013/user_avatar/community.ecumaster.com/jadzwin_ecumaster/32/28_2.png) [@Jadzwin\_ECUMASTER](https://community.ecumaster.com/u/Jadzwin_ECUMASTER)\
**Post date:** [June 23, 2025, 9:29pm UTC](https://community.ecumaster.com/t/idle-control-how-to/3822/19 "2025-06-23T21:29:44Z")

</div>

You are right. There should be RPM not Idle RPM target. It will be changed in next build.

---

<div class="post-metadata">

**Author:** ![Jadzwin\_ECUMASTER](https://dub1.discourse-cdn.com/flex013/user_avatar/community.ecumaster.com/jadzwin_ecumaster/32/28_2.png) [@Jadzwin\_ECUMASTER](https://community.ecumaster.com/u/Jadzwin_ECUMASTER)\
**Post date:** [June 23, 2025, 9:31pm UTC](https://community.ecumaster.com/t/idle-control-how-to/3822/20 "2025-06-23T21:31:40Z")

</div>

I think you should use afterstart ignition lock:

 ![image](https://europe1.discourse-cdn.com/flex013/uploads/ecumaster/original/2X/4/489988c36ac8c9873be81f304bd1ff84b26536cb.png)

[Next page](https://community.ecumaster.com/t/idle-control-how-to/3822.md?page=2)
