FreeFuel ECU patch - a flex fuel implementation to Evo ECU
I got the circuit built and tested it with the sensor and some control fuel mixtures this weekend. Output voltages were a little higher then expected which I traced to an out of spec C1. It measured 10.4 nF , too far to the high end of the tolerance range. I found another capacitor which measured 9.8 nF, soldered it in, and it gave me the correct output range. I recalibrated using Air = E0 = 50Hz = 1.59V; E80 = 135Hz = 4.26V, and E100 = 158Hz = 4.98V. Here is the finished product.

Next up was to complete the loom for the sensor and finally the power and ground feed ready for installation next week. All set!


Next up was to complete the loom for the sensor and finally the power and ground feed ready for installation next week. All set!

I got the circuit built and tested it with the sensor and some control fuel mixtures this weekend. Output voltages were a little higher then expected which I traced to an out of spec C1. It measured 10.4 nF , too far to the high end of the tolerance range. I found another capacitor which measured 9.8 nF, soldered it in, and it gave me the correct output range. I recalibrated using Air = E0 = 50Hz = 1.59V; E80 = 135Hz = 4.26V, and E100 = 158Hz = 4.98V. Here is the finished product.
Hey Guys,
I converted over to E85 on the weekend so still have plenty more tuning to do, but the injector scaling is tuned. I have just got my ECA system installed and working. The one remaining thing is to wire it into the ECU (Need to find my ECU pins buried in the garage) Once I have done that I have everything I need to get this flex fuel patch working, I’m in Australia and running the 88580714 V7 ROM. Can anyone give me some pointers on how to go about porting this over to my ROM?
I saw a question about best location for mounting the sensor . See pics below of my setup. In this position I get an accurate reading straight away from start up when sitting overnight, so no issues there. I can take a video if anyone is interested. I also installed a 6 micron (fibreglass) fuelab filter right before the engine.



Also pic of my Zeitronix gauge mounted in the coin tray (RHD).


I have done a little bit of tuning and even less playing round with XML files, but I would imagine I basically have to find all the addresses for my ROM that the patch needs to reference? Having a system that can take any mix of ethanol sounds like an ideal setup and I'm really keen to get it working!
I converted over to E85 on the weekend so still have plenty more tuning to do, but the injector scaling is tuned. I have just got my ECA system installed and working. The one remaining thing is to wire it into the ECU (Need to find my ECU pins buried in the garage) Once I have done that I have everything I need to get this flex fuel patch working, I’m in Australia and running the 88580714 V7 ROM. Can anyone give me some pointers on how to go about porting this over to my ROM?
I saw a question about best location for mounting the sensor . See pics below of my setup. In this position I get an accurate reading straight away from start up when sitting overnight, so no issues there. I can take a video if anyone is interested. I also installed a 6 micron (fibreglass) fuelab filter right before the engine.



Also pic of my Zeitronix gauge mounted in the coin tray (RHD).


