Correcting Poor Throttle Response of 02-07 Subaru Impreza WRX Stock ECU Tune

2019.09.28 | Yuki Rea

Many owners of second generation Subaru Impreza WRXs have noticed poor throttle response or a "lumpy bogging" feeling in the low-mid rev range. In most cases this is due to the stock ECU tune holding closed loop fueling mode for too long. In my car, this actually caused detonation (knock) which the ECU attempts to correct by pulling ignition timing. Since the knock is not caused by timing and is due to a fueling issue, the ECU continues to pull more timing each time it sees a knock event resulting in dramatic reduction in performance. This is why you may notice that the car feels more powerful after an ECU reset or battery disconnect. Correcting this by editing the stock ECU ROM to force open loop fueling mode results in increased timing and an increase in engine power as a side effect of eliminating detonation. This modification can not only make the car preform better and feel more responsive, but also can theoretically increase the reliability of the engine over the stock ECU tune due to eliminating detonation from running a lean AFR.

I will not go into detail on how to preform everything step by step. If you are not familiar with reading/flashing the ECU, logging and understanding important ECU parameters, and using ECU tuning software, than this modification may be a bit over your head and you should continue learning before attempting this. You can read the respective manuals for step by step instructions.

Requirements for this modification

  1. Tactrix Openport or another means of connecting to the ECU
  2. Reliable x86 based laptop or tablet PC running Windows for flashing the ECU and logging parameters.
  3. ECUFlash software for flashing the ECU.
  4. RomRaider for logging and monitoring ECU parameters.


  1. Reduced engine knock which can potentially result in higher reliability or longevity.
  2. Improved engine power as a result of advanced timing with the absecse of knock.


  1. Slightly reduced fuel economy at certain load/RPM ranges.
  2. Potential to fail emissions testing.

Modifying the stock ECU has the potential to cause catastrophic damage to your engine if not done correctly. Flashing a custom ROM also has the potential to brick your ECU if something goes wrong and will cause the car to not start. Only attempt these modifications if you understand the risks involved.

Getting Started

Before you can start modifying your ECU you will need to read the stock ROM from the car's ECU and save it, preferably on multiple drives to prevent unexpected data loss. You will need the stock ROM for modifying and in case you need to revert the ECU back to stock in the future. Make a copy of your stock ROM and open it in ECUFlash or your preferred Subaru ECU tuning software.

CL to OL Delay

The CL to OL delay table is one step that the ECU takes in determining when to switch from closed loop to open loop fueling mode. This table needs to be zeroed out in order to skip this step in the process. This alone will result in a small improvement in throttle response but will not force the ECU into open loop fueling mode. Once you have the copy of your stock ROM opened in your ECU tuning software, navigate to the Fueling - CL/OL Transition category and open the CL to OL Delay map. You should see a vertical 2D table ranging from A-1 to D-4, change values in all cells to 0 and close the map.

Minimum Active Primary Open Loop Enrichment

Minimum Active Primary Open Loop Enrichment (MAPOLE) is the richest AFR allowed in the Primary Open Loop Fueling (POLF) table before switching to Open Loop fueling. Increasing this value to something closer to stoichiometric AFR and making the POLF table richer than the MAPOLE forces the ECU to run in Open Loop fueling mode wherever the AFR value in the POLF table is richer than MAPOLE. Locate and open the Minimum Active Primary Open Loop Enrichment map under the Fueling - Primary Open Loop category and change the value to something closer to 14.7, I use 14.65.

Primary Open Loop Fueling

Primary Open Loop Fueling is a 3D table the ECU uses to determine what AFR to target at a given Engine Load and RPM. Any cell in this map that is richer than the Minimum Active Primary Open Loop Enrichment will result in the ECU using the Open Loop Fueling table instead of Closed Loop Fueling. It however is not a good idea to have the ECU always running Open Loop Fueling, the engine may run poorly in low load and idle scenarios. Leaving these cells at 14.7 AFR can avoid this. Open the Primary Open Loop Fueling map under the Fueling - Primary Open Loop category. Set all cells you wish to be forced to run Open Loop Fueling map to a value richer than MAPOLE value, in this case I will be using 14.59 AFR.

Review, Flash, and Test

Double check any changes you have made to the ROM making sure that there are no outstanding issues. Once you are sure that the Modified ROM will be okay to run on your car, save it and flash it to your ECU using ECUFlash or another flash tool. After flashing, turn the key off and on and start the car. The car may take a long time to crank over right after flashing, this is not uncommon. Set up your logging software and gauge display with important values like feedback knock correction, fuel correction, ignition advance, etc. I use ECUEdit but RomRaider is a great free option. Go for a drive being easy on the throttle while monitoring the car for issues, once things look okay ease into a few full throttle pulls that span the rev range and check for any issues like knock or timing correction. It is a good idea to save logs every time you drive after flashing the ECU to review until you are sure the new tune is safe and stable. Below are screenshots of RomRaider's learning view, this shows the Fine Learning Knock Correction table. The first is the stock tune, you can see the IAM has dropped from 16 to 13 and thus pulling 3 degrees of timing globally over the whole ignition timing map. There is also large negative learned knock correction values caused by knock from lean AFR. The second image shows an IAM of 16 which is the maximum value for 16 bit ECU's and no stored fuel or knock correction.