From the 1996 model year, the E36 uses OBD2. The M52 and the US-market S52 are managed by a Siemens MS41.1 DME, which can store far more faults than the OBD1 systems. That makes a scan tool the only practical way to read them.

TL;DR

Which cars:1996–1998 E36 with M52 or S52US (Siemens MS41.1). For 1992–1995 OBD1 cars, see the OBD1 fault code reference.
Connector:16-pin OBD2 socket on the lower left dash panel.
Tools:A generic OBD2 scanner reads and clears the engine’s generic P-codes; BMW-capable software also reads the BMW-specific faults and the other control units.
Important:On OBD2 cars the fault memory (and the Check Engine light) can only be reset with a scan tool. Disconnecting the battery or the DME does not erase it (Bentley).

Tools

ToolWhat it does
Generic OBD2 scanner or adapter with an appReads and clears generic P-codes, shows freeze-frame data and basic live data from the engine
BMW-capable scanner or BMW diagnostic software with a suitable cableAlso reads the BMW-specific fault memory and other control modules, and shows detailed live data such as VANOS and fuel trims

Whichever you use, read and write down all codes and their freeze-frame data before clearing anything: that record is your evidence.


Common codes and where to look

The definitions are the standard generic (SAE) meanings; the “where to look” column is the usual order of checks on an old M52.

CodeMeaningWhere to look first
P0170 / P0173Fuel trim malfunction, bank 1 / bank 2Unmetered air: intake boot, vacuum hoses, the crankcase vent (CCV) valve and its hoses. Then fuel pressure (M52 spec: 3.5 ± 0.2 bar).
P0300–P0306Random / cylinder-specific misfireSpark plug and ignition coil of that cylinder (swap a coil to see if the misfire follows it), then the injector and compression
P0340Camshaft position sensor circuitSensor wiring and connector, then the sensor. On VANOS engines, also the VANOS (see the M52 single VANOS guide)
P0335Crankshaft position sensor circuitSensor wiring and connector, then the sensor
P0442 / P0455Evaporative system leak, small / largeFuel filler cap and its seal first, then the EVAP lines and purge valve
P0500Vehicle speed sensorThe speed signal circuit and its source; check what your car uses with the wiring diagram

Using live data

Live data shows what the DME sees before a fault code is set. The most useful values:

  • Fuel trims: large positive long-term trims mean the DME is adding fuel to correct a lean mixture, usually unmetered air. If the trims fall back towards zero at higher rpm, an air leak (which matters most at idle) is the likely cause.
  • Pre-catalyst oxygen sensors: they should switch steadily between lean and rich at a warm idle. Slow switching points to an ageing sensor; a voltage stuck in the middle points to a dead one.
  • VANOS: compare the commanded and actual camshaft position. An actual value that lags or never reaches the commanded one points at the VANOS seals, or the solenoid and oil supply.
  • Coolant temperature: an engine that never reaches normal operating temperature on the gauge and in the data points at the thermostat.

The usual suspects on an old M52

  1. Crankcase ventilation (CCV): the plastic valve and hoses age; a split creates unmetered air and lean codes. On the M52 they sit under the intake manifold.
  2. Intake boot between the air flow meter and the throttle body: a split anywhere downstream of the meter means unmetered air.
  3. Ignition coils and plugs: misfires.
  4. VANOS seals: flat response below about 3,000 rpm and camshaft-related faults.
  5. Cooling system: an old thermostat or a coolant temperature sensor reading wrong affects mixture and idle.

A smoke test of the intake system finds most air leaks in minutes.