Last month a customer brought in a 2013 BMW 528i 2.0 liter 4-cylinder because it was not running well and the check-engine light was on. The customer said it felt like the car was hesitating on acceleration, whether the engine was hot or cold. The problem was just a few days old.
We connected the car to the Intelligent Service Technical Application (ISTA) and ran a complete scan. The scan revealed two codes in the digital motor electronics (DME): 102001 (air volume too high) and 118002 (fuel air mixture too rich).
Regular readers of this column know I spend a lot of time explaining fuel trims. Fuel trims are how an engine control module calculates the correct amount of air and fuel. Sensors on the engine (oxygen sensors, temperature sensors, mass air flow sensors and position sensors) send data to the DME, so it can adjust the amount of fuel the engine needs to run efficiently.
When looking at the data, we noticed that both banks of the engine were running -20 fuel trim. If this is correct, the engine is running way too rich.
Diagnosing the problem
After running the test plan on the first code, we knew we had to check for vacuum leaks. This seemed contradictory, however, because the data showed the car running rich. We hooked up the smoke machine to the intake manifold to check for leaks and discovered that the intake duct connected to the turbo charger had a leak. This air duct delivers air that has already been metered by the mass airflow sensor. If there is a leak in this duct, it will confuse the DME and the engine will run incorrectly.
We replaced the air duct (after the customer gave us authorization to do so), then cleared all the codes and test-drove the car. Halfway through the test-drive, the check-engine light came on again.
After reconnecting the car to the ISTA, we did another scan. The 102001 code and the 118002 code came back, along with a new code: 102A22 (mass air flow meter working air mass too high). We performed a vacuum test one more time and found no leaks.
After further testing and research, we learned that BMW had a technical service bulletin for the new code. The bulletin said the car could have a DME reprogramming (software patch) because of incorrect fuel-trim calculation. We told the customer the DME should get the update, but there also may still be another problem with the car.
After updating the DME, we took the BMW on another test-drive. Halfway through the drive, the check-engine light came on once again – with all three codes. This led us to reconnect the car to the ISTA and run the test plan, which asked if there were vacuum leaks and if the DME update had been performed.
Because we knew we fixed the air leak and the DME had been updated, we moved on to the next step. We checked the actual fuel trims again. Correct fuel-trim numbers on a BMW should be on or around 1. When we looked at the fuel trims, they were at -20 on bank 1 and -20 on bank 2.
We then reviewed all of the data. If both banks are reading the same fuel-trim numbers (-20), there are no air leaks and the rest of the engine is working normally, there is a strong possibility that one of the sensors is giving incorrect information. After further testing, we found the mass air flow sensor was giving incorrect data to the DME.
After replacing the mass air flow sensor, we cleared the codes and did another test-drive. No codes came back and we were able to run all the monitors.
Some readers might ask why we didn’t just address the mass air flow sensor in the first place. Because there was a possibility the mass air flow sensor wasn’t bad, we had to perform all the baseline tests first. If we would have replaced the mass air flow sensor first, the car would have set off a code related to the intake air duct leak. In addition, computer software can cause all kinds of problems. The last thing you want to do is replace expensive parts for nothing. As I always say, follow the correct procedure.