Advanced trims

Mike Shellim 7 Feb 2015
Updated 19 Oct 2018

My thanks to OpenTx developer Dinamich for the powerful technique of 'overloading' the trims.


It's easy to take your trims for granted, but dig a little deeper and you'll find a lot of hidden power in those humble little controls. You can cross them, hide them, turn them into controls, or even use them as diff adjusters... Read on and learn all the secrets. All screenshots from X9D.

Note: this article relates only to the trims for the main flight controls. Auxiliary trims for example on the Horus X10 and X12 behave as ordinary controls (albeit with 'sticky' values).

Trim basics

Like the regular controls, trims they have their own id's:

By default, the trim value is included in the parent control. Later, we'll see later to decouple it so it can be used for something else.

Independent or shared

Trim values are stored independently for each flight mode. The way they are used depends on the trim mode, which is set in the Flight Modes menu.

There are two options for trim mode:

Let's look at some examples:

Example: aileron trim

Aileron trim is normally shared across all flight modes. You can simply leave the aileron trim modes at the default ':0' in all the flight modes.

Example: elevator trim

It's common practice to have elevator trim independently adjustable in each flight mode. To do this, set the trim mode to ':n', where n is the flight mode.

Another scheme, which I mention in passing, is to designate one flight mode as the 'base', and for the trims in other flight modes to be relative. To do this, use the relative '+n' form. In the screenshot below, the trims in FM1 and FM2 are relative to FM0.

Cross trims

Some pilots like 'cross trims', that is using the lever on the opposite side to normal. This allows you to adjust the trim with one hand while holding the stick with the other. Cross trims are configured in the INPUTS menu. Screenshot below shows the aileron input using the rudder trim.

Reassigning trims

If you have a spare trim lever, you can use it to perform some other function. You must of course decouple it from its parent control, wherever the control is the source of a mix.

In the following example, the rudder trim is reassigned to drive channel 7.


Src=Rudder Trim=No_Trim <-- decouple trim from parent control




You can make the trim do different things in different flight modes. In this example, the rudder trim drives CH7 in FM0, or CH8 in FM1. For this to work, the FM1 trim mode must be set to 'independent', that is ':1'.


Src=Rudder Trim=No_Trim FM = FM0,FM1 <- decouple trim from rudder



Src=TrmR, Flightmode=FM0 <- in FM0, rudder trim drives CH7



Src=TrmR, Flightmode=FM1 <- in FM1, rudder trim drives CH8

You can use this technique to implement your own trimming scheme.


Src=Rudder Trim=No_Trim <- decouple trim from rudder

Src=TrmR, wt=?? <- add trim back, you choose the trim rate!

Using a trim to adjust a GVAR

By default, nudging a trim lever causes it to update its Trm value. All the previous examples make use of this (even if the behaviour is hidden).

However, a trim can take on a very different behaviour: using the AdjustGVAR special function, a trim lever can update a GVAR directly. While the special func is active the default trim behaviour is suspended, in other words the trim lever is decoupled from its parent control.

It's easier to understand if you consider a trim to be a 'bumping' device. It can either bump its native Trm value, or it can bump GVARs - however can't do both at the same time.

This offers some powerful possibilities!

Example: dynamic diff adjustment

Here's an example showing how to adjust aileron diff using the rudder trim. You can't do this directly, it has to be done via a GVAR.

So the first step is to link rudder trim value to a GVAR. We do this via the AdjustGVAR special function:

Note that the switch is specified as 'ON'. This means that the special function is permanently active, so the default trim behaviour is permanently suspended. Try it in the Companion sim - nudging the trim arrows alters the value of GV1, while the rudder trim remains unchanged.

The next stage is to link the aileron diff to GV1. Here's what the mixer editor looks like:

The left/right ail channels each use the same diff value:

Finally, we set safe limits for the diff adjustment, by setting the Min and Max properties for GV1. (Note: min/max didn't work properly prior to OpenTx 2.2.2).

Switching between different behaviours ('overloading')

In the previous example, we saw how to bind a trim to a GVAR permanently. You can also control the behaviour using a switch. So you could, for example, use your trim as a regular trimmer, a diff adjuster, or a rate adjuster, depending on the position of the switch. All these values are independent and persistent between sessions.

In the following screenshot:

SA-up: trim adjusts GV1
SA-down: trim adjusts GV2
SA-mid: default behaviour (adjusts rudder trim)

How it works :

Note: if you try this in the Companion simulator, make sure to click on the trim arrows (dragging the trim handle doesn't work).