Broken throttle lever solutions

Issue introduced in latest BETA and was not fixed in public release (6.01.2022)
Symptoms: engine(s) throttle always 0 when you move your engine throttle lever
Source of the issue: main throttle initialisation happen in ASOBO_ENGINE_Throttle_SubTemplate template. If it not used in aircraft - max throttle value will stay 0.

Workaround 1: use F2 key to decrease engine(s) thrust, F3 to increase. Important to leave joystick throttle lever in upper or lower position or it will reset throttle to 0
Workaround 2: assign Throttle 1/2/3/4 Axis (each) to your throttle lever in controls settings
Workaround 3: select aircraft with working throttles so limit variables will be updated, then activate Developer mode and select the broken one (do not return to the main screen)

Solution: insert ASOBO_ENGINE_Lever_Throttle_Template for each engine into model/interior.xml (can be named differently)
Example for 4 engines aircraft (remove UseTemplate 2/3/4 if aircraft has single engine), crucial script inside of Behaviors:

<?xml version="1.0" encoding="utf-8" ?>
<ModelInfo>
	<LODS>
		<LOD minSize="0" 	ModelFile="model.gltf"/>
	</LODS>

	<Behaviors>
		
		<!-- CODE TO COPY START -->
		<Include Path="Asobo\Common.xml"/>
		<Component ID="ENGINE">
			<UseTemplate Name="ASOBO_ENGINE_Lever_Throttle_Template">
				<ID>1</ID>
			</UseTemplate>
			<UseTemplate Name="ASOBO_ENGINE_Lever_Throttle_Template">
				<ID>2</ID>
			</UseTemplate>
			<UseTemplate Name="ASOBO_ENGINE_Lever_Throttle_Template">
				<ID>3</ID>
			</UseTemplate>
			<UseTemplate Name="ASOBO_ENGINE_Lever_Throttle_Template">
				<ID>4</ID>
			</UseTemplate>
		</Component>		
		<!-- CODE TO COPY END -->

	</Behaviors>

</ModelInfo>
7 Likes

Thanks for this post thealx2901.

In my observations the exact cause of the issue isn’t min/max limits initialisation.

The issue appears to be that the data from the THROTTLE_AXIS_SET_EX1 event (this appears as “Throttle Axis” in the controller assignments section in MSFS) is not being processed correctly by MSFS and whatever data is received is being set to zero by the sim which is what is causing the symptom of the engine throttle always moving to zero.

Using SimConnect and Event Bindings I was able to determine that there is nothing wrong with THROTTLE_AXIS_SET_EX1 or the data being sent. This works, I can read the data and users can see it works in the controller assignments section as the little bar moves when you move your controller. The data being sent is still valid and being received by the sim. It’s just after receiving that data and trying to apply it to the engine throttles that the sim is breaking down.

The throttle event and the data are correct, it is the application of that data by the sim which is failing.

I don’t know if this was a deliberate move by Asobo or just a stuff up. After all, why is it only the THROTTLE_AXIS_SET_EX1 event that has this problem while the THROTTLE1_AXIS_SET_EX1 to THROTTLE4_AXIS_SET_EX1 events still work fine?

The solutions you list are still valid and the only real workarounds at the moment. If this is a bug and not intentional by Asobo then Asobo needs to update the sim to fix it. By including the ASOBO_ENGINE_Lever_Throttle_Template the event bindings in that template will capture any THROTTLE_AXIS_SET_EX1 events and the data for those events and will convert it and send it to the sim as a THROTTLE_SET event and this will bypass the bug.

Workaround 2: assign the Throttle 1/2/3/4 axis to the users controller is probably the easiest solution for the end user to implement. It works on all aircraft and doesn’t require any messing about with aircraft files.

1 Like

Thanks for the detailed investigation. My suggestion based on the fact, that if you set throttle to 50% for example and move joystick lever - it will return to zero.
So script receive data from the joystick, but then process its value by something like min(value, 0) which reset it to zero. I may be wrong, pretty ugly bug anyway and hope it will be fixed.

There is something different in the ASOBO_ENGINE_Throttle_SubTemplate. _#ID_NODE# is missing.

So when calling the ASOBO_ENGINE_Lever_Throttle_Template (not the subtemplate) you have to add the part_id, like:

<PART_ID>ENGINE_LEVER_Throttle_1</PART_ID>

Complete Component:

        <UseTemplate Name="ASOBO_ENGINE_Lever_Throttle_Template">

            <ID>1</ID>      

            <PART_ID>ENGINE_LEVER_Throttle_1</PART_ID>  

        </UseTemplate>

        <UseTemplate Name="ASOBO_ENGINE_Lever_Throttle_Template">

            <ID>2</ID>  

            <PART_ID>ENGINE_LEVER_Throttle_2</PART_ID>              

        </UseTemplate>
1 Like