BMW and MINI – Diagnosing Common Fault Codes – How To, DIY
Common BMW fault codes: what they mean and how to deal with them.
All BMWs from 1989 on (and some 87 & 88 models) have some form of self-diagnostic capability for the engine management system. When part of the system is performing outside of the parameters set by BMW, a coded note, commonly known as a fault code, is recorded and stored. The “Check Engine” or “Service Engine Soon” light will come on to alert you that a code has been generated. In the past, it was necessary to have a well-equipped shop or a BMW dealer check the codes… and charge you handsomely for the service. Today, you can check these codes yourself using our hand-held fault code reader, saving you the time, trouble and expense of making unnecessary repairs. (Even if you don’t plan on doing the repairs yourself, having a fault code reader is a great way to make sure the shop performs the appropriate repair and nothing more.)
Sometimes the fault will be associated with a noticeable change in your BMW’s performance (e.g. idle fluctuations, running rough, refusing to start, etc.). Many codes are quite clear in identifying faulty parts. Examples of these codes include: “Camshaft sensor”; “Crankshaft sensor”; “Knock sensor”; and “Coolant temperature sensor.” Other fault codes point you only in the general direction of the problem, requiring further investigation on your part. This article addresses some of the more common ones that we are asked about on a daily basis.
Tech Tip: If you have a fault code and there is no detectible change in your BMW’s performance, we suggest that you read the code, record it, erase it and see if it returns. If the code does not return, the fault may have cleared up on its own or the code may have been erroneous in the first place. If the code reappears, it is likely a genuine fault and you should address it.
Fault Codes Indicating Lean Mixtures:
These codes are most typically a result of intake system vacuum leaks. The most common sources of vacuum leaks are cracked or otherwise leaking intake boots, bellows and hoses. A careful inspection of all of the rubber parts in the intake system is a first step in tracking down a vacuum leak.
If no obvious issues are found, a vacuum leak smoke test can be performed. This involves a special machine that forces a smoke into the intake system. If there is a leak, the smoke will leak out at the source of the leak. On later model BMWs that have crankcase ventilation check valves (most 6-cylinder and V8 models from the mid ’90s-on …. equatable to a PCV valve), a common problem is rupturing of the rubber check valve diaphragm, creating an internal vacuum leak. If no external leaks are found, replacing the check valve assembly may be the next course of action.
Fault Codes Indicating Random Mis-fires:
These codes can be related to many possible faults. The most common sources would be vacuum leaks, standard tune-up items, (spark plugs, ignition wires, plug connector boots, coils, etc.), crankcase vent oil separator or check-valve, or oil in the spark plug wells. These codes will typically refer to a particular group, or bank, of cylinders. Here’s what to do:
• Inspect all of the intake-air rubber bellows, boots and hoses for any signs of cracks, loose fittings or whistling sounds (indicating a vacuum leak).
• Inspect distributor cap and rotor (if used) for cracks, very worn contacts or evidence of “carbon tracking” (the spark following a path to ground or another terminal). Inspect spark plugs for excessive carbon deposits or cracking of the insulator.
• Swap coils and connectors to see if the fault moves to the other bank, indicating faulty connectors or coils. Click HERE for DIY videos and articles on replacing ignition coils
• Inspect for oil in the spark plug wells. If oil is present, replace the valve cover gaskets. Click HERE for our DIY article on replacing valve cover gaskets.
• Check for vacuum leaks in the crankcase vent system. (V8 engines and 6-cylinder from the late ’90s/early ’00s on are especially susceptible to this.) Click HERE to see our DIY videos on replacing crankcase vent check valves.
Fault Codes Indicating Secondary Air:
Any codes that suggest anything to do with the secondary air system will be indicating a failure of the secondary air pump, check-valve, vacuum control switch, a vacuum leak between the vacuum control switch and the check-valve or clogged secondary air injection passages in the cylinder head(s). You may notice a rough idle when the engine is cold, noise from the secondary air pump or repeated failures of air pumps caused by not replacing a failed check-valve or vacuum control valve and hose.
Here’s what to do:
• Check the vacuum control of the check-valve. Remove the control vacuum line from the check-valve. With the engine fully cold, start the engine and check for vacuum at the vacuum line. (You must do this quickly! It would be best to have a helper start the engine.) There should be vacuum for the first few seconds of running and then the vacuum should be shut off (by the vacuum control switch) and should not return. If the vacuum does not shut off, or there is no vacuum, the control switch may be faulty.
• Check the check-valve. Remove the larger hose and the vacuum hose (if equipped) from the check-valve. There should be no evidence of carbon deposits in the large nipple of the valve. Start the engine. When the engine is warm, there should be no exhaust coming from the larger nipple on the check-valve. If there is carbon in the nipple and/or exhaust coming from the nipple, replace the valve.
• Typically, when a secondary air code is generated, the pump has failed. We have already checked the other main components in the system which, when they fail, will cause the pump to fail. At this point, we likely will need to replace the pump, as well. Keep in mind, the pump typically fails due to a prior failure of the check-valve and/or the vacuum control switch and hose, and will fail again if the problem(s) is not corrected.
Click HERE for our How-To article on diagnosing Secondary Air systems
Fault Codes Indicating Evaporative & Purge:
Codes relating to the fuel evaporative or purge systems are noting an inappropriate pressure in the fuel tank vent system. Pressure that is too high can be caused by a faulty purge valve, faulty charcoal canister or clog in the system. Pressure that is too low can be caused by the purge valve, a faulty charcoal canister, a leak in the line, or a loose gas cap.
Here’s what to try:
• Inspect the gas cap and the rubber seal on the cap. Make sure the cap is fully and properly seated. Reset the code and see if the fault returns.
• If you are in the habit of filling your gas tank to the top of the filler neck, you have likely introduced fuel into the vapor recovery system and saturated the charcoal canister. Replace the charcoal canister. Even if you do not overfill, if you do not know the history of the vehicle, this may still be the fault.
• Inspect the fuel vapor recovery and fuel vent system (as well as the pressure and return lines) for evidence of cracks or other areas for leakage. We suggest inspection of the system first or replacement of the canister and valve as a first step.
* Other possible causes of these codes include failure of one of the pressure sensors, the purge control/shut-off valve or the diagnostic leak pump.
Fault Codes Indicating Oxygen Sensors:
Oxygen (O2) sensor codes include “out of range”, “too long to closed loop”, “Lambda Control”, etc. These will typically mean the oxygen sensor must be replaced. (Oxygen sensors are generally rated for a lifetime of 60,000 to 100,000 miles.) BMWs produced through 1995 will have one or two oxygen sensors mounted in front of the catalytic converter. BMWs produced from 1996-on will have oxygen sensors both in front of and behind the catalytic converter(s), (referred to as pre-cat and post-cat). There can be up to four sensors – left pre-cat, right pre-cat, left post-cat, right post-cat. The codes will usually indicate which sensor is at fault.
• “Out of range” means that the reading the ECU (Engine Control Unit) is receiving from the sensor is not what it expects for the given conditions. This can be due to an old sensor being slow to react (which can also show up as “slow response” and means the sensor should be replaced), or a vacuum leak in the intake system, or an exhaust leak prior to the catalytic converter, or secondary air problems and other issues that can change the air/fuel ratio. If there are no obvious faults, try swapping the left and right sensors (if equipped), clearing the code and seeing if it returns and indicates the other side. This means the sensor is, indeed, at fault.
• “Too long to closed loop” and “oxygen sensor heater” codes mean that the sensor is taking longer than expected to start sending meaningful data to the ECU (i.e. it is taking too long to heat up). This is typically a fault in the sensor heater. If this is the case, the sensor must be replaced. There are other codes that could state a direct issue with the oxygen sensor heater circuit. In this case, the fault is likely the actual heater in the sensor and the sensor must be replaced, or it could be an issue with the power through the circuit, such as a faulty relay. Additionally, a fault in the secondary air system can contribute to a longer than normal warm up period for the sensor.
• Any codes mentioning “lambda” are referring to the oxygen sensor system. Treat them in a similar fashion to the above points.
Fault Codes Indicating Catalytic Converters
A typical catalytic converter (cat) code would be “cat efficiency too low”. Cat codes will only appear on 1996 and later models that have post-cat oxygen sensors that monitor the efficiency of the cats. The voltage reading from the post-cat sensors is compared the the voltage reading from the pre-cat sensors; the difference tells the ECU if the cats are working properly. When cat efficiency codes are generated, it is always best to consider replacing the post-cat oxygen sensors as a first step. This is because the system may be picking up a post-cat oxygen sensor that is sluggish but is not yet bad enough to register its own fault code. If replacing the oxygen sensor does not clear up the code, you may need to replace the cats, in which case you would need new oxygen sensors anyway.
Fault Codes Indicating Electric Thermostat
Most BMWs 1999 and later have electrically operated thermostats. If codes such as “electric thermostat control” show up, replace the thermostat. Often times, other codes may be present at the same time because the bad thermostat is allowing the engine to run too cool or too hot. After you replace the thermostat, clear all codes and see if any return.
Fault Codes Indicating Mass Air Flow Sensor
There are various codes that refer to the Mass Air Flow (MAF) or Air Mass sensor (MAS). If any of these codes appear, the first course of action is to clean the sensor.
We recommend “Mass Air Flow Sensor Cleaner” aerosol spray from CRC Industries. Remove the sensor from your BMW and follow the directions on the product, spraying the metal plate or wires in the middle of the sensor. Install the sensor and clear the code. If the code returns, there may be a genuine fault in the MAF, which would likely indicate replacement is necessary.
Other Fault Codes
As stated at the beginning of this article, these are just some of the more common fault codes. Our fault code reader comes with a booklet that explains in shorthand what the various codes indicate. We highly recommend having the appropriate repair manual by your side! (Our favorite is the Bentley manual, which is available for a range of BMW models.) Once you have determined the cause of a fault code, the manual will guide you, step by step, through replacing or repairing the offending part(s). If you can’t find the answers to your questions in the manual, feel free to call our agents at 800-535-2002, send us an email at firstname.lastname@example.org or search our blog for more info and answers.