how to flash subaru ECU to disable CEL codes

problem statement:

I am creating a placeholder to save my work as I go through this project. this page may not be complete or go through the whole process. i am learning how to do it on the fly as i go.

i have a ‘small evap leak’ that I can’t track down, I have already thrown enough parts at it. I am frustrated that my CEL keeps coming on and disabling my cruise control so I am going to at least fix that problem here.

things you will need:

  • tactrix openport 2.0 obd2 usb adapter
    • needs correct drivers package, this is a ‘J2545’ or something, not a serial device.
  • ecuflash
    • correct definitions for this too
    • this software provided by tactrix
  • romraider software
    • correct/up to date definitions for your engine
  • romRaider Logger
    • always, correct definitions.
  • laptop with java JRE 1.8 32bit installed

put all this stuff on your laptop. it will need to be a windows because the tactrix 2.0 only has drivers written for windows. it’s always recommended to plug power into an extension cord in your driveway so it doesnt fail during a flash.

how this works/general outline:

the tactrix adapter is special because it can both read and write to your ECU, most cables can only read. During some year subaru switched from 16bit ECUs to 32bit ECU’s so your tactrix has to be the correct one to support what you have.

the ECU will download the code/program/software as a hex file. the romraider, with correct definitions, can translate these hex memory address location names, to the functions in the engine firmware. The definitions are really the lookup dictionary which gives romraider the mapping to know what is what. i think this definition is sort of a reverse-engineering thing where people just connected the dots and figured out what is connected to what. ECU flash also needs a definition so it knows what value to write to what location.

the process should work thusly:

  1. download with ecuFlash and save a backup copy of your current program.
  2. edit program with romraider, save new file
  3. upload new program to ECU with ecuFlash.

find correct definitions for your engine

i have a 2008 forester 2.5i MT, so it looks like def EZ1GC00E is correct for me. this is not supported in the standard definition file so i need to find it seperately, or develop the definition myself. it is probably based on others and very similar to those so i may have a starting point. download it, and then copy it to the defs folder in the romraider software, explained here:

romraider does come with built-in definitions, but you want to get their most updated ones from their website.

if you’re struggling with definitions

you can use the romraider logger to lookup your ECUid and Cid. launch the logger, input its v370 definitions, and connect to the ecu. the ECUid will be displayed on the bottom right of the window when it successfully connects. for help in connecting to this, make sure you have the correct drivers, and make sure you’ve got it using the correct protocol in settings.

2008+ subaru’s support can bus logging.

logger def 370 only includes SSM, both kLine and can protocols.

for 32-bit ECU’s, you can look for the CAL ID at hex address 0x2000 or 0x2004 in the ROM after it’s pulled using ECUflash.

download ecu firmware

  1. with the car off/no key in ignition: plug in ob2 cable.
  2. open ecuFlash, select read, select your definition, download definition, follow steps to download, save file


Leave a Reply

Your email address will not be published. Required fields are marked *