FSX Tip: Turboprop startup


Resource contributor
For the past few days, I've scratched my head about a runaway turboprop engine during startup.
There are the usual workarounds like putting mixture to ground idle (5%), putting the props into low pitch (the state with least torque) and decreasing the value for fuel_flow_gain in the .air file, but none of these really worked or were feasible since I don't want to alter the aircraft that much.

Not sure if it was desperation that made me look at the "back end" of the engine data chain (normal perception: throttle -> N2 -> N1 -> fuel flow), but I've tried controlling fuel flow during startup with XMLTools' SimVars and lo' and behold, the engine spools much better.
Torque won't spike anymore and yet the prop spools to the commanded idle RPM.

And all it takes is something like this:
(A:GENERAL ENG STARTER:1,bool) if{ 297.5 (>C:SIMVARS:TURB ENG CORRECTED FF:1, pounds per hour) }
A bonus effect is that fixing the fuel flow fixed fuel flow also prevents any throttle movement from taking effect, essentially creating a ground lock.

Already known or not, just want to get the word out.
Hi Bjoern, this could be my last problems solved on my Soloy projects...

I did´t know about it. Thank you for sharing it.



Resource contributor
Be aware that you can't fine tune this. Setting the fuel flow to zero will work, 50 will work as well, but 60 will give the same result as the setting at 50. So just use it for avioding a runaway engine during ignition (which it does very well) and use the number that works for you.
Hi Bjoern,

First off, Thank You! for providing this little tip! It works well!

Be aware that you can't fine tune this. Setting the fuel flow to zero will work,
During testing, some aircraft do not like zero as a value, N1 will not spool up causing a no start.

As you know I've been doing quite a lot of testing w/ t-props lately, why? - No idea LOL! - perhaps too much coffee. Starting in this thread. (Should've put it in this one :banghead: )
Mentioned in that thread I noticed that CTRL-E does not introduce runaway, but manually starting does, if started wrong - yes wrong..
It seems you have to start a t-prop just like a jet engine. Have the condition levers at cut until N1/NG reaches ~11%. It emulates a CTRL-E.

From testing -
1) Engine off, completely spooled down
2) Condition at cut, corrected FF = 0
3) Condition at any other setting other than cut (Engine off, completely spooled down), corrected fuel flow = continuously increasing!!! YES! But.. It does not take from tanks until ignition.
3a) Now engage the starter, at the time of the ignitor firing there could be a fuel flow of 1000s+ pph of fuel! - There's your runaway and "bug".
4) CTRL-E moves the condition lever from cut to ~40% at ~11% N1/NG, at that point corrected fuel flow starts increasing from zero until ignition.
5) Once ignition occurs the .air/aircraft.cfg file(s) takes over (I assume). In a "wet" start the numbers are so far out of bounds it takes forever to stabilize - runaway.​

