Introduction
It took me a long time to understand fuel trims, despite excellent videos by 50skid and excellent posts by JFOJ. I think I have a handle on them now, so I thought I would try to explain them as I understand them, and either help someone and/or get corrected. Here is my shot.
Theory
Fuel trim is adding or removing fuel from what the ecu would have expected to deliver in order to maintain the right fuel/air mixture. Factory range is +/- 2.0. Higher or lower is out of spec. Over 11% or so it throws a code.
The proper fuel/air mixture is calculated based on the volume of air as measured by the MAF and a map that contains assumptions about fuel pressure, injector diameter and flow rate, etc. The precat O2 sensors measure the exhaust gas and determine if the combustion was complete, meaning the correct balance of oxygen and fuel (stoichiometry).
Fuel Trims
Positive fuel trims mean that the ECU is adding more fuel (hence positive) because the precat O2 sensors are measuring excess oxygen after combustion. The ECU presumes that if there is excess oxygen in the exhaust, the mixture needs more fuel - the percent represents the change in the fuel delivery volume. Positive fuel trims are common (as in universal) with e46s at around 125-150k. These are called “lean” because they are adding fuel to a mixture that has too little fuel. Over the long term, positive trims can contaminate the cats. This means positive trims above 3%, not just the ones that trigger P0171/P0174 codes.
Negative fuel trims mean the exhaust has excess un-combusted fuel - the ratio of fuel to oxygen is too high and the ECU is saying pull back on the gas. Negative fuel trims, called “rich” because they are adapting to a higher fuel ratio, are very uncommon.
The Long and Short of it
Long term fuel trims, which can be positive or negative, are “adaptations” calculated by the ECU based on patterns of fuel trim adjustments. Think of long-term as how much weight you gained on average after 40. You may go above or below if you diet or slack off, but it is unlikely that you will ever again be at your 22-year-old fighting weight. High LTFTs mean that your lean or rich condition is persistent, and it represents a baseline trim level. Short term fuel trims are instantaneous adjustments. The actual trim combines them both.
Note that “Resetting Adaptations” erases the LTFT compensation. Don’t do this. LTFTs will adapt naturally in a relatively short time after any repair.
A rich condition (negative fuel trims) doesn’t happen often in our cars. It can be leaky injectors that deposit more fuel than the ECU expects when it signals the injector. Not worth spending lots of time in this post on rich conditions.
A lean condition (positive fuel trims) is where the money is for our aging e46s. When it gets bad it causes P1071/P0174 codes and also various misfire codes like P0303, etc.
So why do we get lean conditions? Why would the exhaust indicate less fuel or more air as read by the pre-cat sensors (the trigger for additive trim)? The ECU does what it can with what it has, and what it has works beautifully until it doesn’t, mostly because it is built on a mountain of assumptions that, over time, stop holding up.
The ECU, for example, knows how much fuel it is asking the injector to dispense (across 2 banks and 6 cylinders), how much air is entering the intake boots per the MAF, and what the O2 sensors are saying about the post-combustion O2 levels. And it has its own logical programming to respond to these signals. Oh, and it gets rudimentary monitoring of voltages of the O2 and MAF sensors.
What Can Go Wrong?
One last important part of the topology of the ignition control system - there is one MAF sensor, six coils, six injectors, two knock sensors, two camshaft position sensors, and two pre-cat O2 sensors. Since any or all of these can have issues, it is very hard to be precise. When you see a misfire in cylinder 4 or an O2 sensor issue in bank 2, take it with a grain of salt. These are not precisely isolated ignition pathways.
If there is a misfire in cylinder 4, and when you move the plug or coil the misfire moves with it, it is the plug or coil. But many times it won’t, because the issue is actually upstream or downstream of that cylinder. (So don’t replace all your coils immediately when you get a misfire)
Indirect Diagnosis
If you are still with me, then you know that sensors, fuel delivery, and air measurement are the big three causes for lean codes. When you get codes, there is a nice, orderly diagnostic routine that works well, and a heuristic for interpreting the fuel trims.
If we look back at the three ways that the ECU can be triggered into adding fuel, they boil down to sensors not reporting correctly, fuel delivery issues, and unmetered air.
The second approach is by directly diagnosing components. The sequence of diagnosis is important, as the earlier tasks are easier, cheaper, and more definitive, and the latter only really work because you have ruled out the systems from the former.
Fuel Delivery
I recommend you start with fuel delivery. It is very easy to do a good enough diagnostic and rule the pump and filter in or out.
[note 12/21 @drbobme1] If the pressure drops quickly after shut down then the one way valve in the fuel pump is bad. The regulator built into the fuel filter does not have a one way valve.
Vacuum Leaks
In most threads on e46fanatics, if there is a lean code, folks will say vacuum leak for one very good reason: because our old cars with rotting rubber tend to start leaking like sieves.
In the M54, vacuum leaks happen everywhere a seal, gasket, cap, boot, or o-ring is used within the “circle of trust” that we call the intake. To truly diagnose, get a smoke test. I recommend going to a shop and have them smoke test it. When they have precisely located the leak(s), deal with it(them), then proceed to replace all the rest of the rotting rubber if original or compromised, including:
MAF and O2 Sensors
We test the O2 and MAF sensors last because they are much harder to test. So part of the logic is “If you fixed fuel pressure and vacuum leaks, and your fuel trims are still high, replace the sensors.” I want the logic to be more elegant than that, but suspect it ain’t.
You can test the O2 sensors somewhat by graphing them with an OBD tool and comparing them against known good values. For me, I note that the maintenance interval for pre-cat O2 sensors pre-facelift is 100k miles, and facelift is 125k. Odds are yours are older, just replace them. Bosch only.
MAF is always last, mostly because in the early, glamorous period of battle folks find it a lot of fun to replace coils, and there is usually no budget by this point. The MAF is also last because it is very hard to test. Yes, less than 3.9g/s at idle is a good indicator of laziness, but you likely don’t have the testing equipment to do better than that. If you have ruled anything else out, or are over 175k miles, replace the MAF sensor with VDO/Siemens only - no RockAuto, eBay, or Amazon!
MAF Tips
If you have gotten here, thank you. You are brave and true, and a little compulsive, but in a good way. I will leave two parting notes:
It took me a long time to understand fuel trims, despite excellent videos by 50skid and excellent posts by JFOJ. I think I have a handle on them now, so I thought I would try to explain them as I understand them, and either help someone and/or get corrected. Here is my shot.
Theory
Fuel trim is adding or removing fuel from what the ecu would have expected to deliver in order to maintain the right fuel/air mixture. Factory range is +/- 2.0. Higher or lower is out of spec. Over 11% or so it throws a code.
The proper fuel/air mixture is calculated based on the volume of air as measured by the MAF and a map that contains assumptions about fuel pressure, injector diameter and flow rate, etc. The precat O2 sensors measure the exhaust gas and determine if the combustion was complete, meaning the correct balance of oxygen and fuel (stoichiometry).
Fuel Trims
Positive fuel trims mean that the ECU is adding more fuel (hence positive) because the precat O2 sensors are measuring excess oxygen after combustion. The ECU presumes that if there is excess oxygen in the exhaust, the mixture needs more fuel - the percent represents the change in the fuel delivery volume. Positive fuel trims are common (as in universal) with e46s at around 125-150k. These are called “lean” because they are adding fuel to a mixture that has too little fuel. Over the long term, positive trims can contaminate the cats. This means positive trims above 3%, not just the ones that trigger P0171/P0174 codes.
Negative fuel trims mean the exhaust has excess un-combusted fuel - the ratio of fuel to oxygen is too high and the ECU is saying pull back on the gas. Negative fuel trims, called “rich” because they are adapting to a higher fuel ratio, are very uncommon.
The Long and Short of it
Long term fuel trims, which can be positive or negative, are “adaptations” calculated by the ECU based on patterns of fuel trim adjustments. Think of long-term as how much weight you gained on average after 40. You may go above or below if you diet or slack off, but it is unlikely that you will ever again be at your 22-year-old fighting weight. High LTFTs mean that your lean or rich condition is persistent, and it represents a baseline trim level. Short term fuel trims are instantaneous adjustments. The actual trim combines them both.
Note that “Resetting Adaptations” erases the LTFT compensation. Don’t do this. LTFTs will adapt naturally in a relatively short time after any repair.
A rich condition (negative fuel trims) doesn’t happen often in our cars. It can be leaky injectors that deposit more fuel than the ECU expects when it signals the injector. Not worth spending lots of time in this post on rich conditions.
A lean condition (positive fuel trims) is where the money is for our aging e46s. When it gets bad it causes P1071/P0174 codes and also various misfire codes like P0303, etc.
So why do we get lean conditions? Why would the exhaust indicate less fuel or more air as read by the pre-cat sensors (the trigger for additive trim)? The ECU does what it can with what it has, and what it has works beautifully until it doesn’t, mostly because it is built on a mountain of assumptions that, over time, stop holding up.
The ECU, for example, knows how much fuel it is asking the injector to dispense (across 2 banks and 6 cylinders), how much air is entering the intake boots per the MAF, and what the O2 sensors are saying about the post-combustion O2 levels. And it has its own logical programming to respond to these signals. Oh, and it gets rudimentary monitoring of voltages of the O2 and MAF sensors.
What Can Go Wrong?
- The sensors could be wrong - a lazy MAF sensor may be reporting less air than is actually getting into the intake, lazy O2 sensors could be reporting O2 levels “late,” which is like playing the stock market with last week’s newspaper. Remember that there are no “sensors on sensors,” meaning that the ECU can only divine that readings are anomalous, not that a sensor has failed. This is really important - there is no extra sensor double-checking the O2 and MAF sensor values to make sure they are measuring correctly. So while there are codes when they fail to report, or where the O2 sensors don’t heat, or even the camshaft sensors fail to report, the lack of a sensor-related code does not mean that the sensor is working properly. In fact, the presence of a code with a sensor name is often an indicator of a problem that is not caused by the sensor itself.
- The sensors could be right, but there could be additional air entering after the sensor. Imagine a movie theater where the ticket taker is assiduously counting how many people enter the theater, but someone has wedged a door open behind her and is letting people in. The ticket counter is meticulous, however, they are monitoring a corrupted system. The count that the ticket taker has of attendees will likely be less than the number of people who leave after the film. This situation is called “unmetered air” which just means that air is being drawn into the combustion chamber behind the MAF. If you haven’t guessed yet, “unmetered air” is a fancy way of saying “vacuum leak.” The crankcase and intake operate with a vacuum, and the main openings are the actual valves and the airbox. Everything else is sealed tightly with seals, o-rings, gaskets, and plugs. If any of these seals fail, for example, a cap falls off the back of the intake or a rip develops in an intake boot, the vacuum will draw air into the intake behind the MAF like the open door at the theater behind the ticket-taker.
- The ECU may be sending pulse commands to the injectors and not getting the volume of fuel they expect. The fuel system does not have flow meters in the injectors, it only speaks in pulses. The calculation of fuel volume is a function of the expected delivery of fuel per unit time when the injector is activated, which can be calculated by flow rate at a consistent pressure. Do you see the potential issue? Yup, the ECU cheats by “assuming” 50 PSI fuel delivery. If the pressure is low (or high) then a pulse isn’t delivering the expected fuel volume.
One last important part of the topology of the ignition control system - there is one MAF sensor, six coils, six injectors, two knock sensors, two camshaft position sensors, and two pre-cat O2 sensors. Since any or all of these can have issues, it is very hard to be precise. When you see a misfire in cylinder 4 or an O2 sensor issue in bank 2, take it with a grain of salt. These are not precisely isolated ignition pathways.
If there is a misfire in cylinder 4, and when you move the plug or coil the misfire moves with it, it is the plug or coil. But many times it won’t, because the issue is actually upstream or downstream of that cylinder. (So don’t replace all your coils immediately when you get a misfire)
Indirect Diagnosis
If you are still with me, then you know that sensors, fuel delivery, and air measurement are the big three causes for lean codes. When you get codes, there is a nice, orderly diagnostic routine that works well, and a heuristic for interpreting the fuel trims.
If we look back at the three ways that the ECU can be triggered into adding fuel, they boil down to sensors not reporting correctly, fuel delivery issues, and unmetered air.
- If you get high trims at idle and low trims at cruising speed, then you likely have a vacuum leak. Leaks are rarely large. At idle, a relatively small amount of air is entering the system, and the amount of unmetered air from a leak is a larger proportion. So it will have a bigger effect. At wide-open throttle, huge amounts of air are entering, so the unmetered air becomes inconsequential (and the ECU can’t measure the exhaust fast enough anyway) If you unplug the MAF sensor and the engine runs better, you have a vacuum leak. The ECU isn’t getting data from the MAF so it reverts to its default fuel/air map.
- If you get high trims at cruising speed and low trims at idle it is more likely fuel delivery. If the fuel pump is soft-failing, it can keep up at idle (the light-duty of supplying 50 PSI at a relatively low flow rate), but can’t keep up at higher throttle.
- If trims are high at both idle and cruise, you likely have a sensor issue (O2 or MAF).
The second approach is by directly diagnosing components. The sequence of diagnosis is important, as the earlier tasks are easier, cheaper, and more definitive, and the latter only really work because you have ruled out the systems from the former.
Fuel Delivery
I recommend you start with fuel delivery. It is very easy to do a good enough diagnostic and rule the pump and filter in or out.
- Get a fuel pressure tester with a Schrader connector. Remove the right beauty cover and attach the sensor to the valve on the rail (sorry fellow SULEV owners, no valve for us!).
- With the key in position 2, and the engine off, the meter should read 50 PSI. If it doesn’t, your pump is likely bad. VDO/Siemens only for replacement.
- Turn the ignition off and wait 20-30 minutes. The pressure should stay near 50. If it falls below 45, then you need a new fuel pressure regulator, which is part of the fuel filter. Note the maintenance interval on the filter is 60k miles, so if it is over that, replace it. I recommend replacing the pump at 120k.
[note 12/21 @drbobme1] If the pressure drops quickly after shut down then the one way valve in the fuel pump is bad. The regulator built into the fuel filter does not have a one way valve.
Vacuum Leaks
In most threads on e46fanatics, if there is a lean code, folks will say vacuum leak for one very good reason: because our old cars with rotting rubber tend to start leaking like sieves.
In the M54, vacuum leaks happen everywhere a seal, gasket, cap, boot, or o-ring is used within the “circle of trust” that we call the intake. To truly diagnose, get a smoke test. I recommend going to a shop and have them smoke test it. When they have precisely located the leak(s), deal with it(them), then proceed to replace all the rest of the rotting rubber if original or compromised, including:
- Valve cover gasket (if older than 100k)
- Intake boots
- DISA seal if original, or if when you remove it you do not experience resistance
- Any caps on the nipples at the rear of the intake
- All small vacuum lines, including those for the SAP solenoid (runs behind the engine), the vacuum canister (330), and the fuel filter line from the F connector on the intake boot
- The CCV
- O-ring on the intake air temp sensor (if present)
- Oil pan gasket
- Dipstick tube and dipstick o-rings
- Air distribution rail o-rings
MAF and O2 Sensors
We test the O2 and MAF sensors last because they are much harder to test. So part of the logic is “If you fixed fuel pressure and vacuum leaks, and your fuel trims are still high, replace the sensors.” I want the logic to be more elegant than that, but suspect it ain’t.
You can test the O2 sensors somewhat by graphing them with an OBD tool and comparing them against known good values. For me, I note that the maintenance interval for pre-cat O2 sensors pre-facelift is 100k miles, and facelift is 125k. Odds are yours are older, just replace them. Bosch only.
MAF is always last, mostly because in the early, glamorous period of battle folks find it a lot of fun to replace coils, and there is usually no budget by this point. The MAF is also last because it is very hard to test. Yes, less than 3.9g/s at idle is a good indicator of laziness, but you likely don’t have the testing equipment to do better than that. If you have ruled anything else out, or are over 175k miles, replace the MAF sensor with VDO/Siemens only - no RockAuto, eBay, or Amazon!
MAF Tips
- Unless you are running a cold air intake, don’t waste money on MAF sensor cleaner. There is no source of chemical contaminants between our air filters and the MAF sensor.
- If your car is 175k or older, it is the MAF
- Unplugging the MAF is not a useful method for diagnosing the MAF.
- As a reminder, while there is a "s**t the bed" MAF code when it simply fails to respond (yes you should replace then), there are no sensors on the MAF that can attest to its accuracy, so don’t expect a code.
If you have gotten here, thank you. You are brave and true, and a little compulsive, but in a good way. I will leave two parting notes:
- If you don’t have the latest software on your ECU, contact @Bali and have it updated to the latest.
- There are many cool and awesome tools like INPA, ISTA+, BMW Scanner 1.4, Carly, fox pro, and more. That said, buy the VeePeak Bluetooth LE adaptor and the OBD Fusion app if you want to maximize the ability of our forum to help you. We just speak OBDFusion.