New PnP ECU option: ClassicECU Speeduino - build/learning thread

Talk and Tech about turbocharged 924/944/968 cars
User avatar
johnb
Posts: 312
Joined: Thu Jul 08, 2021 5:57 am
Has thanked: 108 times
Been thanked: 72 times
The stock 944 idle control is closed loop via PWM. The adjustment screw is only for setting up the baseline. To set this to you attach a jumper to the diagnostic port that turns off the closed loop routine in the DME. Then you adjust the screw to set the idle as close as possible to 840, then you remove the jumper and the closed loop logic kicks in and regulates it via a PWM signal.

I wrote a detailed tour of the ISV system and associated logic here but it might be a bit too far down in the weeds:
https://jhnbyrn.github.io/951-KLR-PAGES ... utine.html

The stock setup also uses ignition timing for fine tuning the idle speed - here's a bit I wrote about that recently:
viewtopic.php?t=3948&start=120#p52929

#11

User avatar
fasterfaster
Posts: 42
Joined: Wed May 21, 2025 4:24 pm
Has thanked: 126 times
Been thanked: 9 times
walfreyydo wrote: Mon Mar 09, 2026 5:22 am Cool project, here are a few thoughts

For closed loop idle, I think you need a PWM style IAC (such as is found on the S and S2) and I dont think the oem 951 IAC is setup that way (correction - @johnb confirms that it is PWM), since those still use a idle adjustment screw and idle isnt dynamically controlled with the ICV. Closed loop isnt necessary and open loop idle can work fine, so I might focus more on staying in open loop and getting my base tune setup and then come back to figure out closed loop as something you come back to once the car is running well.
Thanks to both you and @johnb - I think I may still take your advice and run open loop for now just to make progress, and return to the closed loop later. I need to get the car to driving reliably enough to do this work outside, as idle tuning inside my shop is not a healthy practice!
walfreyydo wrote: Mon Mar 09, 2026 5:22 amSince you are running standalone EMS now, you can toss the AFM and change to a speed density setup (as opposed to the oem air metered system) or change to a MAF. Speed density requires a MAP sensor and IAT sensor (I am using a GM IAT) and ideally a variable TPS, which the 951 has. Doing so will remove the air restriction of the stock AFM, and replace with a dedicated IAT, which is a big benefit, especially on NA cars. Alternatively and more simply, you can incorporate a MAF, but either way, youll want to get rid of the AFM. I have read that on a turbo car you can potentially max out the MAF's ability to meter air, which is why speed density is preferred. Here is the kit I bought from diyautotune and the pipe with bung already welded (if you cant weld the bung yourself) - although you could run any IAT sensor as long as its calibrated in TunerStudio.
Part of the agreement with Dirk/ClassicECU was to help him develop his base PnP tune - which means with the stock AFM. So I have to go through that stage, but also don't mind because it's all learning and my first step is just to get the car running better in stock form. The ECU does use the MAP from the KLR out of the box, so I have that input but the IAT as at the AFM not the charge pipe, so I should be able to run speed-density, but can't use the typical speed-density calcs that reference charged air temp.
walfreyydo wrote: Mon Mar 09, 2026 5:22 amAlso, since this is a turbo car you may want to increase your binning on all your tables to go above 100kpa (better to go to whatever kpa your max boost is, such as 200kpa). 100kpa is fine for a NA car though. 100kpa basically equals atmospheric pressure at sea level (which is the same as WOT on an NA car), below 100kpa is vacuum, above 100kpa is boost. I also notice in your bottom row of the VE table, you have the fuel drastically reduced. You may be better off using "overrun fuel cutoff" instead of reducing fuel in those lower cells, based on a minimum RPM and minimum TPS % (I use less than 1500rpm and less than 3% tps to activate ORFC). The reason is when you are cruising around parking lots, with your foot barely on the throttle, you may be using those lower cells so you may not want them overly lean (at cruising you can aim for AFRs closer to 14.7 or sometimes higher to maximize fuel economy) and it may want to surge or run poorly with that low of fuel.
Good catch. The base tune is from Dirk's 944 NA. I hadn't gotten past idle tuning yet, but you're right, I'll need to rebin my tables.
walfreyydo wrote: Mon Mar 09, 2026 5:22 amAlso, I assume you have a wideband O2 sensor, but if not, this is going to be absolutely needed in order to tune the car further. I am using the Innovate MTX-L, but any unit should work
I do but haven't installed it yet, as I discovered that my LSU ADV pre-turbo sensor uses a different connector than the standard, so I'm waiting on a new connnector to fit it up to the Spartan 3 Lite v2 controller. So I did the initial idle tune with just the NB to get started learning. Should be able to do it properly with the WB next weekend.
Marc
88.5 951 M030 Red on Black

