Mitsubishi Lancer Evolution Forum banner

HOWTO: Enable Readiness for OBDII inspection after removing your o2 sensor

121K views 287 replies 71 participants last post by  Ralliartist 
#1 ·
Big Credit to acamus for this:


It seems the patch is working as tested by goofygrin

1. Add following lines after <include>52680015</include> in 52680018.xml,
2. Save it.
3. Open your ROM.
4. Change values as depicted in patch tables
Important: If initial value (e.g. A1BD) is not correct please stop and ask.
5. Save changes.
6. Flash it
7. Test monitor status with some test equipment.

If you find this patch usefull please do small donation so I can buy some EvoX ecu for playing / further patches :)

52680018:

Code:
    <table name="Non-Continuous Monitor Availability Patch - Part 1" category="OBD Inspection" address="8FE4C" type="2D" level="1" scaling="Hex16">
        <table type="Static Y Axis" elements="2">
            <data>A1BD->6100</data>
            <data>CF94->7000</data>
    </table>
    </table>
    <table name="Non-Continuous Monitor Availability Patch - Part 2" category="OBD Inspection" address="8FE52" type="2D" level="1" scaling="Hex16">
        <table type="Static Y Axis" elements="1">
            <data>01E2->7000</data>            
        </table>
    </table>
   
    <table name="Non-Continuous Monitor Completion Patch" category="OBD Inspection" address="8FEB8" type="2D" level="1" scaling="Hex16">
        <table type="Static Y Axis" elements="2">
            <data>A0BD->60FF</data>
            <data>877A->7000</data>
        </table>
    </table>
   
    <table name="Monitor Available(1)/Not Available(0)" category="OBD Inspection" address="8FE4D" type="2D" level="2" scaling="blobbits">
        <table name="Non-Continuous Monitor Availability Bits" type="Static Y Axis" flipy="true" elements="8">
            <data>EGR system</data>
            <data>Oxygen heater sensor</data>
            <data>Oxygen sensor</data>
            <data>A/C system refrigerant</data>
            <data>Secondary air system</data>
            <data>Evaporative system</data>
            <data>Heated catalyst</data>
            <data>Catalyst</data>
        </table>
    </table>

    <table name="Monitor Passed(1)/Failed(0)" category="OBD Inspection" address="8FEB9" type="2D" level="2" scaling="blobbits">
        <table name="Non-Continuous Monitor Completion Bits" type="Static Y Axis" flipy="true" elements="8">
            <data>EGR system</data>
            <data>Oxygen heater sensor</data>
            <data>Oxygen sensor</data>
            <data>A/C system refrigerant</data>
            <data>Secondary air system</data>
            <data>Evaporative system</data>
            <data>Heated catalyst</data>
            <data>Catalyst</data>
        </table>
    </table>
53040010:

Code:
    <table name="Non-Continuous Monitor Availability Patch" category="OBD Inspection" address="8FCE8" type="2D" level="1" scaling="Hex16">
        <table type="Static Y Axis" elements="2">
            <data>A1BD->6100</data>
            <data>CF8C->7000</data>
    </table>
    </table>
   
    <table name="Non-Continuous Monitor Completion Patch" category="OBD Inspection" address="8FD50" type="2D" level="1" scaling="Hex16">
        <table type="Static Y Axis" elements="2">
            <data>A0BD->60FF</data>
            <data>877A->7000</data>
        </table>
    </table>
   
    <table name="Monitor Available(1)/Not Available(0)" category="OBD Inspection" address="8FCE9" type="2D" level="2" scaling="blobbits">
        <table name="Non-Continuous Monitor Availability Bits" type="Static Y Axis" flipy="true" elements="8">
            <data>EGR system</data>
            <data>Oxygen heater sensor</data>
            <data>Oxygen sensor</data>
            <data>A/C system refrigerant</data>
            <data>Secondary air system</data>
            <data>Evaporative system</data>
            <data>Heated catalyst</data>
            <data>Catalyst</data>
        </table>
    </table>

    <table name="Monitor Passed(1)/Failed(0)" category="OBD Inspection" address="8FD51" type="2D" level="2" scaling="blobbits">
        <table name="Non-Continuous Monitor Completion Bits" type="Static Y Axis" flipy="true" elements="8">
            <data>EGR system</data>
            <data>Oxygen heater sensor</data>
            <data>Oxygen sensor</data>
            <data>A/C system refrigerant</data>
            <data>Secondary air system</data>
            <data>Evaporative system</data>
            <data>Heated catalyst</data>
            <data>Catalyst</data>
        </table>
    </table>
 
