|
Senior Member
Join Date: Nov 2021
Drives: 2019 Subaru BRZ
Location: PNW, US
Posts: 102
Thanks: 81
Thanked 79 Times in 43 Posts
Mentioned: 4 Post(s)
Tagged: 0 Thread(s)
|
v32: long-term stable on Cal 91, no more low-rpm med-load knock, dropped S20G (EDM)
In the months since v22, I've learned just enough about DI/PI that make it clear that my plan to fold in S20G's specialized ratios is not going to work without considerably more awareness of the timing curves, detailed logging of the 0..720° cycle, and so on. I've started a project to forward-port all of the old A01G/B01C-era logging values, but in the meantime, I removed the S20G di/pi work for now as it led to constant IAM instability on Cal 91.
However, I kept the new dipi-decay algorithm work in place, as it parallels how IAM 0.0..1.0 moves the car from Timing Low to Timing High in facelift-era ECUs (see next paragraph) and set it to scale from 0.01% PI (in v32, 0x130038: float 3c 23 d7 0a) at IAM 0.0 to 'the original target PI' at IAM 1.0. Combined with the normal PI table, IAM now stabilizes as intended and from there I was able to start tuning for Cal 91 octane gas.
Since V00C/U01A are facelift-era, they have the newer 4D timing tables (^). With PI now scaling down as IAM drops, I focused on measuring where knock occurred, collecting and analyzing every daily drive using the old ways — I am forever grateful to Kodename for the spreadsheets and to vimsh for mafscaling.jar. And after for a solid month of driving around on Cal 91, it turned out that knock below 3800rpm was pushing IAM so much further down than knock above 3800rpm — which only knocked at positive KCAs and in some areas had reached KCA max — that I ended up incrementally detuning, based on logged knock data from daily driving, every Low timing cell from 0..3600rpm. With that in place, the car no longer knocks at low rpm / low-med load, IAM leveled out at 92% (0.92) rather than at 70% (0.7), and the car's been running on that for several weeks now.
Unfortunately for my Cal 91 efforts, I've moved to Oregon, and so now I'm on Shell 92/E10, which likely means that this is the endpoint of my low octane detuning. I'll still keep an eye on it and if I find knock imbalance on Or 92 in the maps, then fixing that will benefit Cal 91 as well. My main computer is packed so I have an SD full of logs that I will eventually append here — but in the meantime, here's the updated v32 that's been stable and happy for general daily use. The dip doesn't feel like a dip anymore; it just feels like you go from 'efficiency' range <3800 to 'G-forces, actives' range >3800. And it will still auto-adapt all the way back to factory timing max + KCA max if your gas is good enough. See end of post for the map change.
For anyone who wants to pick this up and work on detuning further, take detailed logs, identify knock events at KCA <= 0 that resulted in an FLKC drop, and then incrementally detune only those knock events with the lowest IAM of the logs. Remember that you're detuning in Base Timing A2 at IAM 0.0; so if you have a very small FLKC -1.05 knock at IAM 0.7, applying -1.05 to Base Timing A2 is only going to apply -0.32 at IAM 0.7 (your IAM is 30% below max, so your A2 Low change is only 30% applied). Or: I did at one point consider detuning Base Timing A2 (Low) to all cells -20.0 and then seeing what IAM the car levels out at. Or: The incremental method, but with live-patching of the A2 table and a dyno; I don't have those things.
The prior ECU defs and logcfg XMLs are still correct; someday I'll have a big logcfg update for S/U/V, but not today. As of this release, I have neither issues nor reservations to report, and I think it's fine to install this on any MY19-20 USDM (with the usual reminder to toggle the U0155 switch in RomRaider if you see permanent code U0155 after flashing). I'll update the main post above to reflect this update over time, once I have access to my notes again.
(^) Essentially, the K00G-era lookup in Base Timing A is replaced by a pair of {load, rpm} lookups into Base Timing A1 (High) and Base Timing A2 (Low); and then it interpolates the final timing advance from Low..High based on IAM. If your IAM is 0.7, you'll get (70% of High + 30% of Low); if your IAM is 1.0, you'll get (100% of High + 0% of Low), and so on. This is just the same interpolation we're all used to with 3D tables already, but I haven't found a table editor tool that can cope with that extra layer of interpolation, so you either have to be good at looking at a RomRaider changes chart and then multiplying by (for example) 0.7, or you'll end up making a spreadsheet so you can modify a 'target IAM' cell like I did. If I could write Java, I'd patch RomRaider or mafscaling; perhaps someday. (^^)
(^^) Or: For anyone who's played 5D Chess With Multiverse Time Travel, A1 High and A2 Low are just two timeline branches of the chessboard where you either advanced the queen "not at all" or "all the way to the other side of the board", and the IAM interpolation just tells you how far the queen ends up advancing. :)
Base Timing A2 (Low, IAM=0.0) map change, showing the timing changes I accumulated. The 4000..6000 @ 0.15-0.20 changes are estimated to be necessary, based on how things went from 2800-3600 @ 0.15-0.20; at IAM 0.92, that's a whole -0.11 less advance in v32 versus stock in that region. If I had more time on Cal 91 I'd probably end up finding a dyno to reevaluate that. (And, no, I have no idea why RomRaider is in Comic Sans.)
Last edited by callisto; 01-14-2026 at 12:20 PM.
|