Scoobypedia | Trusted knowledge for everything Subaru
Scoobypedia | Trusted knowledge for everything Subaru
Search Scoobypedia:

Scoobypedia Home

The Knowledge

Buying Guides



edit sidebar

Altering your ECU Image Using ECUEdit

(redirected from Knowledge.AlteringYourECUROMImage)


The purpose of this article is to document how one can alter, or remap, the ROM image within your Subaru ECU. Various professional resources and services are available commercially and are generally recommended to guarantee satisfaction. This article discuss how an experienced enthusiasts can alter their ECU ROM image using the ECU Edit software.

Thank you to epifan (ecuEdit) for making this possible.

Note: ecuEdit is shareware - specifically this is not Open Source. Most (all?) functionality works in the shareware version however when you save your ROM there is a long time delay. The full version of the software costs money. Also note that the author is not promoting this software, just recording another tool on the market.

What is ECUEdit?

ECUEdit is a tool which can take a ECU image and visualise the maps graphically and allow user edits (remaps). Maps are described via one or more configuration files.

Example ECU Edit Map Graphing

Some quick tips on some of the axis descriptions for xmlwrite generated xml tables for legacyGTs (applies to all other DBWs too)

the axis value "Load" for ign and fueling tables, given in unit of g/rev, can be obtained from a MAF reading in g/s and the RPM of the engine. example: My engine logged 202 g/s at 5666rpms. so, in order to convert 202 g/s to g/rev, we do this: divide rpms by 60 to turn it into rev (which is actually revolution per second, not revolution per minute, which is pretty much uniformly referred to in the ECU as RPM. I denote this because in conversation "revs" usually refers to RPMs. NOT FOR ECUS IT DOESN'T!) so, 5666/60=94.434 then, we divide g/s by rev so, 202/94.434=2.139 g/rev, which is what the axis is in.

Another common question that should be addressed: what unit is the desired boost table in? BAR absolute. to convert to gauge psi, subtract 1 and multiply the result by 14.7, so, for a desired boost cell of 1.89 1.89-1=.89 BAR differential .89(14.7)=13.083psi differential, aka what your gauge is going to say.

Download and Release History

Latest release is available on, local copy can be found here:

ecuEdit v1.2.0.72beta

  • Subaru Select Monitor LOGGER
  • all SSM parameters described in XML (name, address, covertion expression etc)
  • all metric conversions in XML
  • alternative addresses for some params (like IAM, Engine Load)
  • custom graphs quantity (2 parameters on each graph)
  • custom dash item quantity (grid X by Y)
  • and more
  • Simple DYNO in Log Viewer
  • new version of chart engine (360 degree rotation support and others features...)

Logger - Data & Graph view

Logger - Dashboard View

Log Viewer - Graph

Log Viewer - Grid

Log Viewer - 2D Graph for comparing related log data

Log Viewer - 3D Graph for comparing related log data

Log Viewer - Log Link for comparing realtime log data with actual ECU maps

Log Viewer - Simple Dyno Based on Vehicle Mass

ecuEdit v1.2.0.71beta

  • map list tree view with/without map type grouping (3d,2d,1d)
  • Log Viewer: custom log table with graph (surface, bar plot)
  • other bug fixes and improvements
  • clone ECU description in edit ECU description dialog

Custom Log Screen

ecuEdit v1.2.0.70beta

  • new tool - scaling. <scaling> descibe axis or data parameters and contain most of <row>,<col>,<data> attributes. Built-in editor for scaling.
  • new tool - checksum. <checksum> describe algorithm of checksum calculation. Identificators are [ecu_type] and ECU file size.
  • new attributes [incdata], [incdatab] in <scaling> and <data> for describe increment in real values ([inc], [incb] for increment in ecu-format data)
  • new attributes [max], [min] in <scaling> and <data> for describe min and max values
  • new attributes [metric] in <scaling> and <data>,<rows>,<cols> for describe unit name string
  • float in HexViewer
  • new attribute class="Igintion"|"Boost"|"string" in <ecu_struct> for map grouping
  • single map XML viewer with edit support (Ctrl+X)
  • map struct description included for DBW Subaru ECU (used for describe map by map offset)
  • other bug fixes and improvements

ecuEdit v1.2.0.66beta

  • new attribute [storagetype] for <rows>,<cols>,<data>. [storagetype] replaces attributes [power] and [signed] and adding new feature of float type (IEE 754)


  • some bug fixes and improvements

ecuEdit v1.2.0.65beta

  • interpolate paste from internal clipboard (from early versions :) forget to announce)
  • single map compare from internal clipboard. Compare use interpolate method for assign compared map to source axis and dimensions
  • sort map list
  • feature to hide equal cells in map compare (Ctrl+E)
  • quick switch to difference mode (Ctrl+D)
  • data captions and rows/cols constansts support in build-in map editor

