Toyota GR86, 86, FR-S and Subaru BRZ Forum & Owners Community - FT86CLUB

Toyota GR86, 86, FR-S and Subaru BRZ Forum & Owners Community - FT86CLUB (https://www.ft86club.com/forums/index.php)
-   Software Tuning (https://www.ft86club.com/forums/forumdisplay.php?f=88)
-   -   Open source Over Boost Fuel Cut (https://www.ft86club.com/forums/showthread.php?t=93000)

ztan 08-07-2015 07:28 PM

Open source Over Boost Fuel Cut
 
3 Attachment(s)
***Use at your own risk.***

This implementation hijacks the speed limiting fuel cut routine and assesses MAP instead of vehicle speed.

Defined for A00G/A01G ROM: a single value in the speed limiting fuel cut routine is changed (from 0x58 to 0x5A) to get MAP loaded instead of speed and MAP limits are entered in place of speed limits. To clarify, no additional patch is needed for this modification besides the single value switch in the code - thanks to Subaru engineers who just lifted the speed limit rather than write new code.

Defs and test log with 1.35 Bar cut limit and 4400 RPM active.
First ramp showing MAP > 1.35, RPM < 4400: No fuel cut.
Second ramp showing MAP > 1.35, fuel cut when RPM hits 4400.
Third ramp showing RPM > 4400, fuel cut when MAP hits 1.35.

This is a neck-snapping hard fuel cut, but probably better than a blown engine due to major overboost. Haven't done extensive testing and you'll lose your speed limiter fuel cut if you apply this (default set to fuel cut over 500 km/h).

Def for A00G/A01G:
Code:

   
    <table name="Boost Limit (Fuel Cut) enable" storageaddress="66831" />
    <table name="Boost Limit (Fuel Cut)" storageaddress="10C540" />
    <table name="Boost Limit (Fuel Cut) Resume" storageaddress="10C550" />
    <table name="Boost Limit (RPM) Active" storageaddress="10C554" />
   
<!--<table name="Speed Limiting Enable (Fuel Cut)" storageaddress="10C540" />
    <table name="Speed Limiting Disable (Fuel Cut)" storageaddress="10C548" />
   
<table type="Switch" name="Boost Limit (Fuel Cut) enable" category="Miscellaneous - Limits" sizey="1">
      <description>Enable Boost Limit (Fuel Cut)</description>
      <state name="Enabled" data="5A" />
      <state name="Stock ROM" data="58" />
</table>
       
<table type="2D" name="Boost Limit (Fuel Cut)" category="Miscellaneous - Limits" storagetype="float" endian="little" sizey="4" userlevel="4">
      <scaling units="Manifold Abs Pressure Bar" expression="x*.001333224" to_byte="x/.001333224" format="#0.000" fineincrement=".001" coarseincrement="0.01" />
      <table type="Static Y Axis" name="Boost Limit Fuel Cut" sizey="4">
        <data>On Above</data>
        <data>On Above</data>
        <data>Off Below</data>
        <data>Off Below</data>
    </table>
          <description>These are the MAP values at which the boost limiter is engaged and disengaged. When engine speed is equal to or exceeds the 'On' value, fuel cut is active, after which, if engine speed drops below the 'Off' value, fueling is resumed.</description>
    </table>   

<table type="2D" name="Boost Limit (Fuel Cut) Resume" category="Miscellaneous - Limits" storagetype="float" endian="little" sizey="1" userlevel="4">
      <scaling units="Manifold Abs Pressure Bar" expression="x*.001333224" to_byte="x/.001333224" format="#0.000" fineincrement=".001" coarseincrement="0.01" />
      <table type="Static Y Axis" name="Boost Limit Fuel Resume (MAP)" sizey="1">
        <data>Below</data>
      </table>
      <description>After the boost limiter is engaged and engine speed drops below the 'Off' RPM, fueling will not resume until manifold pressure drops below this table's value.</description>
      </table>     
     
<table type="2D" name="Boost Limit (RPM) Active" category="Miscellaneous - Limits" storagetype="float" endian="little" sizey="1" userlevel="4">
      <scaling units="Engine Speed (RPM)" expression="x" to_byte="x" format="#" fineincrement="50" coarseincrement="100" />
      <table type="Static Y Axis" name="Boost Limit Active over" sizey="1">
        <data>Over</data>
      </table>
      <description>The boost limiter is active over this RPM</description>
      </table>


ztan 08-07-2015 08:15 PM

Just realized that I set my cut and resume values the wrong way around during that test and in the above example, cut would be > 1.3 Bar with resume < 1.35 Bar (no hysteresis with values set as above).

Shiv@Openflash 08-08-2015 02:33 AM

Quote:

Originally Posted by ztan (Post 2350198)
***Use at your own risk.***

This implementation hijacks the speed limiting fuel cut routine and assesses MAP instead of vehicle speed.

Defined for A01G ROM: a single value in the speed limiting fuel cut routine is changed (from 0x58 to 0x5A) to get MAP loaded instead of speed and MAP limits are entered in place of speed limits.

Defs and test log with 1.35 Bar cut limit and 4400 RPM active.
First ramp showing MAP > 1.35, RPM < 4400: No fuel cut.
Second ramp showing MAP > 1.35, fuel cut when RPM hits 4400.
Third ramp showing RPM > 4400, fuel cut when MAP hits 1.35.

This is a neck-snapping hard fuel cut, but probably better than a blown engine due to major overboost. Haven't done extensive testing and you'll lose your speed limiter fuel cut if you apply this (default set to fuel cut over 500 km/h).

Def for A01G:
Code:

   
    <table name="Boost Limit (Fuel Cut) enable" storageaddress="66831" />
    <table name="Boost Limit (Fuel Cut)" storageaddress="10C540" />
    <table name="Boost Limit (Fuel Cut) Resume" storageaddress="10C550" />
    <table name="Boost Limit (RPM) Active" storageaddress="10C554" />
   
<!--<table name="Speed Limiting Enable (Fuel Cut)" storageaddress="10C540" />
    <table name="Speed Limiting Disable (Fuel Cut)" storageaddress="10C548" />
   
<table type="Switch" name="Boost Limit (Fuel Cut) enable" category="Miscellaneous - Limits" sizey="1">
      <description>Enable Boost Limit (Fuel Cut)</description>
      <state name="Enabled" data="5A" />
      <state name="Stock ROM" data="58" />
</table>
       
<table type="2D" name="Boost Limit (Fuel Cut)" category="Miscellaneous - Limits" storagetype="float" endian="little" sizey="4" userlevel="4">
      <scaling units="Manifold Abs Pressure Bar" expression="x*.001333224" to_byte="x/.001333224" format="#0.000" fineincrement=".001" coarseincrement="0.01" />
      <table type="Static Y Axis" name="Boost Limit Fuel Cut" sizey="4">
        <data>On Above</data>
        <data>On Above</data>
        <data>Off Below</data>
        <data>Off Below</data>
    </table>
          <description>These are the MAP values at which the boost limiter is engaged and disengaged. When engine speed is equal to or exceeds the 'On' value, fuel cut is active, after which, if engine speed drops below the 'Off' value, fueling is resumed.</description>
    </table>   

<table type="2D" name="Boost Limit (Fuel Cut) Resume" category="Miscellaneous - Limits" storagetype="float" endian="little" sizey="1" userlevel="4">
      <scaling units="Manifold Abs Pressure Bar" expression="x*.001333224" to_byte="x/.001333224" format="#0.000" fineincrement=".001" coarseincrement="0.01" />
      <table type="Static Y Axis" name="Boost Limit Fuel Resume (MAP)" sizey="1">
        <data>Below</data>
      </table>
      <description>After the boost limiter is engaged and engine speed drops below the 'Off' RPM, fueling will not resume until manifold pressure drops below this table's value.</description>
      </table>     
     
<table type="2D" name="Boost Limit (RPM) Active" category="Miscellaneous - Limits" storagetype="float" endian="little" sizey="1" userlevel="4">
      <scaling units="Engine Speed (RPM)" expression="x" to_byte="x" format="#" fineincrement="50" coarseincrement="100" />
      <table type="Static Y Axis" name="Boost Limit Active over" sizey="1">
        <data>Over</data>
      </table>
      <description>The boost limiter is active over this RPM</description>
      </table>


Fantastic work! :clap:

Shiv@Openflash 08-08-2015 10:17 PM

You have email :)

ztan 08-09-2015 05:32 AM

I've sent Shiv addresses for OFT_B01C ROM to test (only for OFT 2.xx ROMs). If anyone else with FI running A00C or A01C ROM wants some addresses to test before general release, get in touch with me.

Also note above that I have defined MAP pressure for fuel cut rather than boost (MRP) pressure. Just so no-one gets ideas of running at 1.3 Bar Boost = 19psi Boost, I did my testing on low boost: 1.3 Bar MAP = 0.3 Bar Boost = 4.35 psi Boost.

Shiv@Openflash 08-09-2015 01:41 PM

Quote:

Originally Posted by ztan (Post 2351319)
I've sent Shiv addresses for OFT_B01C ROM to test (only for OFT 2.xx ROMs). If anyone else with FI running A00C or A01C ROM wants some addresses to test before general release, get in touch with me.

Also note above that I have defined MAP pressure for fuel cut rather than boost (MRP) pressure. Just so no-one gets ideas of running at 1.3 Bar Boost = 19psi Boost, I did my testing on low boost: 1.3 Bar MAP = 0.3 Bar Boost = 4.35 psi Boost.

Thank ztan, I'll be testing in our turbo car on Monday. Once again, fantastic work and big kudos on your desire to contribute to the open source community :thumbsup:

ztan 08-13-2015 09:30 AM

1 Attachment(s)
Shiv: thanks for the recommendation.

Shiv@Openflash 08-13-2015 12:32 PM

Quote:

Originally Posted by ztan (Post 2355921)
Shiv: thanks for the recommendation.

Nice! That's all my wife's doing. I haven't been to India in 10+ years! Have a great time :cheers:

Shiv@Openflash 08-20-2015 08:44 PM

ztan knocked it out of the park. I just tested his update in our turbo FRS and it works beautifully. So beautifully, that I'll be adding it to all OFT350 customer tunes. In the datalog below, I have the boost cut to set to 9psi:

http://datazap.me/u/shivvishnu/oft-z...=0&data=2-9-13

Great work ztan. The community appreciates it!

ztan 08-24-2015 04:19 AM

Quote:

Originally Posted by Shiv@Openflash (Post 2364409)
ztan knocked it out of the park. I just tested his update in our turbo FRS and it works beautifully. So beautifully, that I'll be adding it to all OFT350 customer tunes. In the datalog below, I have the boost cut to set to 9psi:

http://datazap.me/u/shivvishnu/oft-z...=0&data=2-9-13

Great work ztan. The community appreciates it!

For those of you on B01C, this is what I sent to Shiv:

Note that I have set this .xml description to "boost" pressure in psi over atmospheric. Use the descriptor at the top of the post if you work in absolute Bar.

B01C:
Code:

   
    <table name="Boost Limit (Fuel Cut) enable" storageaddress="69171" />   
    <table name="Boost Limit (Fuel Cut)" storageaddress="10E5EC" />
    <table name="Boost Limit (Fuel Cut) Resume" storageaddress="10E5FC" />
    <table name="Boost Limit (RPM) Active" storageaddress="10E600" />
   
    <table type="Switch" name="Boost Limit (Fuel Cut) enable" category="Miscellaneous - Limits" sizey="1">
      <description>Enable Boost Limit (Fuel Cut)</description>
      <state name="Enabled" data="5A" />
      <state name="Stock ROM" data="58" />
    </table>
    <table type="2D" name="Boost Limit (Fuel Cut)" category="Miscellaneous - Limits" storagetype="float" endian="little" sizey="4" userlevel="4">
      <scaling units="Manifold Pressure (psi relative sea level)" expression="(x-760)*.01933677" to_byte="(x/.01933677)+760" format="#0.00" fineincrement=".01" coarseincrement=".5" />
      <table type="Static Y Axis" name="Boost Limit Fuel Cut" sizey="4">
        <data>On Above</data>
        <data>On Above</data>
        <data>Off Below</data>
        <data>Off Below</data>
    </table>
      <description>These are the MAP values at which the boost limiter is engaged and disengaged. When engine speed is equal to or exceeds the 'On' value, fuel cut is active, after which, if engine speed drops below the 'Off' value, fueling is resumed.</description>
    </table>
        <table type="2D" name="Boost Limit (Fuel Cut) Resume" category="Miscellaneous - Limits" storagetype="float" endian="little" sizey="1" userlevel="4">
      <scaling units="Manifold Pressure (psi relative sea level)" expression="(x-760)*.01933677" to_byte="(x/.01933677)+760" format="#0.00" fineincrement=".01" coarseincrement=".5" />
      <table type="Static Y Axis" name="Boost Limit Fuel Resume (MAP)" sizey="1">
        <data>Below</data>
      </table>
      <description>After the boost limiter is engaged and engine speed drops below the 'Off' RPM, fueling will not resume until manifold pressure drops below this table's value.</description>
      </table>
        <table type="2D" name="Boost Limit (RPM) Active" category="Miscellaneous - Limits" storagetype="float" endian="little" sizey="1" userlevel="4">
      <scaling units="Engine Speed (RPM)" expression="x" to_byte="x" format="#" fineincrement="50" coarseincrement="100" />
      <table type="Static Y Axis" name="Boost Limit Active over" sizey="1">
        <data>Over</data>
      </table>
      <description>The boost limiter is active over this RPM</description>
      </table>


Grip Ronin 09-04-2015 09:19 PM

this is great im going to need to add this to the sbd tune. would the same codes work on a A00c rom?

ztan 09-05-2015 04:38 AM

Quote:

Originally Posted by Grip Ronin (Post 2380844)
this is great im going to need to add this to the sbd tune. would the same codes work on a A00c rom?

I don't think so, but I haven't checked A00C.
Send me a PM and we can work on pulling them for A00C.

ztan 09-09-2015 07:44 PM

Pulled on Grip Ronin's request for A00C/A01C, no feedback yet.

Can someone test and report on the following if you have FI and A00C or A01C (use one of the two .xml descriptors above):

Code:

<table name="Boost Limit (Fuel Cut) enable" storageaddress="68F71" />
<table name="Boost Limit (Fuel Cut)" storageaddress="10E600" />
<table name="Boost Limit (Fuel Cut) Resume" storageaddress="10E610" />
<table name="Boost Limit (RPM) Active" storageaddress="10E614" />


Grip Ronin 10-04-2015 01:54 PM

Quote:

Originally Posted by ztan (Post 2385117)
Pulled on Grip Ronin's request for A00C/A01C, no feedback yet.

Can someone test and report on the following if you have FI and A00C or A01C (use one of the two .xml descriptors above):

Code:

<table name="Boost Limit (Fuel Cut) enable" storageaddress="68F71" />
<table name="Boost Limit (Fuel Cut)" storageaddress="10E600" />
<table name="Boost Limit (Fuel Cut) Resume" storageaddress="10E610" />
<table name="Boost Limit (RPM) Active" storageaddress="10E614" />


ya turbos still in my living room. just finished porting the turbine housing and wg. still weeks away from install lol.

Sportsguy83 04-27-2016 11:10 AM

Quote:

Originally Posted by ztan (Post 2350198)
***Use at your own risk.***

This implementation hijacks the speed limiting fuel cut routine and assesses MAP instead of vehicle speed.

Defined for A00G/A01G ROM: a single value in the speed limiting fuel cut routine is changed (from 0x58 to 0x5A) to get MAP loaded instead of speed and MAP limits are entered in place of speed limits. To clarify, no additional patch is needed for this modification besides the single value switch in the code - thanks to Subaru engineers who just lifted the speed limit rather than write new code.

This is really great work man!! You're awesome!

makinen 01-06-2018 06:52 AM

1 Attachment(s)
This boost cut mod is working pretty well!
I modified A01E CAL ID rom file for this boost cut mod and got good result.
Boost cut activated at 8 psi and deactivated at 7.5 psi.

Attachment 161593
https://datazap.me/u/makinenkr/20180...zoom=2728-2758

It might need fine tuning of parameters to prevent boost fluctuation.

Good job @ztan !

steve99 01-08-2018 01:42 AM

Quote:

Originally Posted by makinen (Post 3024583)
This boost cut mod is working pretty well!
I modified A01E CAL ID rom file for this boost cut mod and got good result.
Boost cut activated at 8 psi and deactivated at 7.5 psi.

Attachment 161593
https://datazap.me/u/makinenkr/20180...zoom=2728-2758

It might need fine tuning of parameters to prevent boost fluctuation.

Good job @ztan !


Nice work,

you could likey just use the entire A01G rom in your car and get flexfuel as well

makinen 07-06-2018 02:16 AM

I've applied over boost fuel cut to and tested with Kouki K00G-based OTS ROM. It works as A01E or G.

makinen 07-05-2023 08:30 AM

Modifications for K00G
 
As @AussieBRZ mentioned this is required for K00G rom, I'd like to add my modifications for K00G. Any rom definitions based on K00G could work.

But as usual use this at your own risk.

Code:

                <!--table name="Speed Limiting Enable (Fuel Cut)" storageaddress="10e924"/-->
                <table name="Boost Limit (Fuel Cut) enable" storageaddress="69D45" />   
                <table name="Boost Limit (Fuel Cut)" storageaddress="10E924" />
                <table name="Boost Limit (Fuel Cut) Resume" storageaddress="10E934" />
                <table name="Boost Limit (RPM) Active" storageaddress="10E938" />
                <!--table name="Speed Limiting Disable (Fuel Cut)" storageaddress="10e92c"/-->

This tweak works by toggling "Boost Limit (Fuel Cut) enable" which writes not a value byte but a code byte actually.

Code:

                <table type="Switch" name="Boost Limit (Fuel Cut) enable" category="Miscellaneous - Limits" sizey="1">
                  <description>Enable Boost Limit (Fuel Cut)</description>
                  <state name="Enabled" data="5A" />
                  <state name="Stock ROM" data="58" />
                </table>
                <table type="2D" name="Boost Limit (Fuel Cut)" category="Miscellaneous - Limits" storagetype="float" endian="little" sizey="4" userlevel="4">
                  <scaling units="Manifold Pressure (psi relative sea level)" expression="(x-760)*.01933677" to_byte="(x/.01933677)+760" format="#0.00" fineincrement=".01" coarseincrement=".5" />
                  <table type="Static Y Axis" name="Boost Limit Fuel Cut" sizey="4">
                        <data>On Above</data>
                        <data>On Above</data>
                        <data>Off Below</data>
                        <data>Off Below</data>
                </table>
                  <description>These are the MAP values at which the boost limiter is engaged and disengaged. When engine speed is equal to or exceeds the 'On' value, fuel cut is active, after which, if engine speed drops below the 'Off' value, fueling is resumed.</description>
                </table>
                        <table type="2D" name="Boost Limit (Fuel Cut) Resume" category="Miscellaneous - Limits" storagetype="float" endian="little" sizey="1" userlevel="4">
                  <scaling units="Manifold Pressure (psi relative sea level)" expression="(x-760)*.01933677" to_byte="(x/.01933677)+760" format="#0.00" fineincrement=".01" coarseincrement=".5" />
                  <table type="Static Y Axis" name="Boost Limit Fuel Resume (MAP)" sizey="1">
                        <data>Below</data>
                  </table>
                  <description>After the boost limiter is engaged and engine speed drops below the 'Off' RPM, fueling will not resume until manifold pressure drops below this table's value.</description>
                </table>
                <table type="2D" name="Boost Limit (RPM) Active" category="Miscellaneous - Limits" storagetype="float" endian="little" sizey="1" userlevel="4">
                  <scaling units="Engine Speed (RPM)" expression="x" to_byte="x" format="#" fineincrement="50" coarseincrement="100" />
                  <table type="Static Y Axis" name="Boost Limit Active over" sizey="1">
                        <data>Over</data>
                  </table>
                  <description>The boost limiter is active over this RPM</description>
                </table>


callisto 02-15-2026 01:32 AM

Quote:

Originally Posted by makinen (Post 3586160)
As @AussieBRZ mentioned this is required for K00G rom, I'd like to add my modifications for K00G. Any rom definitions based on K00G could work.

But as usual use this at your own risk.

Code:

                <!--table name="Speed Limiting Enable (Fuel Cut)" storageaddress="10e924"/-->
                <table name="Boost Limit (Fuel Cut) enable" storageaddress="69D45" />   
                <table name="Boost Limit (Fuel Cut)" storageaddress="10E924" />
                <table name="Boost Limit (Fuel Cut) Resume" storageaddress="10E934" />
                <table name="Boost Limit (RPM) Active" storageaddress="10E938" />
                <!--table name="Speed Limiting Disable (Fuel Cut)" storageaddress="10e92c"/-->


This is, apparently, completely unchanged all the way to V00C/U01A. And confirms something, since I have a variable there labeled "map_maybe". Thank you for posting this! For those who need it, then, here's the correct addresses for those (the rest of the definitions are unchanged as per above).

U01A:

Code:

                <table name="Boost Limit (Fuel Cut) enable" storageaddress="6A9E9" />   
                <table name="Boost Limit (Fuel Cut)" storageaddress="10E604" />
                <table name="Boost Limit (Fuel Cut) Resume" storageaddress="10E614" />
                <table name="Boost Limit (RPM) Active" storageaddress="10E618" />

V00C:

Code:

                <table name="Boost Limit (Fuel Cut) enable" storageaddress="71579" />   
                <table name="Boost Limit (Fuel Cut)" storageaddress="11207C" />
                <table name="Boost Limit (Fuel Cut) Resume" storageaddress="11208C" />
                <table name="Boost Limit (RPM) Active" storageaddress="112090" />

The exact bytes surrounding the 'enable' location are unchanged from A01C..V00C, so:

4c f0 ff cb ff eb ff fb d2 <Enable>58 fe 28 d2 58 fc 28 d2 58 ff 28 d2 58 42 4b d2 58 42 0b 6c 0c

Searching for those hex bytes in the file appears to return a single location in any BRZ gen1 ECU, and that first '58' in the command 'd2 58' is what the 'enable' entry modifies above. Similarly, this locates the other three addresses:

44 7a 00 00 44 7a 80 00 <Fuel Cut>43 fa 00 00 43 fa 00 00 43 f5 00 00 43 f5 00 00 <Resume>44 7a 00 00 <Active>45 89 80 00

(If you are not familiar with hex editing and can't recover from a bricked ECU, you probably shouldn't try to use this information, but if you understand what you're doing, this is perhaps hours to weeks of time saved. Cheers.)


All times are GMT -4. The time now is 08:32 PM.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2026, vBulletin Solutions Inc.
User Alert System provided by Advanced User Tagging v3.3.0 (Lite) - vBulletin Mods & Addons Copyright © 2026 DragonByte Technologies Ltd.


Garage vBulletin Plugins by Drive Thru Online, Inc.