#104 · (Edited)
I...sort of...stumbled onto something...

With all the tables setup in stock form, I get Evap "Ready".... O2 Heater, O2, and Cat "Incomplete".

I tried this..

A1BD->6100: 0xA1BD <-- Stock
CF94->7000: 0xCF94 <-- Stock

01E2->7000: 0x01E2 <-- Stock

A0BD->60FF: 0xA0BD <-- Stock
877A->7000: 0x7000 <-- Changed


This reads O2, Cat "Ready"....Evap, O2 heater "Incomplete"

So that last code is doing something...
 
#106 ·
I tried this..

A1BD->6100: 0xA1BD <-- Stock
CF94->7000: 0xCF94 <-- Stock

01E2->7000: 0x01E2 <-- Stock

A0BD->60FF: 0xA0BD <-- Stock
877A->7000: 0x7000 <-- Changed
Be very careful what you are doing there. This processor has a 4 byte word. (32 bit). So "A0 BD 87 7A" does a memory load from address 0x80477a. We normally change that to "60 FF 70 00". That does a Load Immediate r0 = 0xFF and a No-Op (the 7000 part).
You changed it to "A0 BD 70 00", which does a load from address 0x803000. Who knows what is at that address.

Be careful; you could brick your ECU. :)
 
#105 ·
To answer Scott's questions...

The first 2 patches affects a part of the rom where it would normally be reading a value from memory. This patch forces those values to whatever we set them to. And like you said, it seems to work fine.

The last patch reads a bit from memory and sticks it in r0. The patch forces the value in r0 to whatever we set it to. The thing is, I need to trace down where r0 goes. This part doesn't seem to work like we think it does. I'm wondering if we should just change the parts of the code that sets this variable. It gets read from a lot of places, but on written in a few. We could simply force those area to the same values. (i.e. passed)


I have yet to look into it more after Scott's recent tests.
 
#108 ·
Arizona Emissions

Here in Phoenix, they are just catching on to the N/A stuff the handheld programer do, so in the near future its going to have to say "PASS" The data base collecting wont fly here and neither will disconnecting the battery. Too much liability.:tumbleweed:
 
#111 ·
I was thinking about this a little more..

We have this problem with the monitors because we turn off the rear O2 sensor and disable the resulting codes for that, correct?

I'm not really sure of the means in which they get disabled...but if it's something like changing when the ECU runs checks for those specific codes, then maybe we can change that.

What if, instead of when it checks, we change WHAT it checks. So for the rear O2 sensor, it checks that voltage is between X and Y values for the various codes. If it doesn't fall between those, it pops the CEL. If we change the lowest value 0, then all of a sudden the monitor checks see that the values are within proper range...meaning no CEL and a monitor that's "Ready".

If something like this is possible, I think this would work better then messing with this "Pass/Fail" patch because that would just be left stock and working normally, and the ECU monitors actually see that everything is within the range it should be...
 
#113 ·
That is why people use a resistor that falls within the range. all you need to do is plug it into the wiring and that tells the puter its within the range
 
#117 · (Edited)
Solved!

I got this figured out finally...

Now that I got myself setup to bench flash a bricked ECU, I started playing around a little more

This solves our issue with the patch...after flashing this to the car and using my OBD-II reader to check, it shows this:

0 Incomplete
7 Ready
--Misfire
--Fuel
--Comp
--Evap
--Cat
--O2 Sensor
--O2 Heater

That shows all the monitors passing like they should.

Here's what you need to change

 
#118 ·
I got this figured out finally...

Now that I got myself setup to bench flash a bricked ECU, I started playing around a little more

This solves our issue with the patch...after flashing this to the car and using my OBD-II reader to check, it shows this:
Damn, you've got an 08' or I'd risk trying this myself.... good job! I'll just wait on Golden before trying it as I don't want to chance bricking the ECU.
 
#119 · (Edited)
Scott, can you log what is at 0x804700 in EvoScan (or Tactrix Cable)?

That is what you are loading into r0.

i.e. We can just force the value in instead of using the random memory address.


Edit: Log 2 bytes.
 
#120 ·
Scott, can you log what is at 0x804700 in EvoScan (or Tactrix Cable)?

That is what you are loading into r0.