I have done a little bit of tuning and even less playing round with XML files, but I would imagine I basically have to find all the addresses for my ROM that the patch needs to reference? Having a system that can take any mix of ethanol sounds like an ideal setup and I'm really keen to get it working!
Last edited by FATDAT7; Feb 10, 2014 at 02:38 AM.
Hey Guys,
I converted over to E85 on the weekend so still have plenty more tuning to do, but the injector scaling is tuned. I have just got my ECA system installed and working. The one remaining thing is to wire it into the ECU (Need to find my ECU pins buried in the garage) Once I have done that I have everything I need to get this flex fuel patch working, I’m in Australia and running the 88580714 V7 ROM. Can anyone give me some pointers on how to go about porting this over to my ROM?
I saw a question about best location for mounting the sensor . See pics below of my setup. In this position I get an accurate reading straight away from start up when sitting overnight, so no issues there. I can take a video if anyone is interested. I also installed a 6 micron (fibreglass) fuelab filter right before the engine.
Attachment 219041
Attachment 219042
Attachment 219043
Also pic of my Zeitronix gauge mounted in the coin tray (RHD).
Attachment 219044
Attachment 219045
I have done a little bit of tuning and even less playing round with XML files, but I would imagine I basically have to find all the addresses for my ROM that the patch needs to reference? Having a system that can take any mix of ethanol sounds like an ideal setup and I'm really keen to get it working!
I converted over to E85 on the weekend so still have plenty more tuning to do, but the injector scaling is tuned. I have just got my ECA system installed and working. The one remaining thing is to wire it into the ECU (Need to find my ECU pins buried in the garage) Once I have done that I have everything I need to get this flex fuel patch working, I’m in Australia and running the 88580714 V7 ROM. Can anyone give me some pointers on how to go about porting this over to my ROM?
I saw a question about best location for mounting the sensor . See pics below of my setup. In this position I get an accurate reading straight away from start up when sitting overnight, so no issues there. I can take a video if anyone is interested. I also installed a 6 micron (fibreglass) fuelab filter right before the engine.
Attachment 219041
Attachment 219042
Attachment 219043
Also pic of my Zeitronix gauge mounted in the coin tray (RHD).
Attachment 219044
Attachment 219045
I have done a little bit of tuning and even less playing round with XML files, but I would imagine I basically have to find all the addresses for my ROM that the patch needs to reference? Having a system that can take any mix of ethanol sounds like an ideal setup and I'm really keen to get it working!
For 88580714 you're out of luck unless you can disassemble it and find a place for ast's code, then reassemble recompile and test, debug, correct and repeat.
Last edited by CDrinkH2O; Feb 10, 2014 at 08:23 AM.
Hey Guys, I converted over to E85 on the weekend so still have plenty more tuning to do, but the injector scaling is tuned. I have just got my ECA system installed and working. The one remaining thing is to wire it into the ECU (Need to find my ECU pins buried in the garage) Once I have done that I have everything I need to get this flex fuel patch working, Im in Australia and running the 88580714 V7 ROM. Can anyone give me some pointers on how to go about porting this over to my ROM? I saw a question about best location for mounting the sensor . See pics below of my setup. In this position I get an accurate reading straight away from start up when sitting overnight, so no issues there. I can take a video if anyone is interested. I also installed a 6 micron (fibreglass) fuelab filter right before the engine. Also pic of my Zeitronix gauge mounted in the coin tray (RHD). I have done a little bit of tuning and even less playing round with XML files, but I would imagine I basically have to find all the addresses for my ROM that the patch needs to reference? Having a system that can take any mix of ethanol sounds like an ideal setup and I'm really keen to get it working!
need help from ast
UPDATE:
I installed my frequency to voltage converter, hooked it to the ff sensor and ecu, and flashed 9653E706 with force on. Everything works as expected and I'm logging mut 83 in evoscan to give E%. I drove it around for a couple of weeks to make sure everything worked. All was well. Last weekend I extrapolated tuned eth and gas injector scalings out to 100% and 0% and then turned force off.
Problem! It runs but way too lean. My stf trim at idle maxes out straightaway.
ast can you help me with the evoscan xml settings required to log the 2byte variables including:
FF_SENSOR_FILT_ADDR: .long 0xFFFF94C0,
FF_INJ_SCALING_ADDR: .long 0xFFFF94C2
FF_FUEL_RES_DBG: .long 0xFFFF94CC
so I can debug what is going on?
It looks like the filtered value for ff sensor voltage is way lower than the actual ff sensor voltage visible on MUT83 at idle. This seems to be driving the interpolated injector scaling value way too lean. My problem is that I cant get evoscan to log the 2 byte words in those locations even after adding them to unused MUT table locations. If I can see the variables I can debug the code.
Here is what I'm trying in Evoscan - but it is not reading the 2 bytes at MUT E3=0xffff94c2 and E4=0xfff94c3 for some reason:
I installed my frequency to voltage converter, hooked it to the ff sensor and ecu, and flashed 9653E706 with force on. Everything works as expected and I'm logging mut 83 in evoscan to give E%. I drove it around for a couple of weeks to make sure everything worked. All was well. Last weekend I extrapolated tuned eth and gas injector scalings out to 100% and 0% and then turned force off.
Problem! It runs but way too lean. My stf trim at idle maxes out straightaway.
ast can you help me with the evoscan xml settings required to log the 2byte variables including:
FF_SENSOR_FILT_ADDR: .long 0xFFFF94C0,
FF_INJ_SCALING_ADDR: .long 0xFFFF94C2
FF_FUEL_RES_DBG: .long 0xFFFF94CC
so I can debug what is going on?
It looks like the filtered value for ff sensor voltage is way lower than the actual ff sensor voltage visible on MUT83 at idle. This seems to be driving the interpolated injector scaling value way too lean. My problem is that I cant get evoscan to log the 2 byte words in those locations even after adding them to unused MUT table locations. If I can see the variables I can debug the code.
Here is what I'm trying in Evoscan - but it is not reading the 2 bytes at MUT E3=0xffff94c2 and E4=0xfff94c3 for some reason:
Code:
<DataListItem DataLog="N" Color="" Display="FF Inj Scaling" LogReference="FFInjScaling" RequestID="E3" RequestID2="E4" Eval="131*29241/x" Unit="cc/min" MetricEval="" MetricUnit="" ResponseBytes="1" GaugeMin="60" GaugeMax="2500" ChartMin="60" ChartMax="2500" ScalingFactor="1" Notes="This value will display the interpolated FlexFuel injector scale using the FF Injector Interpolation Factor to interpolate between the Ethanol injector scale and the Gasoline injector scale" Priority="1" Visible="False" LogHide="false" />
Last edited by CDrinkH2O; Feb 26, 2014 at 08:45 PM. Reason: Added code for Evoscan DataListItem
Many thanks to donner for getting me back on track with logging. He explained the reason that I couldn't log the flex fuel RAM variables was that MUT requests C0-FF are reserved for commands. I was trying to use the range E1-EA and getting nothing. Requests to read RAM variables must go between 00 and BF.
Once I moved the MUT requests back into the right range I could see the problem in Evoscan. My frequency to analog circuit output voltage and input to the ECU had dropped to 2.11V. As soon as I turned Force off the filtered input also dropped to 2.11V, and the interpolated injector value increased 1121 cc/min because it thought I was on E15! That explains why it went so lean as soon as I turned Force off.
Next I retested my wiring and connections between sensor and F-to-ADC converter - all good. Next I yanked the circuit board and checked the tracks and components, found a broken joint, resoldered, retested, reinstalled, recalibrated the sensor, entered the new sensor range voltages into the ROM and flashed it. Fantastic - now it works!
OK - now we're back on track for testing 9653E706. I'm going to drive it around this weekend, data log, watch the trims, and check my E85 tune is safe at WOT. At tank empty I'll fill up with 91 and do the same. Next I'll start mixing my own cocktails and see how the system performs.
I'm more interested in how the F-to-ADC circuit and the ROM work together at the E0-20% end of the scale because the response of the circuit I built is not linear. The reason is that if the tune is out, even a ltttle, I can quickly do serious harm to the motor with too little fuel, or too much advance/boost. The features that ast built in to the code in 9653E706 allow this effect to be filtered for the low end of the E% range. Once I've got this part figured out I'll report back.
Hey ast! - your design and assembly code look solid. The 20 year gap doesn't show.
Once I moved the MUT requests back into the right range I could see the problem in Evoscan. My frequency to analog circuit output voltage and input to the ECU had dropped to 2.11V. As soon as I turned Force off the filtered input also dropped to 2.11V, and the interpolated injector value increased 1121 cc/min because it thought I was on E15! That explains why it went so lean as soon as I turned Force off.
Next I retested my wiring and connections between sensor and F-to-ADC converter - all good. Next I yanked the circuit board and checked the tracks and components, found a broken joint, resoldered, retested, reinstalled, recalibrated the sensor, entered the new sensor range voltages into the ROM and flashed it. Fantastic - now it works!