#12

User avatar
fasterfaster
Posts: 42
Joined: Wed May 21, 2025 4:24 pm
Has thanked: 126 times
Been thanked: 9 times
Dare wrote: Mon Mar 09, 2026 8:52 am Fun project! I’m down a similar path with my MicroSquirt-based ECU. Definitely lots of learning left to do on my part.

Looking at your plan, overall I think it will be a great educational experience, but the way you’ve mapped it out it seems like you’ll be doing a lot of re-tuning at various stages, e.g. when you switch to MAP/IAT, then when you upgrade to a 3Bar FPR/bigger injectors, and then again when you upgrade the turbo. Might make sense to not go too deep on fine tuning (e.g. the idle stuff) in the early stages until you’ve got the basics of your setup in place.

In a similar vein, if you haven’t done it already, you might want to spend a little time assessing the state of your wiring harness, especially around the injector wires/connectors. My harness was badly eroded in a few places, with crumbling insulation and exposed wires. This can make tuning a nightmare. Luckily its relatively straightforward to patch up minor damage if you discover it.

I noticed you’re running with “incorporate AFR” turned off. Is there a reason for that? I assume this works the same in Speeduino as it does in MegaSquirt. If so, then in my mind, it doesn’t make sense to not take advantage of the logical separation it gives you when tuning the VE table vs. setting target AFR. Additionally, should you want to switch it on in the future, this would be another point at which you’d have to re-tune (although it is possible to back calculate it if you have the right initial settings).
Stage 1 is a little awkward because I committed to helping Dirk/ClassicECU develop as base tune for a stock 951, thus the half step before I go to the charge-pipe IAT and MAP. But I plan to run that finl Stage 1 setup for awhile, so it's worth it tuning it well.

Stage 2 is an aspiration that is going to wait for more/better shop space (and possibly a move to LA this year).

I did a fair bit of wiring inspection and connector replacement to get the car to it's current relatively stable stage, but am definitely looking at each connector again as I encounter it. Have had to reinforce a few final bends, but so far so good. If/when I get to stage 2 and feel like I know what I'm doing and know what I want, I suspect a fresh Kroon harness is part of the build, but I don't want to buy one now before I know what mods/additions I would want.

On AFR, I have it turned off right now because I did this initial test with a narrowband 02 sensor while I wait on a connector. I should be able to install the WB 02 next week, and then will be able to use AFR.
Marc
88.5 951 M030 Red on Black

#13

User avatar
fasterfaster
Posts: 42
Joined: Wed May 21, 2025 4:24 pm
Has thanked: 126 times
Been thanked: 9 times
johnb wrote: Mon Mar 09, 2026 9:12 am The stock 944 idle control is closed loop via PWM. The adjustment screw is only for setting up the baseline. To set this to you attach a jumper to the diagnostic port that turns off the closed loop routine in the DME. Then you adjust the screw to set the idle as close as possible to 840, then you remove the jumper and the closed loop logic kicks in and regulates it via a PWM signal.

I wrote a detailed tour of the ISV system and associated logic here but it might be a bit too far down in the weeds:
https://jhnbyrn.github.io/951-KLR-PAGES ... utine.html

The stock setup also uses ignition timing for fine tuning the idle speed - here's a bit I wrote about that recently:
viewtopic.php?t=3948&start=120#p52929
Great info, thank you!
Marc
88.5 951 M030 Red on Black

#14

User avatar
walfreyydo
Posts: 117
Joined: Wed Dec 11, 2024 7:28 am
Location: Wisconsin
Has thanked: 25 times
Been thanked: 51 times
Contact:
If you are using the stock AFM, the pins that read the IAT are here:
https://www.clarks-garage.com/shop-manual/elect-22.htm

I *think* its the 1st and 4th pin (air temp and ground) but I am not 100% sure as I am not near my car to double check my setting. Its either that or 1st and 3rd pin. You should see tuner studio dashboard change from the default 80degrees when its hooked up right. Youll then need to calibrate it in TunerStudio using a calibration curve for the 944 AFM - I am not sure of any posted resistances for given temps which youll need for calibration so you may need to figure this out manually or look online. Basically 3 given resistances at 3 given temperatures and youre set.