i.e. We can just force the value in instead of using the random memory address.


Edit: Log 2 bytes.
Yep..

I logged both 1 and 2 bytes for the hell of it, separate logs...zero across the board during the whole drive for both.
 
#123 · (Edited)
Scott, can you test this then:

A1BD->6100: 0xA1BD <-- Stock
CF94->7000: 0xCF94 <-- Stock

01E2->7000: 0x01E2 <-- Stock

A0BD->6000: 0x6000 <- 00
877A->7000: 0x7000 <-- Changed

Basically I am forcing the values to 00 instead of reading from some random memory address that is set to 0. It could be that 1 = Failed and 0 = Passed.
 
#124 · (Edited)
A1BD->6100: 0xA1BD <-- Stock
CF94->7000: 0xCF94 <-- Stock

01E2->7000: 0x01E2 <-- Stock

A0BD->6000: 0x60-- <- 00
877A->7000: 0x7000 <-- Changed
Ok I just tried this and it works, everything shows Ready like this

0 Incomplete
7 Ready
--Misfire
--Fuel
--Comp
--Evap
--Cat
--O2 Sensor
--O2 Heater
I went in and changed the names of the definitions so it makes more sense and everything reads correctly. I also got rid of the Availability portion since we won't change any of that.



If anyone's interested, you'd need to remove all of the current patch definitions and replace it with this

Code:
<table name="Inspection Readiness Patch" category="OBD-II" address="8feb8" type="2D" level="2" scaling="Hex16">
  <table type="Static Y Axis" elements="2">
   <data>A0BD->6000</data>
   <data>877A->7000</data>
  </table>
 </table>
 
 <table name="Inspection Monitor - Passed(0)/Failed(1) - READ ONLY Do NOT Change" category="OBD-II" address="8feb9" type="2D" level="2" scaling="blobbits">
  <table name="Non-Continuous Monitor Completion Bits" type="Static Y Axis" elements="8">
   <data>EGR system</data>
   <data>Oxygen heater sensor</data>
   <data>Oxygen sensor</data>
   <data>A/C system refrigerant</data>
   <data>Secondary air system</data>
   <data>Evaporative system</data>
   <data>Heated catalyst</data>
   <data>Catalyst</data>
  </table>
 </table>
 
#287 ·
Ok I just tried this and it works, everything shows Ready like this



I went in and changed the names of the definitions so it makes more sense and everything reads correctly. I also got rid of the Availability portion since we won't change any of that.



If anyone's interested, you'd need to remove all of the current patch definitions and replace it with this

Code:
<table name="Inspection Readiness Patch" category="OBD-II" address="8feb8" type="2D" level="2" scaling="Hex16">
  <table type="Static Y Axis" elements="2">
   <data>A0BD->6000</data>
   <data>877A->7000</data>
  </table>
 </table>
 
 <table name="Inspection Monitor - Passed(0)/Failed(1) - READ ONLY Do NOT Change" category="OBD-II" address="8feb9" type="2D" level="2" scaling="blobbits">
  <table name="Non-Continuous Monitor Completion Bits" type="Static Y Axis" elements="8">
   <data>EGR system</data>
   <data>Oxygen heater sensor</data>
   <data>Oxygen sensor</data>
   <data>A/C system refrigerant</data>
   <data>Secondary air system</data>
   <data>Evaporative system</data>
   <data>Heated catalyst</data>
   <data>Catalyst</data>
  </table>
 </table>
Big thanks for this! I had my first and last emissions test in WA and passed easily with this patch.

 
#134 ·
I wish I would've started 3 months in advance, would've saved me many headaches. Golden will have to answer your question in regards to the specific year of 2012, but he'll probably ask for your ROM ID.

One suggestion I have to be prepared: buy a handheld readiness monitor so you can check for yourself... should cost $40 - $80.
 
#137 ·
It's safe to assume this definitely turns off the check engine light? Since that would be a automatic fail visually.
Does it burn off the 02 sensor though? I heard/read disabling it somehow makes the 02 sensor mess up.



Sent from my Autoguide iPad app
No, the patch does not turn off the CEL, it only forces the monitors to pass when plugged in for inspection. The CEL will still turn on if there's a problem.

The sensor being ruined after it's disabled and left installed I don't know about...maybe someone else has experience with that...
 
This is an older thread, you may not receive a response, and could be reviving an old thread. Please consider creating a new thread.
Top