Tom wrote: Wed Jan 07, 2026 8:29 am
944m3 wrote: Tue Jan 06, 2026 9:45 pm
Small update. As many amateur tuners would know, getting stock like idle can be frustrating.
I was simulating the stock ECU by locking ignition timing at idle and using the same values as stock (about 5 degrees BTDC at idle). My idle was at about 90%, as I mentioned earlier, of where I wanted it to be.
But I figured out how to let the MaxxECU handle both ICV and ignition. Coupled with my fuel pressure sensor being used to correct injector pulse width, my idle is now about 95% there. I’m hoping long term VE autotune or fuel learning will do the last 5%. Car feels really strong.
Also happy to see the oil pressure with the sensor I added. I used the sandwich plate with oil filter. It does report lower pressure than the dashboard gauge but still well within spec.
Next up is tweaking Realdash running on my android head unit and wired directly to the ECU over canbus. Realdash is awesome, highly recommended.
It is my understanding from my TunerPro chip burning efforts that the factory DME does not lock in idle timing, but rather sets a base timing and then uses timing as a quick way to make minor rpm adjustments, creating a more stable idle that possible with the ISV alone. Or are you saying that's what you did to get to 95%?
@johnb may be able to confirm (or debunk) my understanding and offer details on the factory strategy....
It's true that timing is used to regulate idle speed, but it's not actually the way you might think, i.e. a closed loop like the ISV control. It's actually much simpler: the timing based idle control is simply built into the map. So it is locked in a way but that does actually provide a kind of regulation.
Here's the raw map:
=== 1-Axis Map ===
Address: 13ac
Input variable: 37
Axis length: 7
Breakpoint | Value
------------------------
600 | 63
760 | 27
880 | 27
1440 | 28
1760 | 42
2400 | 42
3360 | 71
And here's a graph:

- idle_timing_map.png (67.45 KiB) Viewed 205 times
To turn these values into degrees BTDC, you subtract 20 and divide by 4 to get the number of flywheel teeth, then multiply by 2.72... to get degrees.
Now with 7 it's a little tricky - we divide by 2 twice, and if I remember correctly the first division by 2 ignores the remainder, so we get 3. But the next division by 2 does keep track of the remainder, so the final result should be 1.5 teeth, that is around 4 deg. BTDC. That's not perfectly precise because of variations that are explained in my real time articles[1].
As you can see from the map, below 760rpm the timing advance increases very aggressively. So any big drop in idle speed will be counteracted by this. On the other hand, as idle speed increases, the timing increases a little, but not in proportion to speed, and this presumably results in a loss of torque.
The section immediately either side of 840 seems to be pretty flat. Now I don't know this for certain but I think that still provides some regulation. Here's how I think it works: I'm assuming that for a given rpm, there's a curve of timing vs torque that ramps up as timing increases, has a peak and then drops off. In that case, it should be possible to pick a timing value on the downward part of that slope, so that decreasing speed results in higher torque, and increasing speed results in lower torque, all with no variation in actual timing.
In fact there is a little variation in the map, but is
mostly flat for some range either side of the ideal idle speed. I'm not sure about the other flat section from 1760 to 2400 though. My guess is that the higher timing value there is needed to keep the engine from stalling, but it's flat over a wide range for the same reason I just described.
[1] First part:
https://jhnbyrn.github.io/951-KLR-PAGES ... dware.html