Why do EDC17 boost maps look broken — and why did Bosch switch to mg/cycle in C64/C74?

Two EDC17 boost-map traps come up often enough to deserve their own post:

  1. BMW EDC17 (e.g., C41) ships boost maps with factory bugs — broken WGDC and boost-request maps that look “wrong” because they are wrong. The mapping algorithm Bosch uses to pre-generate firmware sometimes outputs bad values, and some maps stay in the binary for factory tests without being used. Fix: flatten the broken zones; the pair map carries the real shape.
  2. Bosch substituted pressure-request with combustion-chamber-charge (mg/cycle) when EDC17 went from C46 to C64/C74 — then partially walked it back. If you’re stuck reading mg/cycle and you’d rather think in mbar, WinOLS Properties → Conversion (factor + offset) recovers the pressure view in seconds.

Here’s how each plays out.

:video_camera: This is the text summary. Members at our May 2026 Q&A live saw both cases — Bruno’s EDC17C41 BMW screenshots side-by-side with the well-known factory error, plus a live demo on a EDC17 C64/C74 file converting flow back to bar of boost using WinOLS factor + offset. For the full Bosch EDC17 / map-search context, see our Bosch EDC17 tuning guide →. Register free for our next Open Q&A → — live with me, agenda forming.


Trap #1 — EDC17C41 BMW factory bugs in WGDC + boost request

Bruno asked, with screenshots from his EDC17C41 BMW file (WGDC map at 3932E2, boost-request at 397E84):

“Why do some EDC17 in BMW boost pressure maps have some ‘bugs’ in WGDC and boost-request maps?”

Why factory-generated maps come out broken

“It is because of, first, it is automatic preparing of the maps — it is not a human control. So this is the first trouble: sometimes there are just bugs in the algorithms which are controlling the preparation of the maps.” (~55:10)

Modern Bosch firmware is generated, not hand-tuned. The map values come out of an internal algorithm — and that algorithm sometimes fails on edge cases, producing values that look wrong because they are wrong.

Why some “broken” maps still ship

“The second thing is that some maps were just maps for tests, and they are abundant — even they are existing in the system, they are not doing anything.” (~55:27)

Other boost-related maps in the binary aren’t bugs — they’re test artefacts. Factory used them during validation, never wired them into the production code path, and left them in place. They look broken because they are never read at runtime.

The pair-map mechanic

“This particular map — it is working, surprisingly working. And this is the well-known error: if you just do not make it flat, then the car, when this map is switched on (and this is just the main map), this will shake.” (~55:45)

“So this is the pair. This map is the pair for that map. So in that case this may work, but probably this will be the main map. This is the map which is switched for some special occurrence — like the mode for tests in a factory.” (~56:06)

“They are erroneous values. If you just drive such a car with that map, first there will be no boost at all — and also it will be just maybe not shaking here, because there is no boost.” (~56:23)

The two BMW boost maps you’re looking at form a pair:

  • Main map — used in normal driving. If you don’t flatten the broken zone, the car shakes.
  • Pair map — switched in for special occurrences (factory test mode). Drive with this active and there’s no boost at all (which also means no shake — easy way to misread it as “fine”).

The fix

“This is just a mistake — simple mistake by factory.” (~57:03)

Flatten the broken zone in the main map. Correct both members of the pair if your tune touches them. Bruno’s takeaway from the live: “I always correct both” (chat, ~55:42) — that’s the right reflex once you know the maps are paired.

The same pattern applies to other EDC17 BMW variants where the pre-generation algorithm produced edge-case errors. The fix is always the same: flatten the visibly broken cells, leave the rest of the map shape intact.


Trap #2 — C46 → C64/C74: pressure-request became mg/cycle

Bruno’s second question:

“From EDC17C46 VAG to EDC17C64/C74, Bosch substituted boost request with combustion-chamber-charge in mg/cycle. Any specific reason?”

What happened — and why

"To be honest no [there’s no specific reason]. Then later they have switched back to pressure from vacuum. So the pressure — it was just a test of algorithm, I think. Or maybe they started to think that it is a good idea, and also … " (~57:48)

