What Are Checksums?
A checksum is a mathematical value calculated from the data in a file that serves as a fingerprint to verify data integrity. In the context of ECU tuning, checksums are embedded within the calibration file itself, and the ECU verifies them every time it boots.
Think of it like a seal on a document. If you modify the document’s contents, the seal no longer matches — and the ECU knows something has changed.
Why ECUs Use Checksums
ECU manufacturers embed checksums for several reasons:
- Data integrity: To detect flash memory corruption from electrical noise, cosmic rays, or degradation over time
- Manufacturing quality: To verify that the correct software was flashed during production
- Tamper detection: To identify unauthorised modifications to the calibration data
- Safety: To ensure the engine control software hasn’t been corrupted — a corrupted fuel or timing map could cause physical engine damage
What Happens When Checksums Are Wrong
When you modify a calibration file (changing map values for a tune) but don’t correct the checksums, the ECU’s boot routine detects the mismatch. Depending on the ECU type and manufacturer, the consequences range from annoying to catastrophic:
| ECU Behaviour | Common ECU Types | Severity |
|---|---|---|
| ECU ignores checksums (runs anyway) | Some very old ECUs, some Marelli | None (lucky) |
| Check engine light / fault code stored | Some EDC15 variants | Low |
| Limp mode (reduced power) | Many EDC16, some SID | Medium |
| ECU reverts to backup/recovery calibration | Some EDC17 variants | High |
| ECU refuses to start the engine | Many EDC17, MED17, newer ECUs | Critical |
| ECU locks itself (requires recovery) | Some protected ECUs | Critical |
On modern ECUs (EDC17/MED17 and newer), incorrect checksums almost always prevent the engine from starting. The ECU enters a protective state where it won’t execute the potentially corrupted calibration.
Types of Checksums in ECU Files
Not all checksums are created equal. Different ECU families use different checksum algorithms, and some use multiple types simultaneously.
Simple Sum (Additive Checksum)
The simplest type: add up all the bytes in a defined memory region and store the total. If any byte changes, the sum changes.
- Used by: Some older ECUs, parts of EDC15
- Complexity: Easy to calculate and correct
- Security: Low — easy to reverse-engineer and correct manually
CRC (Cyclic Redundancy Check)
A more sophisticated algorithm that uses polynomial division to generate a check value. CRC is much better at detecting specific types of data corruption (bit flips, transpositions).
- Common variants: CRC16, CRC32
- Used by: EDC16, EDC17, ME7, MED9, MED17, and most modern ECUs
- Complexity: Requires knowledge of the specific polynomial, initial value, and XOR output used by that ECU
- Security: Medium — once the parameters are known, correction is straightforward
Bosch Multipoint Checksum
Bosch uses a proprietary multipoint checksum system on many ECUs, particularly EDC17 and MED17 families. This system:
- Divides the calibration area into multiple blocks
- Each block has its own checksum stored at a specific location
- A master checksum covers the individual block checksums
- The checksum algorithm may vary between ECU variants
- Used by: EDC17, MED17, and newer Bosch ECUs
- Complexity: High — requires knowing the block boundaries, checksum locations, and algorithm for each specific ECU variant
- Security: Medium-High — the variability between ECU variants makes generic correction difficult
RSA Signatures
The newest ECUs (some MG1, MD1) use cryptographic signatures (RSA or similar public-key algorithms) in addition to or instead of traditional checksums. These cannot be corrected without the manufacturer’s private key.
- Used by: Latest generation Bosch MG1/MD1, some Continental ECUs
- Security: Very high — effectively prevents modification through the calibration area alone
- Workaround: Tools use patched bootloaders or exploit methods to bypass signature verification
How Checksum Correction Works
The process of correcting checksums depends on the ECU type and the tools available:
Manual Correction
For simple checksums (additive sums), experienced tuners can manually calculate and correct the values in a hex editor:
- Identify the memory region covered by the checksum
- Calculate the sum/CRC of the modified data
- Write the new checksum value to the correct location
This is impractical for complex multipoint checksums but can work for simple ECUs.
WinOLS Built-in Checksum Correction
WinOLS includes checksum correction plugins for many ECU types. After modifying your maps:
- Click the checksum correction button
- WinOLS identifies the ECU type and applies the appropriate algorithm
- Checksums are recalculated and written to the correct locations
WinOLS checksum coverage is extensive but not universal — some ECU variants may not be supported, or may require a separate plugin purchase.
Dedicated Checksum Tools
Standalone checksum correction tools fill the gaps where WinOLS doesn’t have coverage:
- CHKSuite — our own checksum correction tool, supporting a wide range of ECU families. See our product page for supported ECU types.
- EVC (ECU Checksum Validator) — another popular standalone tool
- ECU-specific tools — some community-developed tools target specific ECU families
File Service Automatic Correction
Professional file services (including ours) automatically correct all checksums as part of the tuning process. When you receive a modified file from a file service, it will always have correct checksums — ready to flash.
Which ECUs Have Which Checksums?
| ECU Family | Checksum Type | Number of Checksums | Correction Difficulty |
|---|---|---|---|
| Bosch EDC15 | Simple sum + CRC | 2-4 | Easy |
| Bosch ME7 | CRC32 + sum | 3-5 | Easy-Medium |
| Bosch EDC16 | CRC32 multipoint | 4-8 | Medium |
| Bosch EDC17 | Multipoint CRC | 8-20+ | Medium-Hard |
| Bosch MED9 | CRC32 | 4-6 | Medium |
| Bosch MED17 | Multipoint CRC | 10-30+ | Hard |
| Siemens SID | CRC + proprietary | 4-10 | Medium |
| Siemens SIMOS | CRC32 | 4-8 | Medium |
| Delphi DCM | CRC16/CRC32 | 2-6 | Easy-Medium |
| Marelli MJD | Simple sum | 1-3 | Easy |
| Bosch MG1/MD1 | CRC + RSA signature | Many | Very Hard |
Common Mistakes
- Forgetting checksums entirely: The most common beginner error. Always correct checksums before flashing.
- Using the wrong checksum plugin: EDC17C46 and EDC17C54 use different checksum algorithms. Using the wrong plugin produces incorrect results.
- Modifying checksum-protected boot area: Some modifications (like tuning protection removal) affect the boot sector, which has separate checksums from the calibration area.
- Double-correcting: Running the checksum correction twice can sometimes produce incorrect results if the tool modifies the file on the second pass.
Our Solution: CHKSuite
Our CHKSuite checksum correction tool supports a growing list of ECU types and provides one-click checksum correction. Load your modified file, select the ECU type, and CHKSuite handles the rest. See our CHKSuite tutorial for a step-by-step guide.
For Professional Tuners
Launch Your Own ECU File Service Portal
Get TunerSuite Ultra — self-hosted PHP portal with credits, payments, 11,500+ vehicles pre-loaded. One-time £699, no monthly fees, runs on any cheap VPS.
See Details → Try DemoNeed Professional ECU Tuning?
Our engineers deliver custom calibrations in under 35 minutes, 24/7. Stage 1-3, DPF, EGR, AdBlue and more.
Request a File