Subaru Outback Forums banner

Logging ECU data for 2.5 non-turbo? What about "IAM"? What value do you have?

42K views 178 replies 16 participants last post by  cardoc 
#1 ·
Logging ECU data for 2.5 non-turbo? What about "IAM"? What value do you have?

I've been using Romraider logger to occasionally view ECU parameters on my 2007, 2.5 non-turbo with 4AT over the past few years. One of the parameters is IAM (Ignition Advance Multiplier). It can be read by scanners and programs that are able to access the Subaru-specific ECU data. (E.g., Romraider, FreeSSM, dealer's Subaru Select Monitor, and similar tools.)

I understand that IAM is related to ignition timing control in the ECU. It's a correction to the base, or default, ECU timing advance to compensate for knock across a broad range of engine speeds and loads. Depending on whether the ECU is an earlier (16 bit) or later (32 bit) version, the IAM can be as high as 16 or 1, respectively.

Some discussions I've looked at related to IAM seem to suggest that an IAM of less than the maximum 16 or 1 might indicate a possible problem, but these are typically in forums about ECU tuning, and where the tuner might be setting this as the target.

Based on Romraider logs I have from a few years ago and more recent checks, the IAM in my 07 is between 0.65 and 0.75 running regular 87 octane fuel that has up to 10% ethanol content.

I'm looking for comparison with other stock 2.5 non-turbos, preferably 2006-2009, using regular (87 octane) fuel, that are not experiencing problems, to determine whether or not my engine's IAM is within a typical range.

I have looked at logs posted in various threads; most don't include IAM. The ones I found with IAM included are for turbo engines.

If you have a 2006-2009 2.5 non-turbo, and can view the IAM, or have access to this data, then I'd appreciate if it could be reported here so we can determine what is, and what isn't, typical.

Or, if you can provide clarification of what the IAM is all about and, more specifically, what is normal or typical in a stock 2.5 non-turbo, then that would also be welcomed.
 
See less See more
#2 ·
I have a 2007 Impreza 2.5I in the shop right now, its stock, non turbo, no known driveability issues. I plugged in two scan tools that have enhanced powertrain capabilities but neither of them displayed IAM. They both had a PID for learned ignition timing, I wonder if that is translation for the same thing? It read as 0%.