OK - now we're back on track for testing 9653E706. I'm going to drive it around this weekend, data log, watch the trims, and check my E85 tune is safe at WOT. At tank empty I'll fill up with 91 and do the same. Next I'll start mixing my own cocktails and see how the system performs.
I'm more interested in how the F-to-ADC circuit and the ROM work together at the E0-20% end of the scale because the response of the circuit I built is not linear. The reason is that if the tune is out, even a ltttle, I can quickly do serious harm to the motor with too little fuel, or too much advance/boost. The features that ast built in to the code in 9653E706 allow this effect to be filtered for the low end of the E% range. Once I've got this part figured out I'll report back.
Hey ast! - your design and assembly code look solid. The 20 year gap doesn't show.
Last edited by CDrinkH2O; Mar 1, 2014 at 10:32 AM.
After two weeks of daily driving, and trying different cocktails of between E10 and E80, I'm VERY happy with this ROM. Interpolation for fuel, boost (using EBC), timing, and initial priming all work perfectly. E10-20 didn't cause any detonation problems even though the response of the circuit I built is not linear in this region.
Extrapolated injector sizes needed tweaking slightly to hit the expected interpolated values for E10 (premium 91) and E80. To get the tune spot on I had to raise the ethanol injector scaling value by 55 ccs, and the gasoline scaling by 20 ccs other wise LTFTs were up to -10%. I'm not sure yet why the ROM's injector scaling interpolation doesn't hit the right values.
I've reached my stretch goal of converting to flex fuel for less than $200, eliminated the inconvenience of running it almost dry before filling up with either E85 or 91, and removed any nagging doubts about the tune when thrashing the local Porches and BMWs on the road or track.
Extrapolated injector sizes needed tweaking slightly to hit the expected interpolated values for E10 (premium 91) and E80. To get the tune spot on I had to raise the ethanol injector scaling value by 55 ccs, and the gasoline scaling by 20 ccs other wise LTFTs were up to -10%. I'm not sure yet why the ROM's injector scaling interpolation doesn't hit the right values.
I've reached my stretch goal of converting to flex fuel for less than $200, eliminated the inconvenience of running it almost dry before filling up with either E85 or 91, and removed any nagging doubts about the tune when thrashing the local Porches and BMWs on the road or track.
Last edited by CDrinkH2O; Mar 16, 2014 at 10:29 PM. Reason: typo
What is it
Other than that there are only few calls to map read functions replaced with calls to FreeFuel functions and few places where the injector size variable used has been changed to FreeFuel interpolated variable. Also injector scaling resolution has been increased by changing fixed constant 0x83 to 0x1.
Other than that there are only few calls to map read functions replaced with calls to FreeFuel functions and few places where the injector size variable used has been changed to FreeFuel interpolated variable. Also injector scaling resolution has been increased by changing fixed constant 0x83 to 0x1.
Looking for some confirmation here. When I patched my ROM the gas injector scaling value changed significantly. I assume that I should change it back to what it was before, but based on cdrinkh20's comments above I am wondering if there is expected to be some difference in the displayed value.
Yes this is expected. You will have to enter the extrapolated gas and ethanol injector values because ast has changed the scaling to allow much greater definition (60 - 2500 cc/min with 1 cc/min increments).
BTW - I've figured out why my extrapolated injector values were wrong. It's because ast's code actually uses raw values to interpolate the flexfuel injector scaling value. That means you have to use the raw values in the extrapolation math that ast posted, and not the scaled values.
Let's say your tuned injector scaling value for gasoline (measured at E11) is 1271 cc/min, and for E78 (my measured E85 ethanol content), it's 812 cc/min. You first need to convert these scaled values to their raw values.
For E11, the raw value is calculated by 131*29241/1271=3014
(see InjectorScaling01Mult in the map definition for Ethanol Injector Scaling in the ROM)
For E78, the raw value is calculated by 131*29241/812=4717
(see InjectorScaling01Mult in the map definition for Gasoline Injector Scaling in the ROM)
Now extrapolate the E0 Gasoline RAW injector scaling value from your tuned RAW values:
gasoline_RAW = gas_scaling_RAW+ gasoline_eth_content * (gas_scaling_RAW - eth_scaling_RAW) / (E85_ethanol_content - gasoline_eth_content)
i.e. gasoline_RAW = 3014+11*(3014-4717)/(78-11) = 2734
and the scaled value is;
gasoline = 131*29241/2734 = 1401 cc/min <- this goes in the Gasoline Injector Scaling table
Now extrapolate the E100 Ethanol RAW injector scaling value from your tuned RAW values:
ethanol_RAW = eth_scaling_RAW - (100 - E85_ethanol_content) * (gas_scaling_RAW - eth_scaling_RAW) / (E85_ethanol_content - gasoline_eth_content)
i.e. ethanol_RAW = 4717 - (100-78)*(3014-4717)/(78-11) = 5276
and the scaled value is;
ethanol = 131*29241/5276 = 726 cc/min <- this goes in the Ethanol Injector Scaling table
Once I entered the "correct" extrapolated values and re-flashed 9653E706, my trims settled down to between 1-2%, and WOT pulls showed AFR at expected tuned values again. When using the scaled values to extrapolate the injector scalings I was running 10% or one full AFR too rich.
I have been inspired by cdrinkh2o's results to try building evoredy's circuit. I have ordered all the components but my time is quite limited for this type of stuff so it may be a while before I get this complete.
Good on yah mate! I think you will find the experience very rewarding. Let me know if you have any questions. I used to find electronics very daunting and hard to understand but this project has taught me valuable skills that I can use elsewhere. I now feel able to tackle almost any electronic job.
Good on yah mate! I think you will find the experience very rewarding. Let me know if you have any questions. I used to find electronics very daunting and hard to understand but this project has taught me valuable skills that I can use elsewhere. I now feel able to tackle almost any electronic job.








