Overview
First BMW modular 4-cylinder turbo. Replaced by the B48 in 2015; still very common on used-car lots.
Common models
F20 125i; F22 228i; F30 328i; F32 428i; F10 528i; F25 X3 28i; F26 X4 28i; F48 X1 28i.
Supported live-data parameters
Beemuu’s N20 profile reads 22 parameters from the engine control module. 14 are marked verified — sourced from the OBDb DID database and confirmed against the project’s own OBDb-verified community data set. The remaining parameters are seeded from standard OBD-II PIDs or marked as BMW-specific but pending real-car verification.
Each parameter has a query path (either an OBD-II PID like obd:0C or a BMW-specific identifier) and a decoder (how raw bytes are converted to engineering units). The full schema is documented in docs/DECODE_FUNCTIONS.md.
| Parameter ID | Label | Unit | Query path | Decoder | Status |
|---|---|---|---|---|---|
rpm | Engine speed | rpm | obd:0C | u16_quarter | ✓ verified |
coolant | Coolant temp | °C | obd:05 | temp_u8 | ✓ verified |
iat | Intake air temp (post-IC) | °C | obd:0F | temp_u8 | ✓ verified |
map | Manifold pressure (abs) | kPa | obd:0B | u8 | ✓ verified |
baro | Barometric pressure | kPa | obd:33 | u8 | ✓ verified |
load | Engine load | % | obd:04 | percent_a | ✓ verified |
throttle | Throttle position | % | obd:11 | percent_a | ✓ verified |
speed | Vehicle speed | km/h | obd:0D | u8 | ✓ verified |
volt | Module voltage | V | obd:42 | u16_milli | ✓ verified |
ambient | Ambient temp | °C | obd:46 | temp_u8 | ✓ verified |
battery_v | Battery voltage (DME) [needs verification] | V | did:4002 | u16_tenths | ⚠ unverified |
hpfp_rail | HPFP rail pressure [needs verification] | MPa | did:44F0 | u16_tenths | ⚠ unverified |
boost_cmd | Boost command (relative) [needs verification] | kPa | did:4367 | u16_tenths | ⚠ unverified |
maf | Mass air flow [needs verification] | kg/h | did:4077 | u16_div100 | ⚠ unverified |
ambient_pres | Ambient pressure (DME) [needs verification] | kPa | did:4003 | u16_div100 | ⚠ unverified |
dme_temp | DME temperature (signed, 0.25C resolution) [needs verification] | C | did:4001 | s16_div4 | ⚠ unverified |
eng_torque | Engine torque (signed) [needs verification] | Nm | did:4500 | s16_div100 | ⚠ unverified |
lambda_1 | Lambda bank 1 [needs verification] | did:400B | u8_div100 | ⚠ unverified | |
inj_time | Injection time (per cylinder) [needs verification, UDS only] | ms | did:4363 | u8_div100 | ✓ verified |
gear | Gear position (EGS) [needs verification, UDS only] | did:DA0A | u8_enum | ✓ verified | |
engine_state | Engine state (DME) [needs verification, UDS only] | did:4004 | u8_enum | ✓ verified | |
knock_detect | Knock detection (DME) [needs verification, UDS only] | did:401F | u8_enum | ✓ verified |
Common N20 faults worth scanning for
Timing-chain stretch on higher-mileage cars (an N20 with a stretched chain throws cam-timing codes before anything else fails); high-pressure fuel-pump failures on early production; valve-cover gasket oil leaks.
For BMW-specific fault codes that come up on the N20, see the DTC index — particularly the fuel-pressure, VANOS and boost-pressure families. The project’s community opinions have per-code repair paths contributed by owners and indie technicians.
N20 questions
What is the N20 engine?
First BMW modular 4-cylinder turbo. Replaced by the B48 in 2015; still very common on used-car lots.
How do I connect Beemuu to a N20 car?
UDS over DoIP is the standard. E-series N20 uses KWP2000 over K+DCAN; F/G-series N20 uses UDS over DoIP via an ENET cable.
What live-data parameters does Beemuu read?
22 parameters; 14 verified, the rest seeded and pending real-car validation.
What should I check first?
Timing-chain stretch on higher-mileage cars (an N20 with a stretched chain throws cam-timing codes before anything else fails); high-pressure fuel-pump failures on early production; valve-cover gasket oil leaks.