How do I distinguish pre-injection from post-injection maps in EDC17?

Pre-injection (DAMOS folder InjCrv_PiI1 / map InjCrv_qPiI1Bas on EDC16/17/MD1) and post-injection maps look similar in EDC17 binaries but differ on four clear tells: pre-injection values are 1-2 mg (10× smaller than post-injection’s 10-20 mg), pre covers the entire RPM/load map while post has zeros at high RPM and high load corners, post-injection SOI is negative while main and pre-injection SOI are positive, and post-injection always sits last in the default map tree. Below — the 4-tell method walked through on a CP BMW EDC17 binary.

:video_camera: This is the text summary. Paid attendees of Q&A #1 (April 2026) got the live walkthrough — I demonstrated this on a real ECU binary in WinOLS, pointing to actual maps, scrolling DAMOS folders, showing byte-level changes. For the full diesel calibration methodology, see the Bosch EDC17 tuning guide →. Register free for our next Open Q&A → — live with me, agenda forming.


The question — from Q&A #1

Denis asked during our first live Q&A:

“How do you find the correct pre-injection maps on EDC or MD units? How do I correctly distinguish pre-injection maps from post-injection maps, since they have similar values and are visually similar? Can you show me using a factory DAMOS as an example?”

It’s a fair question. Pre- and post-injection maps sit close together in the map tree, both have small values, both look like similar grids in WinOLS®. Editing the wrong one is one of the more common slip-ups in early Stage 1 work.


How I tell them apart — the 4-tell method

In our Q&A #1 (00:04:38) the short answer was: post-injection has bigger values, and pre-injection covers the whole RPM range from beginning to end. That’s the headline — below are all four tells in detail, then the on-screen walkthrough on a CP BMW.

Tell 1 — Value magnitude (10× difference)

Map type Typical values Raw factor
Pre-injection 1-2 mg (small, precise) ~0.01 factor
Post-injection 10-20 mg (10× larger) ~0.01 factor

The order-of-magnitude difference is the fastest check. If you’re looking at a map with values around 0.5-2 mg → pre-injection. If you’re looking at values around 10-25 mg → post-injection.

Tell 2 — Zero pattern (coverage vs corners)

Pre-injection coverage:

“Pre-injection must fire at all RPMs — otherwise the engine won’t work properly, will smoke.” (00:11:29)

Pre-injection values exist across the entire map — all RPM, all load cells. Sometimes the first column (very low RPM) or the last row (extreme high load) has zeros, but the body of the map is populated end-to-end.

Post-injection coverage:

Post-injection has islands of values plus zeros at high RPM / high load corners. From the Q&A (00:05:13):

“At higher revs we have enough energy to start burning the [DPF] filter. If you drive very fast on the highway, it’s easy to self-ignite the filter. But if you drive very slowly and the system wants to start burning, this will be more difficult — so we need post-injection then.”

So post-injection helps DPF regeneration at low-to-mid RPM/load where exhaust temperature isn’t high enough on its own. At high RPM and high load the corners read zero — post-injection isn’t needed there.

Tell 3 — Post-injection SOI is negative

The Start of Injection (SOI) angle map sits near each value map. Post-injection SOI is negative — that’s the giveaway. From the Q&A (00:08:28):

“You’ll always have start of injection for post-injection which is negative — this is why it is at the top.”

Open the angle map adjacent to a value map. Negative numbers → post-injection. Positive angles → pre or main.

Tell 4 — Default order in map tree

Standard EDC17 structure after the torque limit section, in order from first to last (00:06:19):

  1. Main injection SOIInjCrv_MI1 / InjCrv_phiMI1Bas (temperature-sorted — cold first; the correction factors at the very front can be omitted)
  2. Limits section (looks like a small pre-injection map; axes usually precede limits)
  3. Pre-injection sectionInjCrv_PiI1 / InjCrv_qPiI1Bas
  4. Main injection section — main injection timing, looks like a VNT map when zoomed
  5. Post-injection sectionInjCrv_PoI / InjCrv_qPoI (last)

If you’re uncertain after tells 1–3, count down from the torque limit. The last injection section is post-injection. The section above main injection timing is pre-injection.