Also, if you have not purchased the full version of TS in order to get the Autotune functionality, I would recommend doing so. It will make tuning your table much easier as all you will need to do is set a target AFR and Autotune will do the rest to learn and adjust your VE table to get it close. From there, you may want to do more intensive data logging (as well as smoothing the table) to get it dialed in. Also as a tip, youll want to turn off accel enrichment and ego correction when running autotune, as *I have heard* that these features can mess with Autotune dialing in the correct VE setting. You wont be able to do this until you have a wideband of course.

Turbine Research has another great video on Autotune and how to drive the car while running autotune (slowly move through the rpms at different throttle positions to get good spread of your VE table cells while autotune reads the data and corrects values).
89 S2 Variocam, Megasquirt DIYPNP
Garage

#15

User avatar
four0four
Posts: 184
Joined: Wed Feb 02, 2022 10:09 pm
Location: Western WA
Has thanked: 22 times
Been thanked: 31 times
It doesn't look like the WBO controller supports it, and I didn't see you mention it (does Speeduino?) but even though the that sensor is designed for pre-turbo use, it still requires correction for the pressure. Post-turbo (assuming you don't see much more over 20 kpa or so) error is <= 10%. Pre turbo, you can expect at least 30%! See the datasheet here. I suspect OEMs can just build in enough correction from intake pressure, or load, or some other model that is accurate enough...

For the plug-and-play, you might be able to accomplish something similar by logging pre-turbo pressure, but I dunno how consistent that is on these older cars (and obviously it changes with modifications, k26/6 vs k26/8 cars, etc).

#16

User avatar
fasterfaster
Posts: 42
Joined: Wed May 21, 2025 4:24 pm
Has thanked: 126 times
Been thanked: 9 times
@four0four, just confirming, you're talking about trying to run the pre-turbo wideband? Thanks for the catch, I had assume the pre-turbo sensor was calibrated to the additional heat and pressure, but didn't realize how sensitive the readings are to pressure. I don't see anywhere in TS to set up a compensation table, and the Spartan controller wouldn't have one, so I think you're right, I'll have to run the WB 02 after the turbo like normal. Heading to the exhaust shop on Saturday to have the bung welded into the charge pipe anyway, so will have that done at the same time.
Last edited by fasterfaster on Tue Mar 10, 2026 2:35 pm, edited 1 time in total.
Marc
88.5 951 M030 Red on Black

#17

User avatar
fasterfaster
Posts: 42
Joined: Wed May 21, 2025 4:24 pm
Has thanked: 126 times
Been thanked: 9 times
walfreyydo wrote: Mon Mar 09, 2026 11:40 am If you are using the stock AFM, the pins that read the IAT are here:
https://www.clarks-garage.com/shop-manual/elect-22.htm

I *think* its the 1st and 4th pin (air temp and ground) but I am not 100% sure as I am not near my car to double check my setting. Its either that or 1st and 3rd pin. You should see tuner studio dashboard change from the default 80degrees when its hooked up right. Youll then need to calibrate it in TunerStudio using a calibration curve for the 944 AFM - I am not sure of any posted resistances for given temps which youll need for calibration so you may need to figure this out manually or look online. Basically 3 given resistances at 3 given temperatures and youre set.

Also, if you have not purchased the full version of TS in order to get the Autotune functionality, I would recommend doing so. It will make tuning your table much easier as all you will need to do is set a target AFR and Autotune will do the rest to learn and adjust your VE table to get it close. From there, you may want to do more intensive data logging (as well as smoothing the table) to get it dialed in. Also as a tip, youll want to turn off accel enrichment and ego correction when running autotune, as *I have heard* that these features can mess with Autotune dialing in the correct VE setting. You wont be able to do this until you have a wideband of course.

Turbine Research has another great video on Autotune and how to drive the car while running autotune (slowly move through the rpms at different throttle positions to get good spread of your VE table cells while autotune reads the data and corrects values).
Yes, I upgraded to TunerStudio MS (standard). Thanks for the tips on Autotune. Will get into that after I install the WB.

On the built-in IAT at the AFM, I'm not actually sure if it will work but that's the hope for ClassicECU's base PnP setup and tune. So the ECU is already set up to read those pins as IAT. It just remains to be seen if the change in temp from ambient to charge is consistent enough at a given MAP that the fueling settings work reliably.

That is, once I switch to speed density and am using MAP, is the charge temp from e.g. 90deg ambient pressurized to 1.5bar (.5bar boost) always going to be around the same charged air temp? In which case my VE table will look low at high MAP but that's because it is additionally compensating for the assumed higher temp, beyond the comp already happening in the ambient air density table.

Or are there conditions where 90F air pressurized to 1.5bar is going to have a wildly differing charge temp than other times with the same ambient temp and boost?

Of course, I'm installing the new IAT at the charge pipe, so will fallback on that if/when PnP doesn't work.
Marc
88.5 951 M030 Red on Black

#18

User avatar
four0four
Posts: 184
Joined: Wed Feb 02, 2022 10:09 pm
Location: Western WA
Has thanked: 22 times
Been thanked: 31 times
fasterfaster wrote: Tue Mar 10, 2026 2:26 pm @four0four, just confirming, you're talking about trying to run the pre-turbo wideband? Thanks for the catch, I had assume the pre-turbo sensor was calibrated to the additional heat and pressure, but didn't realize how sensitive the readings are to pressure. I don't see anywhere in TS to set up a compensation table, and the Spartan controller wouldn't have one, so I think you're right, I'll have to run the WB 02 after the turbo like normal. Heading to the exhaust shop on Saturday to have the bung welded into the charge pipe anyway, so will have that done at the same time.

That is my understanding, yes. You could run both and compare!

#19

User avatar
walfreyydo
Posts: 117
Joined: Wed Dec 11, 2024 7:28 am
Location: Wisconsin
Has thanked: 25 times
Been thanked: 51 times
Contact:
fasterfaster wrote: Tue Mar 10, 2026 2:35 pm Yes, I upgraded to TunerStudio MS (standard). Thanks for the tips on Autotune. Will get into that after I install the WB.

On the built-in IAT at the AFM, I'm not actually sure if it will work but that's the hope for ClassicECU's base PnP setup and tune. So the ECU is already set up to read those pins as IAT. It just remains to be seen if the change in temp from ambient to charge is consistent enough at a given MAP that the fueling settings work reliably.

DIY Autotune was able to get the stock AFM to work with the Megasquirt DIY PNP system (the one that I am running). Although that kit uses speed density (MAP+IAT) from the get-go, I believe it uses the IAT within the actual AFM for that reading (it is recommended to switch to a dedicated IAT and remove the AFM, but thats technically optional). If you download the base tune and open it in tuner studio you might be able to pull the needed calibration values from the base tune as well as look into what input it is using (predicated on the assumption that the IAT sensors within the S/S2 AFM use the same calibration curve as other 944 models). Obviously you would not want to burn this tune directly-as it is setup for a S or S2 and not a turbo, and its a very basic startup tune-but use it to configure and inform your own tune separately

The base tune files are here:
https://ampenginemanagement.com/pages/f ... base-tunes
That is, once I switch to speed density and am using MAP, is the charge temp from e.g. 90deg ambient pressurized to 1.5bar (.5bar boost) always going to be around the same charged air temp? In which case my VE table will look low at high MAP but that's because it is additionally compensating for the assumed higher temp, beyond the comp already happening in the ambient air density table.

Or are there conditions where 90F air pressurized to 1.5bar is going to have a wildly differing charge temp than other times with the same ambient temp and boost?

Of course, I'm installing the new IAT at the charge pipe, so will fallback on that if/when PnP doesn't work.
My guess is your tune is already using speed density and getting the temp reading from the AFM embedded IAT sensor, or using a default, non-changing IAT reading. Megasquirt does this too when the IAT isnt plugged in, defaulting to 80F as shown on the TS dashboard.

The IAT reading is to calculate air density, so in colder temps (more dense air) the calculation will add more fuel automatically and vice versa for warmer temps. This calculation is part of the speed density algorithm which uses IAT to measure temperature (ie: density) of air as part of the intake air mass flow calculation. Calculating air density is the main function of the IAT input - because air temperature and air density have a direct relationship (ideal gas law).

This is also why calibration of the sensor is critical, otherwise you may find that your car runs leaner or richer when the outside temp changes from when you did your initial tune. If the sensor is correctly calibrated your tune (AFRs) should stay consistent despite changes to intake air temperatures due to ambient temp changes related weather or season (and subsequent adjustments to fuel based on the air mass flow calculation built into the fuel calculation).

The difference in ambient vs intake air temps at a given moment in time really depends on heat soak and your intercooler performance. This is why you want your IAT as close to the throttle body as possible, so that its reading the temp as soon as its entering the engine after leaving the intercooler and not just reading ambient air temps.
Last edited by walfreyydo on Fri Mar 13, 2026 9:48 am, edited 1 time in total.
89 S2 Variocam, Megasquirt DIYPNP
Garage

#20

Post Reply