
Virtual reading: why some ECUs aren't read out completely
Full read, partial read, virtual read: what is really read via OBD, why that's enough for tuning, and where the risks are.
October 25, 2026 by Leo Efimow
"Reading out" sounds unambiguous: the tool pulls the software out of the ECU, done. In practice it's less clear-cut. Depending on the ECU and access route you get the complete file, only part of it, or a file that partly doesn't come from your ECU at all but from a database. That is called virtual reading. It isn't a trick or a shortcoming but a perfectly normal procedure. You should just know what's behind it, because it decides how important a clean original file is.
What an ECU actually stores
The flash memory of a modern engine ECU is roughly divided into areas:
- Bootloader: the small start program that runs at power-up and, among other things, checks whether the rest of the software is valid.
- Program: the actual control logic: how boost is regulated, injection calculated and faults detected.
- Calibration: the numbers the program works with: maps, curves, limiters, thresholds.
- EEPROM or data area: vehicle-specific data such as coding, immobiliser data and learned values.
For tuning, almost only the calibration matters. That is where boost targets, torque limits, ignition timing or rail pressure live. The program normally stays unchanged in a software tune.

Three ways of reading
Full read: the complete memory is read, including the program and often the EEPROM. This usually only works on the bench or with the housing opened in boot mode, because the processor is addressed directly there. A full read is the best backup there is.
Partial read (calibration): via OBD the ECU often only hands out the calibration area. For the calibration work that is enough, because exactly this area is changed and written back.
Virtual read: here the ECU's software identification is read first, then the calibration area. The tool then looks up the matching version in a database of original files and assembles a complete file from it. So the program area comes from the database and the calibration from your ECU. The flashing tool PCMflash uses this, for example, on VW Group ECUs such as Bosch MED17.5 in the 1.2/1.4 TSI or EDC17 in the 2.0 TDI.
A picture helps: the full read is a complete book, the partial read is the chapters you want to change, and the virtual read is a book in which your chapters are genuine and the rest has been filled in from a library (from the same edition, if everything matches). For the calibration, the chapters count. For a restore in an emergency, what counts is that the whole book matches the edition in your ECU.
Why not simply read everything
The obvious question: if the tool is talking to the ECU anyway, why not read everything? There are three reasons.
- Protection: many ECUs simply don't allow read access to the program area through the diagnostic interface. The manufacturer doesn't want its software to be copied via OBD.
- Time: the complete memory is many times larger than the calibration. Over OBD, reading would take correspondingly longer, with all the risks of a long process, such as a weakening battery.
- Necessity: tuning only needs the calibration. A complete dump is nice, but not required to write a good calibration.
Where the risks are
Virtual reading works reliably as long as one condition is met: the database version must match the version inside your ECU exactly. ECUs of the same type often run many different software versions. A factory update, a recall or a workshop visit may have changed the version. If the program part from the database doesn't exactly match the calibration that was read, the assembled file isn't consistent.
For tuning itself that is often uncritical, because in the end only the calibration is written back. It becomes critical in two cases:
- When the assembled file is mistaken for a full backup. It isn't a real backup, because it contains parts that were never in your ECU.
- When the calibration is tuned on the wrong version. A calibration always refers to a particular software version. If maps are written for a different version, values end up at the wrong addresses. The result ranges from fault messages to an ECU that no longer starts.
That's why the workshop rule is: the software identification is checked before every calibration, and the file you upload is not renamed, not edited and not "repaired".
Why the customer portal has two upload fields
With a BMW online order you read your ECU yourself and upload the file to your customer portal. There are two separate fields there, precisely because of the differences above:
| Portal field | What goes in | What we use it for |
|---|---|---|
| Tuning / partial read / virtual read | the file your flashing tool read via OBD (e.g. MHD or BM3) | basis of the calibration |
| Full backup (optional) | a full read, e.g. from boot mode | backup and cross-check, if available |
The first field is required, the second optional. If you only read via OBD, that's absolutely fine. What matters is that you don't mix different files or upload a file from another vehicle. The file must come from exactly the ECU the calibration will later be written to.
What you should actually do
- Read with the tool you'll later flash with. Then format and area match.
- Upload the file unchanged. No renaming the extension, no opening it in other programs, no merging.
- Keep a copy. Ideally in two places, for example on the laptop and in a cloud folder.
- No factory update between reading and flashing. If a workshop updates the software in between, the calibration no longer matches the version in the car. Then read again and let us know.
For other brands handled on site or by shipping the ECU, we do the reading ourselves. The principle stays the same: whether full, partial or virtual read, the original data is saved before writing. One example of such an ECU is the VW Golf 7 1.4 TSI with 140 PS with a Bosch MED17.5.21.
Legal framework
Writing a modified calibration voids the vehicle's operating permit. Our software modifications are intended exclusively for motorsport; more in the motorsport notice.
Conclusion
Virtual reading is a pragmatic way of getting the data tuning needs: the calibration comes from your ECU, the rest from a database of original files. That works well as long as the software version matches exactly and nobody confuses the assembled file with a real backup. If you upload your file unchanged, keep a copy and don't install updates between reading and flashing, the most important source of errors is already eliminated. When you're ready to start, select your vehicle in the configurator.