Some MD1 and EDC17 variants reorder the injection block — for that map-tree walkthrough see KB-07 — SOI timing degrees vs percent.


On-screen walkthrough — CP BMW EDC17

In the Q&A I opened a CP BMW EDC17 binary in WinOLS and walked through the identification step by step.

Step 1 — Find the torque limit

Easy to identify (large values, structural boundary). Everything injection-related sits after the torque limit in the default layout.

Step 2 — Walk through post-injection

From the Q&A (00:07:31):

“Here we have example of post-injection. Values are about 20 mg (raw value 2000, factor 0.01). Islands of values here and zeros in this zone for very high RPM and high load.”

Post-injection confirmed by: last position + 20 mg value + zero corners.

Step 3 — Walk back to pre-injection

Before reaching main injection I zoomed in to see ~2 mg values (00:09:33):

“Pre-injection is about 2 mg — 10 times smaller than post-injection. So we can easily see the difference. I see: aha, here is a big structure of two maps together which are pre-injection.”

Pre-injection confirmed by: position before main → 2 mg value → full-map coverage (no zero corners).

Step 4 — Selection tip

From 00:10:47:

“It’s a good idea to select from the back — from the bottom. Why? Because sometimes people make a mistake and start from this 30 value, which is not part of this map.”

When selecting a map in WinOLS, start from the bottom-right cell and drag to top-left. Starting from the top can accidentally pick up a stray value (like 30) that sits next to the map but isn’t part of it.


The 4-tell method — quick-reference card

Given a candidate injection map, check:

1. Value magnitude:
   ~1-2 mg      → pre-injection
   ~10-20 mg    → post-injection

2. Zero pattern:
   Full coverage, values everywhere                  → pre-injection
   Islands of values, zeros at high-RPM/load corners → post-injection

3. SOI sign (adjacent angle map):
   Positive angle  → pre or main injection
   Negative angle  → post-injection

4. Position in map tree (default EDC17):
   Third section after torque limit  → pre-injection
   Last injection section            → post-injection

If three of four tells point the same way, the map is identified. If they disagree, slow down and re-check the binary against a DAMOS reference before editing.


Why this matters

Editing the wrong injection map doesn’t blow anything up immediately, but it does send fuel into the wrong place. Pre-injection edited as post → main combustion timing disturbed (smoke, rough idle, cold-start complaints). Post-injection edited as pre → DPF regen logic gets the wrong inputs (regen cycles drift over time).

Neither failure mode shows up on the dyno during a Stage 1 verification run — they surface weeks later as “it ran fine in the shop and now the customer is back.” The 4 tells take a minute to apply and remove the guessing step.


Maps referenced in this guide

Concept DAMOS Folder Map ID ECU Deep dive
Pre-injection fuel quantity InjCrv_PiI1 InjCrv_qPiI1Bas EDC16, EDC17, MD1 This KB (hub)
Main injection SOI timing InjCrv_MI1 InjCrv_phiMI1Bas EDC16, EDC17, MD1 KB-07 — SOI Italian Highway zones
Post-injection values InjCrv_PoI InjCrv_qPoI EDC16, EDC17, MD1

Related on Tuners Guild


Want the full map identification workflow?

The 4-tell method is chapter 1 of our Chip Tuning Diesel Practice course — the foundation everything else builds on. The course walks through map identification across EDC17 variants (C46, C74, CP04, CP14, CP44, CP56), MD1 variants, and older EDC16 — including the DAMOS-matching workflow and Ghidra cross-reference method when DAMOS is unavailable.

See the Chip Tuning Diesel course →


Your turn

Learning to identify injection maps on a different ECU family — EDC16, MD1, Delphi DCM6, Siemens SID? Share:

  1. ECU + binary you’re working with
  2. Which tell from the 4-tell method was most useful for your identification
  3. Any variants where the 4-tell method breaks (map pattern doesn’t match the expected signatures)
  4. Whether DAMOS was available or you worked map-only

Cross-ECU comparison helps everyone calibrate the 4-tell method across families.

1 Like