[click to enlarge]
| All BMWs from 1984 use a sophisticated Bosch engine management system called Motronic. The Motronic system (also called the Digital Motor Electronics or DME) is hands down the best overall fuel injection system that you can use when you consider price and performance. Ignition timing and fuel delivery are all controlled by a digital map that is recorded in a removable chip within the main fuel injection (DME) computer. The computer takes input from a variety of sensors that are located on the engine cylinder head temperature, altitude (ambient air pressure), crank angle, throttle position, exhaust gas oxygen (mixture), ambient air temperature, and mass air flow. The DME chip is programmed from the factory with certain performance characteristics (mostly conservative) so that the engine will react well under a host of varying conditions.|
As with any electronic device, components can fail, triggering problems with the system. The BMW Motronic system is designed to react to these failures and indicate them to the driver, so that they can be fixed. If one of the computer's sensors is not working properly, then the computer may not be able to successfully identify the current state of the engine and choose the appropriate fuel mixture or timing advance level. When this happens, the fuel mileage drops, engine performance suffers, emissions increase, and the car typically illuminates the 'check engine' light.
In order to accurately find the sensor and fix the problem, you will need to find out which error code is being triggered by the computer. Pre-1995 BMWs were equipped with what is known as OBD I (On Board Diagnostics Level I). Stating in 1996, they were equipped with a more advanced version called OBD II, which was mandated by the US government, in order to standardize automotive repair and diagnostics. The OBD system is responsible for monitoring and checking all of the fuel injection sensors and systems in the vehicle, and turns on the 'check engine' lamp if it finds a problem or irregularity with one of them. The computer lodges a Diagnostic Trouble Code (DTC) in the main computer until it is read and reset. Disconnecting the battery does not reset the codes - they need to be manually reset.
For BMWs equipped with OBD I, you can read the codes using a system that is built into the car. For OBD II compliant cars (1996 and later), the codes can only be read using a scan tool (more on this later).
To read codes for an OBD I car, you start by turning the ignition key on (do not start the engine) and pressing the gas pedal to the floor five times within a period of five seconds. If you proceeded correctly, then the check engine lamp will light on for five seconds, then blink off, then blink on for 2.5 seconds, and then go off for another 2.5 seconds. After this, the computer will start to show you the trouble fault codes that are stored.
The codes are given by short flashes of the check engine light, followed by short pauses. The codes are all four digit numbers. For example, the trouble fault code for monitoring the battery voltage level is 1231. This would show up flashing as "flash - pause - flash - flash - pause - flash - flash - flash - pause - flash." I suggest having a pen and paper handy when you do this, as the codes have a tendency to flash faster than you would think.
If there is more than one fault code stored, then each code will be separated by a 2.5 second pause. When there are no more codes to be read, the computer will give the code 1000, which is one short flash, and then the light will remain off. Then the check engine light will flash a half-second and then turn off. To read the codes again, simply turn the ignition key off and on again and repeat the procedure with the gas pedal (five times within five seconds).
Here is a table that represents all of the possibly fault codes that can be read using this method:
|Code||Error||Notes / Corrective Action|
|1000||End of output - no more fault codes||This code shows the end of the stream of error codes, and tell you that the computer is finished showing them to you.|
|1444||No more faults||This code shows that all faults have been fixed. Required to erase the computer's memory.|
|1211||DME Motronic Computer Fault||This may indicate a problem with the DME computer. Most problems result in a dead computer that cannot give out codes, so this particular code is not seen too commonly. If the code does appear, start and rerun the test for about one minute. If the code reappears, then chances are that you need to replace your DME computer.|
|1215||Mass Air Flow Sensor Fault||The mass air flow sensor measures the amount of air that is currently being drawn into the engine. A big hole in one of your fuel injection intake boots may cause the car to stall and generate this code.|
|1216||Throttle Position Switch Fault||The later model Motronic systems used a potentiometer to measure throttle position and adjust fuel levels appropriately. If the 'pot' is not giving off the proper values, it will produce this code.|
|1218||DME Computer Output, Group #1||These two codes can be generated when there is a ground fault short circuit from B+ at one of the two DME Output Amplifier Stages. This code is not typically seen by itself, and is usually generated with a host of other codes. Possible problems may be O2 sensor heater relay, fuel evap system problem, EKP relay, ignition coil problem, a faulty idle speed actuator, etc. If you get this code, disconnect the DME and let it sit for 15 minutes, then recheck the codes. If it persists, and no other problems are found, then it is probably an internal DME problem. If the code goes away, then ignore it and call it an intermittent error.|
|1219||DME Computer Output, Group #2|
|1221||Oxygen Sensor (primary)||The O2 sensor measures the mixture of the car. This code is generated if the sensor is unplugged or broken. Sensor values are read when the engine warmer than 70°C, and should be within 0.02 and 0.85 volts. Negative values indicate that the sensor needs to be replaced, and slow fluctuation indicate that the sensor is clogged with soot. Cars with catalytic converters that have been removed may push this code.|
|1212||Oxygen Sensor (secondary)|
|1222||Oxygen Sensor Lean/Rich Detect (primary) ||If the signal from the O2 sensor indicates a very lean or very rich mixture for more than 10 seconds, then the computer generates this code. It could mean a faulty O2 sensor, or a problem with another component.|
|1213||Oxygen Sensor Lean/Rich Detect (secondary) |
|1223||Coolant Temperature Sensor||Measures the temperature of the coolant inside the engine block. Used to determine if the engine is warm or cold. Check the wiring and the expected resistance value of the sensor.|
|1224||Intake Air Temperature Sensor||Measures the temperature of air entering into the engine's fuel injection system, and adjusts the mixture accordingly. Colder air is more dense than warmer air and needs to be compensated for.|
|1225||Knock Sensor #1||The knock sensor is used to detect pre-ignition that can damage the engine. If the knock sensor is triggered, it will back off the timing of the car, reducing the 'pinging.' A fault is generated if there is an open circuit, a ground fault, or if the sensor sends multiple signals that don't correspond to proper engine operation.|
|1226||Knock Sensor #2|
|1227||Knock Sensor #3|
|1228||Knock Sensor #4|
|1231||Battery Voltage / DME Relay Monitor||Monitors the condition of the battery and charging system, and produces a fault if a component goes out of specification or fail.|
|1232||Throttle Idle Position Switch||On older Motronic systems, this switch was used along with the wide open position switch as a primitive throttle position switch.|
|1233||Throttle Wide Open Switch||See above.|
|1234||Speedometer "A" Signal||This code is generated when the engine is under load, over 2500 RPM and no discernable speedometer signal can be detected for more than 10 seconds. Check the wiring harness, and also the instrument console.|
|1237||A/C Compressor cutoff||The compressor is automatically turned off when accelerating from low speed under full throttle. This code indicates a fault in the cut-out circuit or its wiring.|
|1241||Mass Airflow Sensor||Codes 1241 and 2241 can be incorrectly generated on 1992 and later models. The actual fault is a improperly operating idle air valve, and the need for an updated EPROM. See BMW bulletins for more details.|
|1242||A/C Compressor Signal||This code is generated if there is a ground fault (short circuit) or if the system detects that the compressor unit is disconnected.|
|1243||Crankshaft Position Sensor||This code is triggered when the crank angle sensor is disconnected, or generates a signal that is not accurate when compared to the other engine sensors.|
|1244||Camshaft Position Sensor||Displayed when the signal from the camshaft pulse generator is out of spec or absent. May indicate a problem with the injector side of the DME output stage.|
|1245||AEGS Intervention - Electronic Transmission||Many BMWs are equipped with electronic transmissions. If the transmission encounters a major problem, it will generate an emergency message, and your on-board computer should show "TRANSMISSION EMERGENCY PROGRAM." Ignition timing will retard when this program is run.|
|1247||Ignition Secondary Monitor|
|1251||Fuel Injector #1 (single or group)||Check the injector or injector group for proper wire harness connectivity. Also check the injectors for a clear, wide stream pattern. Code 1283 (Fuel Injector Output Stage) may also be triggered in conjunction with this code.|
|1252||Fuel Injector #2 (single or group)|
|1253||Fuel Injector #3|
|1254||Fuel Injector #4|
|1255||Fuel Injector #5|
|1256||Fuel Injector #6|
|1257||Fuel Injector #7|
|1258||Fuel Injector #8|
|1261||Fuel Pump Relay Control||This code is generated when there is a break or ground fault in the circuitry associated with the DME fuel pump relay. Check pin #3 of the DME or the output stage in the DME (DME version M1.3 only). |
|1262||Idle Speed Control||This shows up if the idle speed actuator shows a ground fault, or if the car stalls from an idle above 600 RPM.|
|1263||Fuel Tank Evaporative System (EVAP)||The fuel tank evaporative system has a purge control valve that generates this code if there is a short circuit or open connection (DME version M1.3 only). |
|1264||Oxygen Sensor Heating Element||This code is triggered if there is an open circuit or a short within the oxygen heating element circuit. Check the O2 heating element relay and also the air pump relay.|
|1265||Check Engine Lamp||If the lamp in the dashboard burns out or shorts to ground, then this code is generated.|
|1266||VANOS System||Check the wiring or the relay associated with the VANOS system (variable camshaft adjustment).|
|1267||Air Pump Relay Control||Check the air pump relay and wiring (were applicable).|
|1271||Ignition Coil #1||An open-circuit or ground fault in the ignition wiring has occurred with an ignition coil. Place a timing light on the ignition wires and check for a signal. Also check the wires for faults, and check the spark plugs too.|
|1271||Ignition Coil #2|
|1271||Ignition Coil #3|
|1271||Ignition Coil #4|
|1271||Ignition Coil #5|
|1271||Ignition Coil #6|
|1271||Ignition Coil #7|
|1271||Ignition Coil #8|
|1281||DME Memory Unit Supply||This indicates a fault with the internal memory of the DME computer. This is sometimes caused by low battery voltage. Delete the codes, and disconnect the DME for 15 minutes. Then reconnect, let the car idle for five minutes, and then drive over 30 mph for more than five minutes. Recheck the codes - if it occurs again, the DME is faulty and should be replaced.|
|1282||Fault Code Memory||This code occurs when the DME generates a set of conflicting codes. Disconnect the DME for 15 minutes, reconnect, and then simulate a fault code, like unplugging the air flow sensor or idle actuator. If the code reoccurs, then you will need to replace the DME.|
|1283||Fuel Injector Output Stage||This code is generated when there is a short circuit or open connection between the wiring from the DME to an injector or injector stage.|
|1284||Knock Control Test Pulse||The ECU periodically checks the knock sensor circuitry by sending a test pulse through the system. This code indicates that a test was performed, but no pulse was registered. Check the wiring and knock sensors.|
When you are finished reading the codes, you can reset the computer and clear them all out. Make sure that the last code (1000) has occurred, and then press down on the gas pedal for more than 10 seconds. This should clear out the memory of the DME. Repeat the fault code reading process, and the computer should generate code 1444, which means that there are no faults stored.
On twelve-cylinder cars, the engines are controlled by two completely separate DME systems that act independently of each other (twice as many things to go wrong!). There are two DME computers (ECUs) located within each 12-cylinder car. To access the 2nd ECU, you press down the accelerator six times instead of five. The codes returned will be identical to the codes listed above, except for the first digit, which will be the number two instead of the number one.
Wire harnesses are a major cause of fault code problems. As the cars get older, the wiring harness have a habit of becoming what is commonly known as 'work hardened.' This causes the wiring to become brittle and often break inside of its plastic sheath. Only by testing the continuity of the wires end-for-end will you be able to determine whether the wire is broken or not.
For cars manufactured starting in 1996, BMW used the industry standard OBD II method of monitoring the fuel injection system. OBD II cars cannot be checked using the 'gas pedal' method previously described, but instead must be checked using a code scanner. The tool that I like to use is the Peak Research R5/FCX Fault Code Tool, shown in Figure 1. This tool is compatible with all BMWs built from 1987 to 2000 (except for 1999-2000 V8s). It displays all of the engine fault codes, and also has the option of resetting the oil service lamp. Since this tool works with both OBD I and OBD II cars, I prefer to use it on the pre-1996 cars, as it is much easier to read the codes using this tool than it is using the gas pedal method.
The R5 tool is used in a similar manner to the 'gas pedal method.' Turn on the ignition key (do not start the engine), and the install the tool into the BMW diagnostic connector located under the hood (Figure 2). This connector contains a large 20-pin connector which the tool uses to interface with the DME computer. Once the ignition is turned on, simply plug the tool into the socket - it can only go into the socket one way.
With the tool plugged in, it will 'spin' the LED lights for a few moments, and then prompt you with a menu. Hit the 'Select' button on the tool until you read the letters 'Fc' which stands for Fault Codes. Click 'Go' on the tool, and it will read the codes one by one from the computer. One note here though - the codes that show up on the tool are unique to this tool. You need to have a copy of the tool's operating manual in order to decode the proper codes for your car - make sure that you don't lose a copy of this manual, because it's not available on the web. For a list of troubleshooting tips and info on the tool, please see Peake Research's website.
When you are done reading the codes, you can reset them all using the R5 tool. Press the 'Select' button until you see 'cE' on the display, then press 'Go'. You can also use the tool to reset the oil service lamp, and the inspection lamps that light up on some of the earlier BMWs.
Well, there you have it! You can now arm yourself with the information that you need to start troubleshooting fuel injection system problems. In the very near future, we'll be having more technical articles on diagnosing and replacing fuel system components on the Motronic systems - keep watching the site for details!
See also Jared Fenton's write-up on reading fuel injection codes.
This technical article is made possible solely through the support of Pelican Parts. If you like what you see here, then please visit our online BMW catalog and help support the collection and creating of new and informative technical articles like this one.