TuneEcu Maps Explained

I plan to revisit this when my brain is working a little more logically. What I'm picking up is that you recommend disabling the O2 sensor with a custom tune on the 2.3s, which I did. How about the 2.5s using, for example, Mr. Penner's tune? Maybe it's already disabled as part of the tune- I don't recall. Enlighten us....
 
Thanks for the input. I think you've solved my question in a different kind of way than I am used to, and I just want to confirm:
1. In Tune ECU, on a Keihin Triumph, the method for eliminating closed-loop cells is NOT to simply change their value in the AFR table (like TTS), but to disable the O2 sensors using a check box. Or, said a different way, disabling the O2 sensors effectively puts the entire AFR map in open loop, is that correct?
2. Once I've disabled the O2 sensors, the values I enter in the AFR table cells should actually change the command to the ECU for injector timing (duration) for that cell.
3. If that's the case, then I need to be able to rely on my F and L table values as accurate, but I'm not planning on making any big changes or looking for performance gains here. I'm actually working on a 2014 Bonneville - my slow bike. I just REALLY don't like that lean hiccup I keep getting in the middle of a turn or leaving a stop, and I happened to find this most informative post on the R3 forum.
The other thing that I keep reminding myself is that we've gotten so used to having this super precise control over AFR that people will argue over whether 13.5/1 is better than 13.8/1, and yet, I rode bikes for years with 3 or 4 jets (or even ONE - remember Lake "Injectors"?) controlling the fuel in all kinds of weather, and we ran them somewhere between "Bog" and "Stutter". And somehow, we seemed to do okay!
 
The hiccup, like a lean stumble when transitioning from closed to low stable throttle point while cornering? This can be improved by adjusting the TPS sensor to register earlier, basically adjusting the 0% point voltage slightly higher. On the rockets, many people have had good results lifting the 0% from 0.62v to 0.68v. I'm not positive what voltage the Bonnie calls for (probably 0.60-0.62), but I'd try this first before adjusting any tables, it's free, reversible, and doesn't require guesstimation like tables without a dyno. Ensure you use the reset ISCV function before taking the voltage reading as in the TuneECU manual, the resting voltage when you've not triggered the reset ISCV function is not the voltage you want.

1: Correct.
2: No, the AFR table is ignored from then on. Use the F tables to adjust fueling, the Keihen system does zero math for you unfortunately.
3: Drag the whole column of 0 and 1 throttle percent above 1400 RPM in the F table and add 5%, see if it improves it. If not, check F/L switch, you likely have L tables enabled up to a point, if that's the case, you'll need to make a choice. Try to tune the L tables, or abandon them and use F only. Both are not great without a dyno, it's hard to get good map values due to OBD2 update rate and simply zeroing out the F/L table will be way off in the F table in the areas it was using the L table as the primary table, so requires a dyno tune.
 

EDIT: Quick search says it's a narrowband on the 2.5, NTK AZD4002-BA001, $32 from KTM Europe suppliers, $100 from triumph and US suppliers. Pinout may differ so don't go plugging a KTM sensor in without checking with multimeter first

Not sure, but if it's a narrowband sensor I would disable it, nothing wrong with the 2.5 but it didn't particularly stir my emotions, so I don't pay attention to it. Narrow bands are emission control devices designed with a sole purpose, keep the cat lighting off the unburnt fuel and stay emissions compliant by keeping the mixture centered around 1.0 lambda.

In most scenarios it's a simple check these days; if engine is NA it's narrow, if it's forced induction wideband.
 
Last edited:
Wow, VERY helpful. This is definitely different.
Okay, so we know that F and L are Volumetric Efficiency (VE) tables measured by throttle position and Manifold Absolute Pressure (MAP) respectively. Their values are milligrams of air x 20.
The ECU has to have some point of reference to tell it injector timing (fuel) for a given volume of air, so I would think that the AFR table is probably not ignored, but is used as a non-variable standard regardless of inputs from Intake Air Temperature (IAT), Coolant Temperature (CLT) etc. SOME non-variable fuel table is being compared to VE table cells somewhere.
If that's true (?), then I should be able to find my (non-active) closed-loop cells on the AFR table and mathematically calculate the additional air volume needed in the VE tables to richen up those cells to my 13.8/1 goal at cruise and low throttle.
In the meantime, I will try the TPS adjust, but I've done this on my BMWs, and honestly, the TPS is so sensitive, the difference between .62v and .68v is the tap of a finger on the TPS housing. Is the net effect of this to cause the ECU to think the throttle is slightly more open, and add slightly more fuel? If so, the closed loop function should bring things back to stoich in short order. Or does moving the TPS help for some other reason?
 
There may be ECU functionality differences between 2.3 rockets and your bonnie, they are, I think, two whole EURO emissions standards apart in age but it seems for the most part, no major changes were actually required until EURO 5 standards. I get what you're looking for, a way to manipulate it to correct fueling to a more appropriate fuel amount without manually adjusting the fueling table. I expect you'll find no such ability exists within the ECU unfortunately, and if you do it's a difference between the Rocket and Bonnie. Depending on your ability with circuit design though... an Arduino can do it

I'm extremely confident there is no fueling lookup table hidden and that it's doing the injector pulse width math on the fly for a number of reasons, omitting for brevity. This is the point where it goes into speculation because I don't have access to the raw firmware but from behavior I've seen I expect the ECU derives injector pulse timing like this:

(Airmass (F/L Table Value) * 0.071429 (if targeting 14.7 AFR, but this value can be anything) * environmental correction factor * acceleration enrichment factor * injector flow/second (hardcoded constant)) - (injector dead time * voltage correction value) = target pulse width. Basically exactly how non-VE tuning standalones do it.

As I recall, the AFR table is fully ignored when the o2 box is unchecked. 14.7 as the default target fueling constant makes sense based on working values used in the F tables when custom tuning bikes with relatively mild modification. With o2 active, the AFR table acts only as a enable or disable closed loop switching table, any value that's outside the narrow range it accepts to trigger closed loop is treated as a binary; if it's outside, it ignores it and goes into open loop. This is the entry point for manipulation via a controller, ESP32 or Arduino. By accepting the analogue input from the O2 sensor, you can manipulate it to output a different signal to the ECU, essentially tricking it into self-tuning to the value you set in the external board, disclaimer: It's a felony as you're tampering with emissions control devices (I have to say it, and no I won't program it since the EPA has been attacking people lately), but an ESP32 would be better than an Arduino as it's much much faster.

Also, just a pedantic point, it's definitely not a VE table, it's raw air mass, but VE could be derived from it with some math.
 
Last edited:
Excellent, THANK YOU for taking so much time to detail this all out! -Jon