ecuEdit v1.2.0.64beta

  • XMLWrite output-type parameter support in INI-File (default =1 - with full offsets)

ecuEdit v1.2.0.63beta

  • <map offset=""> support. <map_struct> needed to find map params
  • bug with many open windows (more 200) fixed (some MSWindows limitation...)
  • some bug fixes and improvements

ecuEdit v1.2.0.61beta

  • ini-file added for some additional config parameters
  • XMLDir in ecuedit.ini - path for ecu xmls
  • XML save improved
  • XMLWrite V2.0 support ;) If programm don't find ecu description, it execute XMLWrite to generate XML description and place XML-file to XMLDir. EcuEdit use TEMP directory described in Windows System Environment. XMLWrite.exe and XMLWrite.dat must be in same directory with ecuEdit.exe

ecuEdit v1.2.0.60beta

  • single map compare from any ECU
  • automatic fill offsets, power, length by map type byte: <map_stuct> in <ecu_tools>
  • irregular graph in 3d maps

ecuEdit v1.2.0.57beta

  • ECU compare by map list with Source,Compared,Difference table and graph view ability
  • Quick map assign from compared ECU
  • automatic position of map windows (at left of map list window)
  • some bug fixes and improvements

ecuEdit v1.2.0.55beta

  • big/little Endian for <ecu_struct>
  • big/little Endian, signed/unsigned support for <rows>,<cols>,<data>
  • 3d data order: "cols, then rows" (default), "rows, then cols" (used in EVO 3d maps)
  • map help support <map"line 1|line 2"...>
  • map advance level support <map ...level="1"...> - for organize maps
  • ecu ID description support series of different ID's bytes in char and BCD format, functions and char-constants. Allow to assemble ID like JM9653-06
  • columns in 1d maps <map type="1" ...cols="5"...>
  • 1D map like string <map type="1" ...view="str"...>
  • BIN representation in HEXViewer
  • HEX,BIN,CHAR,NUM view representation in 1D map <map type="1" ...view="hex"...>
  • some bug fixes and improvements

ecuEdit v1.2.0.47beta

  • Log Viewer support logs overlay (shifting, hiding)
  • Copy map to Windows clipboard in HTML-format

ecuEdit v1.2.0.46beta

  • convert functions for Increment value (func_2inc, func_inc2 attributes in <rows> tag)
  • support EcuID in diffrent ECUs with same size (EVO9 32-bit ECU and Subaru DBW 32-bit ECU)

ecuEdit v1.2.0.45beta

  • increment axis in 2D maps
  • data headers in 1D maps
  • const axis in 2D maps
  • some bug fixes and improvements

ecuEdit v1.2.0.43beta

  • support little endian and big endian numeric representation
  • some bug fixes and improvements

ecuEdit v1.2.0.41beta

  • adding HEX ecu compare: split screen, color difference visualization, navigation
  • suppot multi-file XML description for read and write: ecuEdit scan self directory for XML-files, finding unique ecu description and link it. You can see linked xml-files in "file_name" attribute of <ecu_struct> tag in XML viewer. In write process changes would be only in linked <ecu_struct> - another tags in XML-file would not changed

ecuEdit v1.2.0.40

  • Map and Log link support. Show cells in map which are used by ECU log.
  • New log monitor. Monitoring selected directory and waiting for new log files. Each new log is automatically opened in ecuEdit

Log Viewer - linking logs to maps

