Updates
Aug 14, 2009: 1) These instructions and endian settings are now written to work only with ECUFlash 1.31+. Instructions for older versions of ECUFlash have been deleted. 2) I have included the scalings needed to setup direct boost control using an OMNI 4-bar MAP sensor. 3) I have updated the tables names to reflect the latest understanding of the boost control system.
May 23, 2008: Some additional boost tuning tables can be found
here.
Mar 20, 2008: Added instructions for USDM Evo VIII 94170014 and 94170015 ROMs.
Dec 18, 2007: Added instructions on how to perform these mods with ECUFlash v1.31+.
Sept 29, 2007: Fixed an error in the 96940011.xml instructions. I had written "MUT8A" in the entry that should be listed as "MUT8B". To fix the error in your 96940011.xml file, change the second incidence of the word "MUT8A" to "MUT8B". I think most people probably realized the mistake as the came across it.
Sept 28, 2007: Added a detailed description in the third post on how the boost control system works and how to effectively tune any boost curve possible within the limits of the turbo and WG setup.
Sept 16, 2007: Added instructions in second post for Evo VIII 96420007 and 96420008.
Sept 15, 2007: Added instructions for Evo VIII 94170008 ROM. Had to break up the instructions into three posts due to limits on the size of posts. 88590015 and 96940011 are in this post. 94170008 is in the second post. Moved EvoScan setup and tuning recommendations to the third post.
Sept 14, 2007: Made a small change to one of the scaling definitions to fix an issue where that definition was being applied to the TBEC table. Please recopy the revised "Boost Error Correction" table entry into the xml file for your ROM, and then copy the revised "BoostError" scaling entry into the "base" xml file for your ROM.
ECU-based Direct Boost Control for the Evo
Currently supported ROMs
88590015 (this post)
96940011 (this post)
96420008 (second post)
96420007 (second post)
94170015 (second post)
94170014 (second post)
94170008 (second post)
Background
This is a "how-to" on modifying your ROM to allow ECU-based direct boost control. This boost control system works exactly in the same way as stock except that:
1) The ECU controls boost directly rather than load.
2) There is now a 1-D table that controls how often the ECU checks/adjusts the boost.
The system works as follows
1) A
JDM MAP sensor is needed for boost measurement/control.
2) Different
restrictor pills or a bleeder are needed
to achieve more boost than stock.
3) The system keys off of absolute pressure rather than gauge pressure. This maybe confusing, but there is no way around it.
4) Instead of BDEL, BCLO, and TBEC tables, there are now "Baseline Boost", "Boost Adder", and "Boost Error Correction" tables. These tables are in psia.
Caveats
The stock boost control system was designed to have an operational upper limit on WGDC (100%) that would prevent boost overshoot. Using this system with modified restrictor pills removes that limitation, and improper tuning of the system can lead to strong boost overshoot conditions. I am not responsible if you blow up your motor.
Performing the ROM and logging mods
Several definitions and scalings need to be added to the ECUFlash XML file and the "base" XML file for your ROM. After those definitions are added, then its necessary to open your ROM in ECUFlash and perform some changes to some of the new items. After that, its necessary to add a new entry into your EvoScan data.xml file. If you are not comfortable doing these mods, it may be best to have someone do it for you.
Detailed ROM and EvoScan mods
A JDM MAP sensor or an OMNI 4-bar MAP sensor needs to be installed.
Instructions for installing the JDM MAP sensor are in
this thread.
Instructions for installing the OMNI 4-bar MAP sensor are in
this thread.
After the MAP sensor is installed and working, perform the mods described below. These instructions cover required modifications to ECUFlash XML files, your EvoScan "Data.xml" file, and your ROM file. I've got most of the ROMs covered. I'll add more ROMs as I have time, and if anyone works out the tables for a ROM I haven't posted yet, let me know, and I'll add the tables for that ROM to this post.
USDM Evo IX 88590015
Add the following lines to your ROM XML file:
----- (don't add the "-----")
<table name="Variable for Boost Control" category="Turbo" address="41E12" type="1D" level="1" scaling="Hex16"/>
<table name="SHLR->SHLL for EBC" category="Turbo" address="41B84" type="1D" level="1" scaling="Hex16"/>
<table name="Boost Error RAM Address" category="Turbo" address="41E06" type="1D" level="1" scaling="Hex16"/>
<table name="Boost Error RAM Address in Load Error Table" category="Turbo" address="7254" type="1D" level="1" scaling="Hex16"/>
<table name="WGDC Correction Interval #1 (High Gear Range)" category="Turbo" address="1654" type="1D" level="1" scaling="uint16"/>
<table name="WGDC Correction Interval #2 (Low Gear Range)" category="Turbo" address="1656" type="1D" level="1" scaling="uint16"/>
<table name="Boost Error Correction" category="Turbo" address="3f20" type="2D" level="1" scaling="OffsetWGDC">
<table name="Boost Error" elements="17" type="Y Axis" address="7258" elements="17" scaling="BoostErrorPsi"/>
</table>
<table name="Boost Adder" category="Turbo" address="1670" type="1D" level="1" scaling="psia16"/>
<table name="Base Boost #1 (High Gear Range)" category="Turbo" address="3f80" type="2D" level="1" scaling="psia8">
<table name="RPM" address="722e" elements="16" type="Y Axis" scaling="RPM"/>
</table>
<table name="Base Boost #3 (Low Gear Range)" category="Turbo" address="3fb2" type="2D" level="1" scaling="psia8">
<table name="RPM" address="722e" elements="16" type="Y Axis" scaling="RPM"/>
</table>
<table name="MUT8A Use for Boost Error" category="MUT" address="3F0AE" type="1D" level="1" scaling="Hex16"/>
<table name="MUT8B Use for WGDC Correction" category="MUT" address="3F0B2" type="1D" level="1" scaling="Hex16"/>
-----
Below are scalings that need to be added to your ECUFlash 88590015.xml file. There are two sets of scalings. One set is for the JDM 3-bar, and the other is for the OMNI 4-bar. USE ONLY THE SCALINGS FOR YOUR SENSOR.
JDM 3-bar only
----- (don't add the "-----")
<scaling name="BoostErrorPsi" units="psi" toexpr="(x-128)/(8*5.18)" frexpr="x*8*5.18+128" format="%.1f" min="-3.1" max="3.1" inc="0.1" storagetype="uint16" endian="big"/>
<scaling name="OffsetWGDC" units="WGDC Change" toexpr="(x-128)/2" frexpr="x*2+128" format="%.1f" min="-64" max="63.5" inc="0.5" storagetype="uint8" endian="big"/>
<scaling name="psia8" units="psia" toexpr="x/(5.18*2)" frexpr="x*(2*5.18)" format="%.1f" min="0" max="24.6" inc="0.1" storagetype="uint8" endian="big"/>
<scaling name="psia16" units="psia" toexpr="x/(5.18*2)" frexpr="x*(2*5.18)" format="%.1f" min="0" max="32" inc="0.1" storagetype="uint16" endian="big"/>
-----
OMNI 4-bar only
----- (don't add the "-----")
<scaling name="BoostErrorPsi" units="psi" toexpr="(x-128)/(8*4.23)" frexpr="x*8*4.23+128" format="%.1f" min="-3.8" max="3.8" inc="0.1" storagetype="uint16" endian="big"/>
<scaling name="OffsetWGDC" units="WGDC Change" toexpr="(x-128)/2" frexpr="x*2+128" format="%.1f" min="-64" max="63.5" inc="0.5" storagetype="uint8" endian="big"/>
<scaling name="psia16" units="psia" toexpr="x/(4.23*2)" frexpr="x*(2*4.23)" format="%.1f" min="0" max="32" inc="0.1" storagetype="uint16" endian="big"/>
<scaling name="psia8" units="psia" toexpr="x/(4.23*2)" frexpr="x*(2*4.23)" format="%.1f" min="0" max="30.1" inc="0.1" storagetype="uint8" endian="big"/>
-----
Instructions for ECUFlash
Variable for boost control: Stock will read 6B48. Change it to 6AEC. The table is in hex format, so you will have to enter it as 0x6AEC.
SHLR->SHLL for EBC: Stock will read 4A01. Change it to 4A00 (enter it as 0x....)
The "Boost Error RAM Address" and "Boost Error RAM Address in Boost Error Table" will both read: 69CA. Change both to 6EE2 (enter it as 0x....)
WGDC Correction Interval: Use table #1. Table #2 is for when the vehicle speed exceeds the boost limiting speed. Set the value anywhere from 1 to 10. Each unit is approx 0.08 to 0.1 sec. I recommend using a value somewhere between 1 and 5.
Boost Error Correction: This is equivalent to the TBEC table. Use the values I list below as a starting point. The upper right value should be set to zero, otherwise, significant boost overshoot may occur.
Boost Adder: This is equivalent to the BCLO table. The units are psi. As a first step. I recommend setting it to your local atmospheric pressure. This will simplify tuning.
Baseline Boost tables: These are equivalent to the BDEL tables. Max possible value is 24.6 psi.
Change MUT8A will read 6ACD. Change it to 6EE3 (enter it as 0x....)
Change MUT8B will read 6B41. Change it to 6EE9 (enter it as 0x....)
Save the ROM file and upload it to your ECU. Then go to the instructions in the third post for setting up EvoScan and tuning the system.
USDM Evo VIII 96940011
Add the following lines to your ROM file:
----- (don't add the "-----")
<table name="Variable for Boost Control" category="Turbo" address="204ba" type="1D" level="1" scaling="Hex16"/>
<table name="SHLR->SHLL for EBC" category="Turbo" address="20232" type="1D" level="1" scaling="Hex16"/>
<table name="Boost Error RAM Addr" category="Turbo" address="204ae" type="1D" level="1" scaling="Hex16"/>
<table name="Boost Error RAM Addr in Boost Error Table" category="Turbo" address="5fd2" type="1D" level="1" scaling="Hex16"/>
<table name="WGDC Correction Interval #1 (High Gear Range)" category="Turbo" address="1654" type="1D" level="1" scaling="uint16"/>
<table name="WGDC Correction Interval #2 (Low Gear Range)" category="Turbo" address="1656" type="1D" level="1" scaling="uint16"/>
<table name="Boost Error Correction" category="Turbo" address="3b24" type="2D" level="1" scaling="OffsetWGDC">
<table name="Boost Error" elements="17" type="Y Axis" address="5fd6" elements="17" scaling="BoostErrorPsi"/>
</table>
<table name="Boost Adder" category="Turbo" address="1670" type="1D" level="1" scaling="psia16"/>
<table name="Base Boost #1 (High Gear Range)" category="Turbo" address="3b84" type="2D" level="1" scaling="psia8">
<table name="RPM" address="5fac" elements="16" type="Y Axis" scaling="RPM"/>
</table>
<table name="Base Boost #3 (Low Gear Range)" category="Turbo" address="3bb6" type="2D" level="1" scaling="psia8">
<table name="RPM" address="5fac" elements="16" type="Y Axis" scaling="RPM"/>
</table>
<table name="MUT8A Use for Boost Error" category="MUT" address="3F53E" type="1D" level="1" scaling="Hex16"/>
<table name="MUT8B Use for WGDC Correction" category="MUT" address="3F542" type="1D" level="1" scaling="Hex16"/>
-----
Below are scalings that need to be added to your ECUFlash 96940011.xml file. There are two sets of scalings. One set is for the JDM 3-bar, and the other is for the OMNI 4-bar. USE ONLY THE SCALINGS FOR YOUR SENSOR.
JDM 3-bar only
----- (don't add the "-----")
<scaling name="BoostErrorPsi" units="psi" toexpr="(x-128)/(8*5.18)" frexpr="x*8*5.18+128" format="%.1f" min="-3.1" max="3.1" inc="0.1" storagetype="uint16" endian="big"/>
<scaling name="OffsetWGDC" units="WGDC Change" toexpr="(x-128)/2" frexpr="x*2+128" format="%.1f" min="-64" max="63.5" inc="0.5" storagetype="uint8" endian="big"/>
<scaling name="psia8" units="psia" toexpr="x/(5.18*2)" frexpr="x*(2*5.18)" format="%.1f" min="0" max="24.6" inc="0.1" storagetype="uint8" endian="big"/>
<scaling name="psia16" units="psia" toexpr="x/(5.18*2)" frexpr="x*(2*5.18)" format="%.1f" min="0" max="32" inc="0.1" storagetype="uint16" endian="big"/>
-----
OMNI 4-bar only
----- (don't add the "-----")
<scaling name="BoostErrorPsi" units="psi" toexpr="(x-128)/(8*4.23)" frexpr="x*8*4.23+128" format="%.1f" min="-3.8" max="3.8" inc="0.1" storagetype="uint16" endian="big"/>
<scaling name="OffsetWGDC" units="WGDC Change" toexpr="(x-128)/2" frexpr="x*2+128" format="%.1f" min="-64" max="63.5" inc="0.5" storagetype="uint8" endian="big"/>
<scaling name="psia16" units="psia" toexpr="x/(4.23*2)" frexpr="x*(2*4.23)" format="%.1f" min="0" max="32" inc="0.1" storagetype="uint16" endian="big"/>
<scaling name="psia8" units="psia" toexpr="x/(4.23*2)" frexpr="x*(2*4.23)" format="%.1f" min="0" max="30.1" inc="0.1" storagetype="uint8" endian="big"/>
-----
Instructions for ECUFlash
Variable for boost control: Stock will read 89A0. Change it to 8946. The table is in hex format, so you will have to enter it as 0x8946
SHLR->SHLL for EBC: Stock will read 4A01. Change it to 4A00 (enter it as 0x....)
The "Boost Error RAM Address" and "Boost Error RAM Address in Boost Error Table" will both read: 887A. Change both to 802A (again, you'll need to enter it as 0x....)
WGDC Correction Interval: Use table #1. Table #2 is for when the vehicle speed exceeds the boost limiting speed. Set the value anywhere from 2 to 10. Each unit is approx 0.08 to 0.1 sec. I recommend using a value of 1 to 5.
Boost Error Correction: This is equivalent to the TBEC table. Use the values I list below as a starting point. The upper right value should be set to zero, otherwise, significant boost overshoot may occur.
Boost Adder: This is equivalent to the BCLO table. The units are psi. As a first step. I recommend setting it to your local atmospheric pressure.
Baseline Boost tables: These are equivalent to the BDEL tables. Max possible value is 24.6 psi.
Change MUT8A will read 8927. Change it to 802B (again enter it as 0x....)
Change MUT8B will read 8DAB. Change it to 8D2D (again enter it as 0x....)
Save the ROM file and upload it to your ECU. Then go to the instructions in the third post for setting up EvoScan and tuning the system.