Bosch swapped the boost-request encoding from pressure (mbar) to combustion-chamber-charge (mg/cycle) in the C46 → C64/C74 transition, then partially walked it back. Thomas’ read: it was a test of methodology that didn’t fully stick. Newer firmware drifted back toward pressure-based requests.

The flow ↔ pressure relationship

“You can always remember that the air flow is proportional to the pressure from vacuum, more or less. So you can even try to recalculate that flow maps in milligrams per cycle to the real pressure. This will be probably inaccurate at the very low flows, but for the higher flows it may be quite accurate.” (~58:01)

mg/cycle and mbar aren’t different things — they’re proportional under the operating conditions where boost actually matters. So if your file ships mg/cycle and you’d rather see mbar, the conversion is mostly mechanical.

The WinOLS factor + offset workflow

In the live demo Thomas opened a EDC17 C64/C74 file and recovered the pressure view:

“This is just a pressure multiplied by 4 — zero point 25. But here we have a flow. So the best idea is just find the limit here, assume that the values inside are about this limit. Let’s assume they are just 2,400.” (~59:36)


The boost-request map as the file ships it — text view, raw values, no factor + offset applied yet (from the live demo).


The limit map in the same file: values plateau around 2,400 raw — that’s the reference value for step 1 below.

Steps:

  1. Find the maximum value in the flow map — that’s your reference point (Thomas’ example: 2,400 raw)
  2. Open Properties → Conversion in WinOLS
  3. Set up factor + offset with two reference values — one input/output pair anchors the high end, a second pair anchors the low end (Thomas’ setup: input 2,400 / second value 4,830)
  4. Switch on factor + offset mode — the values now render as bar of boost


Properties → Calculate factor and offset: 2,400 anchored against 4,830, the Result box shows the computed factor (steps 2–3).

“So now it is more or less here, for sure it is just a bars of boost. And in this area there will be error because of very small flow — but notice that it is for the very small load. That is a serious problem for the very small load — so this is like 45 Newton meters, or 30. So from the half — for example — or something like half of the load is here. So you can simply utilize this map as a normal complete boost map without just worrying about this bottom part.” (~60:44)

Caveat: the conversion is inaccurate at very low flow / very low load (roughly < 30–45 N·m torque, well below half of working load). That bottom slice doesn’t matter for boost-tuning decisions — boost work happens above half-load, where the conversion is accurate enough.

After conversion: treat it like any pressure map

“Always do like that. Check the limit — that the maximum value in the map should be something like a limit. And then you will have a normal boost map and you can just use it as a boost map.” (~61:18)

Once factor + offset shows you bar-of-boost values, the C64/C74 boost-request map behaves like the pressure-request map you knew from C46. Your tuning logic doesn’t change — only the encoding did.


What this means for tuning

Both traps are about not trusting what you see at face value in EDC17 boost maps:

  • On BMW C41 (and similar EDC17 BMW variants), the bug is in the content — factory mistakes ship in production maps, paired with backup maps for test modes. Fix: flatten broken zones, correct both members of the pair.
  • On C64/C74, the bug is in the encoding — Bosch changed units mid-generation. Fix: WinOLS factor + offset to recover bar-of-boost view, then tune as usual.

Both are quick fixes once you know to look. Both can mislead Stage 1 work if you don’t.


Related on Tuners Guild


Want the full EDC17 family workflow?

EDC17 isn’t one ECU — it’s a family with subtle generation-to-generation changes. CP01, CP02, CP14, CP44, CP46, CP74, C41, C46, C64, C74 each ship slightly different map layouts, encodings, and protection paths. Our Chip Tuning Diesel Practice course walks through the differences that matter most: where bit-widths shift, when boost requests change encoding, which protection layers changed between generations.

See the Chip Tuning Diesel course →


Your turn

Found a factory bug in another EDC17 BMW variant — or hit the mg/cycle vs mbar wall on a different ECU? Post your case:

  1. ECU + car
  2. For factory bugs: address of the broken map, and whether the pair map carried the real shape
  3. For encoding switches: input/output values you used in WinOLS factor + offset, and whether the conversion held up at high load
  4. What confused you first before you spotted the trap

Cross-variant comparisons help everyone build a faster mental map of where Bosch encoding shifts across the EDC17 family.


2 Likes