ecuEdit v1.2.0.38

  • Log Viewer: Support custom log calculated by function with paramters from other log data. Example: build gear change log.
  • Log Viewer: Range selector, quickly select log data by range. Example: select full throttle range for custom 2d,3d graph analysis.
  • Map description editor: MUL parameter is off by default.

ecuEdit v1.2.0.36

  • Support 32-bit ECU
  • Log Viewer: functions support for convert log data (time and data conversion)
  • New TAG in <config> for describe map ID's

ecuEdit v1.2.0.33

  • Log Viewer: Custom 2d, 3d graphs and other improvements
  • Support different file and description sizes: open 160K bin file by 192K-offset description and vice versa
  • Map clipboard (Copy and paste data from another maps)

ecuEdit v1.2.0.29a

  • Log Viewer. Support log session with changes in quantity of log parameters. Some popular log viewer's don't support this opportunity
  • Inherited ECU descriptions support by use "include" attribute in <ecu_struct> tag
  • Built-in editor for all ECU descriptions
  • Simple offset calculator in map description editor
  • New graph visualization: transparency, zooming, scrolling
  • Command Line support for logs (*.csv) and ECU bin (*.hex)
  • Changes in XML-structure: now XML must have only one top-level tag <ecus>. ecuEdit would be try to automatic add <ecus> tag if it isn't exist in ecuEdit.xml

ecuEdit ECU Special Functions

  1. Reformating 160K Bin-file to 192K bin-file by adding 32K 0x0 data block from 0x20000 offset
  2. Reformating 192K Bin-file to 160K bin-file by deleting 32K data block from 0x20000 offset

ecuEdit ECU XML-structure description

1. Tag <ecu> - ECU ID and Name description Params: id - ECU Internal ID from ECU ROM data at offset 0x200 type - string of ECU name

2. Tag <map> in <ecu> - ECU Map description Params: name - Map name type - 3,2,1 for 3D map, 2D map and 1D map (data list)

3. Tag <rows> in <map> - Describe map's Rows header. Used for 3D and 2D maps Params: count - vertical dimension of map offset - initial offset of Row header data in ECU ROM power - data dimension (1 for 8bit, 2-for 16bit, etc) format - format string for display converted row header value (equal Delphi format string) func_2val - expression to convert binary data to display value func_val2 - expression to convert display data to binary data (used for convert direct entered display value) desc - description of Row data purpose caption - short description of Row data purpose mul - binary multiply data with this number. Used for some maps, with strange high bytes in ECU ROM

4. Tag <cols> in <map> - Describe map's Cols header. Used only for 3D maps Params same as for <rows>

5. Tag <data> in <map> - Describe map data. Used for all maps Params: offset - initial offset of data in ECU ROM power - data dimension (1 for 8bit, 2-for 16bit, etc) format - format string for display converted data to display value (equal Delphi format string) func_2val - expression to convert binary data to display value func_val2 - expression to convert display value to binary data (used for convert direct entered display value) desc - description of data purpose caption - short description of data purpose. Grid caption in 1D maps mul - binary multiply data with this number. Used for some maps, with strange high bytes in ECU ROM color_dir - 0(def),1. Direction of color gradient inc_dir - 0,1(def). Direction of Increment/Decrement function. If data value like AFR value, then to increment AFR we must decrement data. To do this set inc_dir to 0 inc - amount (number) of data increment incb - amount (number) of data big increment (with Ctrl key) count - count of data. Only used for 1D maps.

Delphi Format specifiers

Format specifiers have the following form:

"%" [index ":"] ["-"] [width] ["." prec] type

A format specifier begins with a % character. After the % come the following, in this order:

An optional argument zero-offset index specifier (that is, the first item has index 0), [index ":"]

	An optional left justification indicator, ["-"]
	An optional width specifier, [width]
	An optional precision specifier, ["." prec]
	The conversion type character, type

The following table summarizes the possible values for type:

f Fixed. The argument must be a floating-point value. The value is converted to a string of the form "-ddd.ddd...". The resulting string starts with a minus sign if the number is negative.The number of digits after the decimal point is given by the precision specifier in the format string-a default of 2 decimal digits is assumed if no precision specifier is present.

Related Articles

Page last modified on June 29, 2007, at 09:51 PM
Scoobypedia can not be held responsibile for the information published here. Site rules apply for all published content.