12587603 Disable Baro Update Patch (Boosted Applications)
Posted: Sun Jun 28, 2020 5:47 am
TLDR: I was able to determine how to disable the code that updates the barometric pressure reading while the engine is running.
It can be done with a single byte change (the OS checksum will need to be updated too).
Bin Address: 0x7ADC2
Factory OS Value: 0x66
Patch Value: 0x60
For the 12587603 OS I am not aware of any forced induction application so I imagine GM accounted for this OS to be able to update the Baro reading while above a specified TPS, RPM, etc.
This caused me headaches when I would get into boost the Baro reading would max out at 104.4 kPa and make by boost reading (MAP - Baro) incorrect. So I took it upon myself to find the code that updates the Baro reading and try to disable it. I just tested my updated code on my vehicle and it seems to work without any side effects that I could see.
It took me a while to get comfortable with actually testing the code on my vehicle, so I'm fairly confident at this point that it will not impact any other functions. This will obviously remove the ability for the Baro to update while driving, but since the PCM uses the MAP sensor to get this reading it will not be easily done with a forced induction application anyway.
How I did it:
Essentially how this single byte change causes the baro update code to be bypassed is quite simple actually. There is a conditional branch instruction that starts at the address listed above. This condition is based on the engine in a running state. If the engine is not running all of the code is bypassed. I simply changed that conditional branch into a unconditional branch, so no matter if the engine is running or not that code is bypassed.
I used Ghidra, PcmHammer, PcmLogger, and TunerPro to investigate, debug, and test this patch. So thanks to all the people who worked on those projects.
-Branden
It can be done with a single byte change (the OS checksum will need to be updated too).
Bin Address: 0x7ADC2
Factory OS Value: 0x66
Patch Value: 0x60
For the 12587603 OS I am not aware of any forced induction application so I imagine GM accounted for this OS to be able to update the Baro reading while above a specified TPS, RPM, etc.
This caused me headaches when I would get into boost the Baro reading would max out at 104.4 kPa and make by boost reading (MAP - Baro) incorrect. So I took it upon myself to find the code that updates the Baro reading and try to disable it. I just tested my updated code on my vehicle and it seems to work without any side effects that I could see.
It took me a while to get comfortable with actually testing the code on my vehicle, so I'm fairly confident at this point that it will not impact any other functions. This will obviously remove the ability for the Baro to update while driving, but since the PCM uses the MAP sensor to get this reading it will not be easily done with a forced induction application anyway.
How I did it:
Essentially how this single byte change causes the baro update code to be bypassed is quite simple actually. There is a conditional branch instruction that starts at the address listed above. This condition is based on the engine in a running state. If the engine is not running all of the code is bypassed. I simply changed that conditional branch into a unconditional branch, so no matter if the engine is running or not that code is bypassed.
I used Ghidra, PcmHammer, PcmLogger, and TunerPro to investigate, debug, and test this patch. So thanks to all the people who worked on those projects.
-Branden