(CAUTION a rant :stirthepo :scratchch )
Maybe it's not a bug though.. Just maybe MS wanted to emulate a "wet" or "hot" start. I think it could've been done correctly if we could have control of the ignitor. In XMLTools we just might, not tested, think (General Eng Combustion:#, Bool). On the other hand it can be a bug in newer t-props.
Old t-props & jets w/ mechanical FCUs, wet and hot starts should be able to be emulated using the FF provided by MS. Ignitor needs to be controlled or a combination of throttle position/N1(NG)/EGT along with full engine failure.
Newer t-props & jets w/ Full FADEC, wet and hot starts are not possible, use your excellent tip to emulate.
End Rant...

Did some tests on other aircraft using some test scripts (below). The tests were done using CTRL-E to find the actual FF & N1/NG at the time of ignition. N1/NG are pretty much the same but there are slight variations in FF at the time of ignition.

Kodiak = 5.96 pph @ 11.005% N1
DHC6-100 = 6.847 pph @ 11.007% N1
PC-12 = 2.066 pph @ 11.004% N1
Duke = 1.092 pph @ 11.004% N1
Mallard = 2.045 pph @ 11.005% N1
BT-67 = 34.899 pph @ 11.086% N1
C-90 = 1.087 pph @ 11.003% N1
TBM 850 = 11.498 pph @ 11.013% N1
Wyvern = 12.333 pph @ 11.010% N1
Partial XML script for testing -
<!-- Automatically reset the test once engine 1 has completely spooled down -->
(A:TURB ENG1 N1, percent) 1 &lt; if { 0  (>L:FF_TP_TEST, number)  0  (>L:N1_TP_TEST, number) }

<!-- Get the required values using CTRL-E ("Autostart") -->
 (L:FF_TP_TEST, number) 0 == (A:ENG1 COMBUSTION, bool) and  if{ (A:TURB ENG CORRECTED FF:1, pounds per hour) (>L:FF_TP_TEST, number) (A:TURB ENG1 N1, percent)  (>L:N1_TP_TEST, number) }

<String>%FF Value for XMLTools = %((L:FF_TP_TEST, number))%!5.2f!% pph    OPTIONAL N1, when is fuel introduced? =  %((L:N1_TP_TEST, number))%!5.2f!%%</String>
Lua script for testing, available anytime, easier to use (Registered FSUIPC required) -
--[[ Comment

Fuel Flow Test for use with XMLTools and Turboprops V1 - Roman Stoviak 01NOV17

1. Have aircraft fully cold, or, at minimum, engine 1 COMPLETELY spooled down
2. Start this Lua
3. IMPORTANT!! Use "Autostart" (CTRL-E) to get the proper values to use the XMLTools trick provided by Bjoern K -
4. A second value, N1/NG % is provided to show "when" fuel is applied during autostart. Optional, provided as needed for advanced coding.
5. To reset, restart this lua, or shut down engine 1 and let it completely spool down

End Comment --]]


local FF = 0
local N1 = 0
local TYPE = nil

function Monitor(offset, value)
    ipc.setowndisplay("XMLTools Fuel Flow Test 4 Turboprops", 0, 2, 25, 0)
        -- NO COMBUSTION
        if value == 0 then
            TYPE = ipc.readUB(0x609)
                if TYPE < 5 then
                    display = "\n\nREADY FOR TEST -- \n\nMake sure engine 1 N1/NG is completely spooled down\nprior to initiating autostart."
                    FF = 0
                    N1 = 0
        if value == 1 then
            TYPE = ipc.readUB(0x609)
                if TYPE < 5 then
                    FF = string.format("%.3f", ipc.readDBL(0x2020))
                    N1 =string.format("%.3f", ipc.readDBL(0x2000))
                    display = "\n\nTEST COMPLETE -- \n\nCorrected Fuel Flow at Time Of Ignition = " .. FF .. " pph\nN1/NG at Time of Ignition =  " .. N1 .. " % \n\nMake sure to jot down numbers!"
     -- SHOW DISPLAY   
    ipc.display(display, 0, TIME)   

event.offset(0x894, "UW", "Monitor") -- LISTEN FOR COMBUSTION "CHANGES"
Lua in Color (for ease).jpg

Thanks again Bjoern!

I have several turboprops in my fleet. When FSX came out, we were suddenly dealing with huge spikes, but only on certain computers. It was very odd. I, for instance, never had this except in the float planes, which is because water drag is much less in FSX then in FS9. Probably why they didnt have the Cessna Caravan water plane in FSX. It rockets out of the water at startup.

What we did was reduce 'Beta_min=15.0' to something like 5.0, sometimes 1.0 and some even lowered their settings into the decimals, such as 0.6.

That fixed it for startup flares and ground handling.

Good to see other ways around this.


Resource contributor
Thanks for the detailed input, Roman.

Bill's Kodiak was one of my test subjects, by the way. I've been doing a bit of surgery on it, partially because of the startup issue.

I'm curious if a large value for fuel flow can be used to do hot starts (zero for hung starts). As of now, I'm trying to write directly to the EGT variable via XMLTools.

Many thank to you for this tutorial !
My actual project about an CL-215T will be very more easy to solve with theses informations.
My first try to create an aircraft.cfg for this aircraft was the starting point of a lot of problems. I hope Roman's tests will be the beginning of solution.

Bjoern, Roman, you are really great - now I have a nearly 1:1 start-up behavior of my Soloys in FSX or P3DV4. No unreal "exploding" torque on startup with all the dramatic influences like "rocket styles" or in engines displays and without twisting aircraft.cfg on engines or propeller data. It works both with autostart or manual engine start.

At least it was so simple - I created a simple gauge running in background - thats all.

Thank you!

This is a VERY interesting thread…although not being an aircraft builder was lost after "
(A:GENERAL ENG STARTER:1,bool) if…" o_O

I have found this to be an issue with several commercially produced turboprops. If I had a dime for every time I took a speedy trip around the airport–parking brake ON–when trying to start Flight 1's PC-12…an otherwise excellent aircraft.

So, I assume this is something I can add to any of my recalcitrant turboprops? - something about implementing a C++ gauge…? For us non-airplane folks (I'm a scenery and mission guy), how would we go about adding this?


Resource contributor
This is stitched together from several messages from another forum. Hope it's idiotproof...

First, you'll need XMLTools. If you're flying any of my modded aircraft, you'll most likely have it installed. If not:
http://www.fsdeveloper.com/forum/res...d-v4-v1-0.197/ (P3Dv4)
(Make sure it starts after installation.)

Copy and paste the code below into an empty text file, then save it as "PropStart.xml". Put the XML file into a folder named "PropStart", add it to your aircraft's "panel" folder.

<Gauge Name="Startup Fuel Flow Limiter for Turboprops">
if{ 290 (>C:SIMVARS:TURB ENG CORRECTED FF:1, pounds per hour) }

if{ 290 (>C:SIMVARS:TURB ENG CORRECTED FF:2, pounds per hour) }

if{ 290 (>C:SIMVARS:TURB ENG CORRECTED FF:3, pounds per hour) }

if{ 290 (>C:SIMVARS:TURB ENG CORRECTED FF:4, pounds per hour) }
<Copyright>BK, 10/2017</Copyright>

Add this to the panel.cfg, to the [VCockpit01] (and [Window00], if flying from the 2D panel):
Change the "NN" to the next number in the gauge sequence.

Try to start the aircraft and observe the effect.
You can play with the numbers, if they don't work out right away. Higher means more fuel at start -> more nervous.

If the aircraft does not have automatic starter cutout, you can also try to move the throttles (while the starter is runnning) and see if they have any effect. (Spoiler: They won't.)


Resource contributor
I take it this is a fix for FSX. Is there a fix for FS9?
I've edited the thread title to make it clearer. The only thing you can do in FS9 is keeping the prop lever at 0% and mixture just above cutout on startup.

Here's a post containing such a gauge that works in FS9 and FSX:

Note that in my experience the gauge placed in a VCockpit section also works fine for the 2D panel.
As far as I know, and contrary to FS9, 2D panels in FSX aren't automatically updated by VC gauges.
A comment from a ex-ATR technician with engine runup training. Engines like PT6 (EMB110, C208...), PW118A/B (EMB120), PW121/125/127 (ATR42-300,500, ATR72-200, 500, 600) we open the fuel around 15-20% of NH (PW100 series) or NG (PT6).

On the C208, im during runups move the fuel condition when NG approach to 16%. And on the EMB120 and ATR42 when NH over 17%, with slow hand action.

Im hope these numbers will help yours.


Resource contributor
My FS9 panels (which have such gauges only in the VC sections) work perfectly in FSX. Perhaps it's only true for gauges in FS9 xml format (and C++ gauges), not for gauges in FSX xml format.