For example, my S40 had negative (~ -10%) long term fuel trim while idling, but when driving, it would normalize and run close to 0%. Turns out it was a partially clogged vacuum ejector (photo here) of the vacuum lines that caused the MAF to read higher than expected by the ECU (The 2.4i has one of the vacuum lines connected between the MAF and air filter, it’s a calibrated air leak). So, with the ejector clogged, the engine now draws all the air via the MAF sensor, therefore causing it to measure more air, and trick the ECU to assume the engine needs more fuel, because of the extra air measured at idle, but then the upstream O2 sensor reports rich air/fuel mixture. All of this resulting in the ECU dialing back the fuel using the long term fuel trim to keep the air/fuel mixture stoichiometric.
Now, the setup on the T5 is different, because it doesn’t have any vacuum lines connected before the MAF, so the only place I can think of that can create a vacuum leak (at idle and light load only) and cannot be detected with the smoke machine is the PCV check valve at the turbo:
This check valve is what allows the PCV to evacuate crankcase gasses when the intake manifold is pressurized with boost. The PCV system always needs a vacuum source to work, otherwise the crankcase builds up pressure. During idle and light load, the intake manifold is under vacuum, but when there’s boost present, the intake manifold gasket has reed valves that prevent the boost going into the separate PCV chamber built inside the lower intake manifold (where the PCV 90° hose connects to). Therefore, the only other possible way of sourcing vacuum becomes the compressor inlet of the turbo. This is where the check valve comes in, it’s connected to the aluminum pipe that goes around the engine (between timing belt and block), and connects to the other brass nipple of the lower intake manifold:
So, the way this ball-style check valve works is while the engine is idling or under light load, the suction of the intake manifold vacuum keeps it shut. And when the manifold doesn’t provide vacuum, then it opens, because the turbo starts spooling and generating lower pressure at the inlet of the compressor housing due to venturi effect.
I’m thinking if the valve is not sealing (due to carbon deposits, or whatever reason) creating a small vacuum leak that it’s not enough to cause a rough idle, but enough to throw off the fuel trims and cause the engine to run rich at idle. Also, it could explain why the MAF correction factor is 0.88 and not close to 1.
I checked about error ECM-120D (Mass air flow. Signal missing), and it says:
The engine control module (ECM) calculates the anticipated mass air flow. The calculation is based on a number of parameters. The calculated value for mass air flow is divided (/) by the measured value from the mass air flow (MAF) sensor (= correction value, mass air flow).
The diagnostic trouble code (DTC) is stored if the correction value deviates from 1 (lower than 1) i.e. the calculated air mass is lower than the measured air mass.
The diagnostic trouble code (DTC) can be diagnosed when the engine is running.
The way I understand that is:
The ECU detects the engine is consuming more air than expected, therefore it’s adding fuel to keep Air/Fuel mixture close to target and not run lean. (This should be reflected on the long term fuel trim as a positive value). This is more noticeable at idle, because there isn’t enough flow and the leak is more apparent and fouls the catalytic converter (with soot/unburnt fuel, whatever it is). Then, as soon you start driving, the ratio of the leak gets reduced exponentially and eventually the cat gets warmed up and burns off all of that, making the rear O2 read rich while the front reads normal.
This is the best theory I can come up with for now.
The fact you had MAF, MAP and other sensor errors could support the theory of the ECU getting contradicting information and not being able to determine if the cat is fine or not
DO NOT IGNORE any other error codes that come up. Write them down and post them here, to see if they’re related to this problem.
I checked the datalogs of mine, and during idle, the MAF actual reading averages ~15.25 kg/h (~4.23 grams/sec). This might not be perfect reference values because ambient temp was 40F, and it’s with the stage 1 cams and the hilton tune.