I plugged romraider in (first time I've used it) and found IAM. It was at .25 and stayed there for the duration of a 1 mile test drive. I logged it along with every other timing based PID I could find and TPS and RPM.

This is a customers car so the octane is unknown and it should also be noted that it was in for EVAP repairs and the codes were cleared yesterday. So if IAM is reset with a code clearing it may not be an accurate representation of a learned value.

This is the first I've heard of IAM but I'll look around in some tech info to see if I can find any info on it for you, if any other Subarus come in and I have the time I'll look into those as well.
 

Attachments

#21 ·
ntippet:

Thanks for the confirmation. I'll have to hold on the ROM download for the time being.

Okay, back to the question of the IAM figures that others with the same engine (2006-2009, 2.5, non-turbo) are finding.

I have a 2007 Impreza 2.5I in the shop right now, . . .

I plugged romraider in (first time I've used it) and found IAM. It was at .25 and stayed there for the duration of a 1 mile test drive. I logged it along with every other timing based PID I could find and TPS and RPM.

. . . I'll look around in some tech info to see if I can find any info on it for you, if any other Subarus come in and I have the time I'll look into those as well.
When the ECU is reset, the IAM goes to a default setting of 0.5 (verified in the ROM tables I have), and then will go up in steps as the knock control adds timing while checking for knock. The 0.25 is well below that. I've read one other post in the Romraider forum where the IAM was that low (below the default), but I don't recall if there was a resolution.
 
#3 ·
That's great!

There is some information about IAM in the Romraider web-site. I'm still trying to understand it.

RomRaider - Open Source ECU Tools | RomRaider / How to Understand Knock Control

RomRaider - Open Source ECU Tools | RomRaider / IAM

There is also a more detailed explanation in a thread linked in the first reference above: RomRaider ? View topic - Subaru's knock control strategy explained

If you are able to find other explanations and can post/link them, that would be much appreciated.

My bottom line question will probably be: If the IAM is less than "1", is that indicating something that's not optimal? Is it something to be concerned about? Could it lead to problems? (Could the IAM be a factor leading to, or a precursor of the infamous P0420 code?)
 
#6 ·
There is also a more detailed explanation in a thread linked in the first reference above: RomRaider ? View topic - Subaru's knock control strategy explained
That was a good read, thanks.

My interpretation is that the system must be perceived as modal, and IAM is an artificial register affected by several factors. IAM must be considered with its modal counterpart, Fine Learning Knock Correction or FLKC.

It would appear that the ECU decides (we'll deal with that later) whether to set timing by IAM mode or FLKC mode, then this mathematical model is created with an output register: either IAM or FLKC.
 
#4 ·
others that link laptops to cars, may have some suggestions:

@ntippet (mr. originator of such threads here)

@west_minist (the wise man of barbados)

Edit: and I need a new power source for my laptop,...so my issue will be shelved for another week.
 
#10 ·
@plain OM
Most, if not all of your questions regarding IAM / Timing Tables / Feedback Knock Correction can be answered if you open your ECU ROM in Romraider or ECUFlash.
If you haven't already downloaded your ECU ROM this one can be substituted in its place: E2UG001B (Probably the exact same one as yours)
RomRaider ? View topic - Definition Request 2007 Subaru Outback AT cal ID E2UG001B
RomRaider ? View topic - 2007 USDM Legacy Outback 2.5i AT CALID:E2UG001B (4B12148007)

Open the ECU table you have questions on and go to the table info.
Every table is defined and described how the ECU uses them / also how they respond to other tables and values.
Most also include the formulas the ECU uses for calculations like:
Total Timing = Base Timing + Knock Correction Advance + Other timing compensations
Knock Correction Advance = (Timing Advance Maximum * (IAM)) + feedback knock correction + fine learning knock correction

Plus it will be good to see all the engine tables for yourself and see how they work together/ improvements that can be made say on: DBW requested torque, timing, CL/OL delay, targeted A/F ratio....ect...

That being said:
For your original question the IAM should be at 1 for a 32 bit ECU.
If it is not, the ECU is pulling timing for some reason.
One main reason for this is usually due to knock events being detected.
Or bad gas can do it.
Sometimes adjustments in fbkc & ignition timing tables need happen to correct IAM that won't hit a max of 1.
The ECU will always attempt to advance the multiplier unless a sensor value is out or knocking continues to occur.

Another clue for flkc, what load and RPM ranges the ECU is pulling timing is to use Learning View:
http://www.romraider.com/forum/viewtopic.php?f=32&t=7397
 
  • Like
Reactions: eagleeye
This post has been deleted
#12 ·
ntippet:

Thanks for the detailed response.

The linked thread for the 2007 USDM Legacy Outback E2UG001B was for my ROM. I hadn't uploaded it, but apparently kevrevd had a few months ago but I hadn't caught it. dshultz found it last month and posted the Romraider definitions. So I now have the proper ECU definitions and LTV, which is what I was looking for, is now working.

As a result, I'm not familiar with downloading the ROM from the ECU and examining the "ECU table". But I'll research it further (or if you can provide some more insights as to how to do this, that might be nice). merchgod's explanation of knock control (third link in post # 3 above) goes into some detail, but perhaps I should see it first hand.

In regard to the fuel, I pretty well always use "Top Tier" major brand fuels from stations that have good turnover. It does appear that the IAM "should" be at "1", at least that was my initial understanding from reading the articles on the Romraider website, but then there's the specific example of what might happen if 87 octane fuel is used. In my case the IAM has been lower, for several years at least, although that's based on only two or three points in time. (I don't have any info prior to Nov 2011 when I first started using Romraider). It's this relative stability that has me wondering what others with the same engine might be finding. Of course, I guess it's also possible the IAM is actually moving up and down between the times I've logged it, which could relate to fuel or other factors at the particular time. But I don't have a sense that this is the case.
 
#13 ·
When is the last time the ECU was reset?
Starting from a stock baseline you should be able to watch IAM rise to 1 over a couple days of driving.
Or if you drive enough miles and different engine loads in 1 day it will probably get to 1.

Not much to looking at the ECU ROM.
Make sure you have the latest Romraider ECU Edit version or ECUFlash version.
Download the E2UG001B rom and choose file -> open rom in the program
It should recognize it and populate the available tables.
You might need to change the access level to developer or whichever is the highest in the program options to be able to see every available table for the ROM.
 
#14 ·
ntippet

Thanks again!

Last ECU reset probably was when I changed the battery in late 2013. I haven't had to do so at any other time, and I don't think the dealer ever did either. So there was a reset between the IAM data I have (2011 and now).

I have the E2UG001B .bin file that dshultz found in the Romraider forum, and followed your instructions. Wow, lots of tables to look at! Much appreciated; now to go through them, especially the ones related to timing, and figure out what it all means. (I do see where the formulas etc are presented.) Do the blue, aqua, orange and red colors signify something and is it the same for all the tables?

I am working on setting up a "second dashboard" with Romraider or BtSsm on a tablet or smartphone, and should be able to have the IAM on the screen. This is getting interesting! (Just as the FreeSSM thread, which you started, set me, and perhaps others, on new paths and is still increasing our understanding of our Subarus.)

For those wondering what it looks like, I've attached a screen shot.

But, I'm still hoping some of the folks who are able will post their IAM data, just to provide a reference.
 

Attachments

#16 ·
The colors are arbitrary, don't mean much beyond a quick visual to differentiate between values.
Start digging and learning, there is a LOT to learn here.
I am sure you will pick up on it quickly.

Some other things to try as well.
You can view in real time what value the ECU is using from a specific table while the engine is running/ driving.
Its called overlay, and you need to log specific PID's for each table in order to do it.
Romraider FAQ:
"What does the log overlay do?

This actively highlights the current cell(s) in a particular table that the ECU is accessing while the engine is running. This is very useful for dyno tuning or for narrowing down a drivability problem in a road tune. To use, first open your ROM in RomRaider and open the table you wish tune. Check the “overlay log” box in the table’s window. Open the Logger and select the parameters that exactly match the row and column units for the table in question. The current cells that are essentially being accessed will now be highlighted real-time. Additionally, some tables allow for the current logged value to be displayed along with the table’s value."

Example:
To view AVCS table overview you would log:
X-axis: Engine Load (4-Byte)* (E32), in g/rev.
Y-axis: Standard parameter P8, Engine Speed in RPM.

New romraider versions have implemented learning view and CEL codes directly into the software, so might be worth looking at that too.
 
#17 ·
ntippet:

I'm not anticipating tuning at this time, but I do look forward to better understanding of how things work.

The ECU definitions that I'm using for Romraider logger were generated from a ROM (.bin) file that someone else uploaded to the definition request forum. (See post # 10 above.) It had the same ECU ID as mine (4B12148007), and I understand from this that the ECU definitions derived from it apply to my ECU equally. But would the numbers in the tables of that ROM (.bin) file necessarily be the same as the data that would be in the tables of my ROM? In other words, even though I have the definitions for the ECU to use with the logger, I would still need to download the ROM from my ECU to see what the numbers in the tables of my ROM look like?
 
#18 ·
It should be the same or very similar.
Subaru sometimes have TSB's or ECU updates that get flashed to the vehicle at the dealer. (as you already know)
Say if your Outback received an update that his did not.
The minor differences that Subaru implements in the updates should be the only difference, otherwise the same.
(Unless there are US vs CAD differences in the ROM I am not aware of)

Another useful resource this provides is an extremely quick method to compare 2 ROMs & highlight the differences between them.
Say if you wanted to compare the updated ROM from a TSB bulletin to one straight from the factory.
Romraider will do this with Table Compare.
 
#19 ·
The versatility of Romraider keeps growing, well beyond the "let's run a log and see what's happening", which itself has been a valuable addition. It's ability to provide an in-depth view what the ECU is doing also demonstrates the highly sophisticated nature of the engine control system, similar to what we found with the AWD transfer clutch control.

It might be nice to have my own ROM to both study and compare; however, I'm under the impression that the Vag-Com cable probably can't be used to copy/download it -- I'd need a Tactrix type of adapter.

When the ROM is "tuned", I presume that the numbers in individual cells are changed in the Editor, and then the modified ROM file is saved to the ECU. Is there any way to tell from a downloaded ROM (such as the one I have) if one or more cells has been changed, other than by comparison with a known original, or Subaru-flashed, version? (I have to do yet more reading on the Romraider site.)
 
#20 ·
Other than reading your exact rom and comparing it to a known.
No I don't know of a way to find that out.
Yeah you will need a tactrix to read and flash them for the newer CAN based Subaru's.
Vag Com will do 04' and older if you modify it, which is what I did for my 04' outback and other STI's from the same year.
 
#22 ·
Have you verified IAM is being displayed correctly in romraider? You should be able to calculate IAM based on base timing and total timing in the logs. To see if they in fact match.
 
#23 ·
Does that mean Total Timing from a log divided by Base Timing (determined from engine rpm and engine load g/rev) should equal the reported IAM?

If that's the case it's way off. In a recent idling log, the total timing (15 degrees) and the base timing at idle from the ROM table are much the same, whereas the reported IAM was 0.6875.

In an earlier log cruising at 102 kph, the reported Total Timing was about 40 degrees. According to the Base Timing table, at the reported engine load and rpm, the total timing should be about 34. So although the IAM would suggest the total timing should be 34*0.75, or 25 degrees, the reported timing is higher, rather than lower, than the Base Timing.

Something isn't right.

The ROM timing table "properties" note indicates that:

Total Timing = base timing + knock correction advance + other timing compensations,

where

Knock correction advance = (knock correction advance max map value * current advance multiplier) + feedback knock correction + fine knock correction.

In regard to the second formula, feedback knock correction and fine knock correction are available from the log as "Feedback Knock Control (4-byte)" and "Fine Knock Control (4-byte).

Also "knock correction advance max map value", I believe, is taken from a table entitled "Knock Correction Advance Max A", but I'm not sure if this "value" is the highest value in that table regardless of location in the engine speed/engine load grid or something based on engine speed and load.

Nevertheless, a quick set of calculations using the formula and the reported data (including reported IAM) did not result in a Total Timing figure similar to what Romraider was reporting.

I might not be doing the calculations properly, or perhaps the logs I have aren't done correctly.
@traildogck

I have tons, logs I mean...just turbo data.
Do you also have your ROM file? Do you have all the related PIDs in your logs? If so, could you try this same approach to see if the IAM, Total Timing and Base Timing come together consistently?
 
#24 ·
#25 · (Edited)
Yeah FBKC and FLKC feed into the calculation as well.
The link posted before explains the ignition advance/knock correction strategy very well.
RomRaider ? View topic - Subaru's knock control strategy explained
Re-read the whole thread, and then realized the problem in trying to calculate the IAM. Here's my current take on it . . .

In order to calculate the IAM, we have to take into account all the relevant parameters in the equations. And in doing so, we realize that the IAM has no effect on Total Timing unless the combination of engine speed and load puts the Knock Correction Advance Max in a non-zero cell.

In the idling log I used earlier, Total Timing was around 15 degrees. This is also the Base Timing with the same low rpm, low load conditions. So IAM, which Romraider is reporting as 0.6875, doesn't seem to match with those figures at all.

The reason appears to be in

Knock correction advance = (knock correction advance max map value * current advance multiplier) + feedback knock correction + fine knock correction.

and in particular

knock correction advance max map value * current advance multiplier,

where "current advance multiplier" is the current IAM.

Here's the knock correction advance max map table:



At idle, the rpm is around 700 and the engine load at around 0.21. At these levels the Maximum Knock Correction Advance is 0.00, meaning that the IAM has no effect in the calculation of Knock correction advance, and with it at zero and the other factors also at zero or very low, the Total Timing = Base Timing. (Which also means that the IAM cannot be verified from these parameters.)

Based on posts in the linked thread, it appears that the IAM is active and subject to change (increase or decrease) only when the driving conditions meet certain conditions. (As rasterman noted, the IAM "mode" is being used.) As long as they are not reached, the IAM has no operational effect on Total Timing. Instead, Total Timing is determined by

Total Timing = Base Timing + feedback knock correction + fine knock correction + other timing compensations. And, as in the table above, the latter corrections tend to be small or zero in much of the tables' cells.

I hope I'm on the right track . . .

p.s., still hope others with a 2006-2009 2.5 non-turbo, running on regular (87) fuel, and with a way to view the IAM, will post findings for comparison.
 

Attachments

#26 ·
Been working on this on-and-off and thought I'd add another aspect, namely, that the A/F Learning (LTFT) tends to be somewhat high when the engine is off idle, but within reason at idle. It's been this way ever since I could monitor it (Nov 2011) and there hasn't been any significant change. Sort of makes me wonder if the ECU is programmed this way. But I'd need comparable data from much the same cars (2007, 2.5, non-turbo, AT, not CA-spec preferably, and up-to-date on ECU re-programming recalls). A Romraider log with fuel trims at various engine speeds would do it, I think. Anyone . . . ?

Here's a table of "learned values" that shows how the ECM is adding fuel as the engine MAF/rpm increases above idle.

 

Attachments

#27 ·
I highly doubt that the ECU is programmed to have the trim go into the positive off idle. At least I am not familiar with any models that behave that way.


In OBDII data there is a PID called the Equivalency Ratio (it may be labeled as EQRAT or something similar depending on the scan tool used). This PID displays as a lambda style reading of 1.0. When the computer commands a fuel mixture of something other than 14.7:1 it will show up in the EQ Ratio PID. So when you are accelerating (enrichment) you can expect to see this PID below 1.0 and when decelerating (fuel cut) you can expect to see it above 1.0. As far as I know the LT and ST trims should always be around 0% when the engine is in closed loop, unless it is correcting for something and they aren't programmed to intentionally go + or -. If you want to know if the ECM is intentionally commanding a rich or lean condition look and see if you can find equivalency ratio data. They started mandating EQ ratio it at some point but I'm not sure when. Keep in mind that this is OBDII and may or may not show up in manufacturer specific data.


First place I typically look for positive trims of idle is from a dirty Mass Air Flow sensor. Have you ever inspected, cleaned, or replaced it and monitored before and after? Do you have any data logs of the ST & LT trims, O2's, MAF, calculated load, and RPM during idle, acceleration, and cruise?


Also have you ever monitored this data in a generic OBDII stream?
 
#28 ·
I haven't been using the OBD data stream, but probably can with Romraider. (The "Target Equivalence Ratio" is listed in the FSM under the OBDII table of PIDs.)

The A/F Learning (LTFT) is additive to the base fuel delivery rates programmed in the ROM. It does appear that the ECM, in order to maintain the A/F ratio (14.7:1), as indicated in the logs, is indeed adding fuel at the off-idle rpm, and this is done in ranges linked to the intake air flow (MAF g/s).

I cleaned the MAF, with no apparent change. It's possible that the MAF sensor itself is defective, and has been for some time (there's been little change in the LTFT additions over three years I've been able to monitor the data). I haven't gone as far as getting a new one yet because of the cost. In this regard, I'm trying to see if there's PIDs (alone or in combination) that can verify whether or not the MAF sensor is off. Certainly, if it's under-estimating the actual air flow, it will register a lower air intake signal. The ECM will set the fueling rate relatively lower based on the lower MAF rate. The A/F sensor will then detect a "lean" condition (not enough fuel for the actual, higher, rate of air intake), and in closed-loop the ECM will then add fueling to bring the A/F back to 14.7:1. This, I believe is one possibility that would be consistent with the data in the above table. The fact that the data hasn't changed to any degree suggests the root trouble/cause itself, if there is one, has been "stable" for a long time.

I have a number of logs of available parameters. Recent ones are being made using BtSsm, which uses the SSM data, rather than OBD II stream, but all my logs, going back to 2011, show essentially the same engine load g/rev versus AF Learning (LTFT) relationship. The ECM has always been (or appears to be) adding fuel when the engine rpm rises off idle, and, as in the table above, the rate of addition increases with engine air intake (g/s).
 
#29 ·
You've cleaned the MAF. The next best thing to do would be to check fuel pressure. That would help you eliminate the pump, filter, pressure regulator, or injectors.

If you have no way to do that yourself the next cheapest thing may be to throw some injector cleaner into the gas tank and see if things improve over that tank of gas. If any one or more are restricted the ECU will command more injector on time to compensate for the lack of fuel, which is the fuel trims you see. I don't think any bottle of cleaner from Canadian Tire is more than $15. That may or may not prove anything though.

I don't know if the fuel filter is cheap/accessable on an 07 2.5 but that's an option too, to replace it if you haven't or haven't recently according to the maintenance schedule.
 
#30 ·
cracklincrotch:

Thanks for the reply -- much appreciated. Gets me thinking . . .

I had thought of fuel delivery as an issue, but have tended to discount it. The A/F Learning addition pattern hasn't changed to any significant degree in over three years, and I would have expected that a blocked fuel filter or failing pump would have led to further deterioration. Also, I've always used "top tier" fuels which are supposed to help keep the injectors clear, and, a bottle of Techron (the Chevron additive) hasn't resulted in any "improvement" (if the LTFT data is reflecting a real problem at all). Other than just seeing what looks like odd data in Romraider and BtSsm logs, there hasn't been any apparent engine symptoms that I'm aware of that would indicate fuel supply/delivery issues. Unfortunately, the fuel pump motor, pick-up filter, and pressure regulator are all part of the fuel pump assembly in the tank, so there's no easy way to try substitution.

Hmm . . .Could one problematic injector (out of four) cause the ECM to add fuel in this way . . . in order to maintain the correct A/F ratio?
 
#31 ·
You likely don't feel any symptoms because the engine is still in fuel control. +12% does not mean it is running 12% lean, it means it is correcting for a 12% lean condition to be able to run at stoich, of course I'm certain you are familiar with that idea. Often it is only after the fuel trims can no longer correct for the problem that you can feel the symptoms and at this point a lean or rich code would likely be set. That said if you lost one injector on a 4 cylinder engine, that is 25% of the engine just pumping air, you would see this as approximately a 25% positive increase in fuel trims. The ECM can make a 25% correction, if 12% was in short term and 13% was in long term a lean code would not set but obviously you would feel the symptom, and likely have a misfire code. So sure, a single injector could be 50% clogged or have an electrical issue that causes it to not open properly and give you a +12% increase in trims, but I would also expect to see a +12% trim at idle if that were the case.

A big part of the reason for my asking people to log the data that I ask from them and drive a specific type of test drive is to is to rule out possibilities. At idle your fuel trims are normal right? Off idle they start to go positive. So you can rule out a vacuum leak be the issue. If you watch your O2 sensors on full throttle acceleration with a heavy load and they stay pegged rich all the way through red line you can rule out a fuel supply issue. Then you can start focusing on other areas.

I have some MAF testing info from some classes I have taken and research I've done, I'll dig it up and post it when I get a chance.

Also, improper air flow/turbulence to a MAF can cause trim shifts (some after market setups or an improperly installed air filter for example).
Is your airbox stock, all sealed up, and in good shape?
 
#32 ·
cdc:

Appreciate the insights; keeps me in a thinking mode . . .

Car is all stock and in good shape.

If you can find the MAF testing info, that would be appreciated.

I have to give the fuel deprivation idea more thought . . .. It's always been a consideration.

If you have a suggestion for data to examine, I can look at what I already have, or run new logs.

I do wish someone with a 3rd gen with the same engine etc could provide a reference log. The ROM was reflashed in early 2011 according to the WVU-31 recall, and I wonder if that changed the ROM fueling and timing tables. If another engine with that update shows similar numbers, that would be a strong indicator.
 
#33 ·
To check the fueling and timing with a data log you will at least need to log, and in no particular order:

Front AF sensor ratio, AF learning, AF correction, AF sensor voltage, rear O2 voltage, engine speed, engine load, throttle position, accel pedal position, MAF voltage, MAF g/s, total timing(4 byte), fine learning knock correction (4-byte) feedback knock correction(4-byte) IAM, base timing (4-byte), knock correction advance(4-byte), injector duty cycle
 
#34 ·
Thanks.

Most of my logs have those parameters (and more), especially the more recent logs made with BtSsm. Small differences -- some are the same parameter but not necessarily the 4-byte version. And, I don't see "base timing" in the list of PIDs available from the ECM in my 07 2.5 (FSM). (Base timing is, however, stored in a table in the ROM.)

cdc suggested "equivalence ratio"; "Target equivalence ratio" is available, but only when using the OBD, rather than SSM, communications protocol. I have to read up on it to better understand what it represents.
 
This is an older thread, you may not receive a response, and could be reviving an old thread. Please consider creating a new thread.
Top