Repurposing trims

Mike Shellim 7 Feb 2015
Updated 31 Dec 2016

My thanks to Dinamich for this powerful technique for 'overloading' the trim levers.


Trim levers are vital for achieving straight and level flight, but thanks to OpenTx's flexibility, that's not all they can do. In fact they're remarkably versatile. In this article I'll look at some techniques for repurposing trims, in order to make better use of your limited transmitter controls.

Referring to trims

Trims have their own ids like any other controls:

And like other controls, trims have values in the range -100 to +100 depending on their position. Normally you don't need to consider trims separately as they are included by default in the value of the parent control.

Reassigning a trim

If you have a trim lever which is not needed and want to use it for something else then you can simply decouple it from its parent control and reassign it:

In the following example, rudder trim is repurposed to control an auxiliary function on CH7.


Src=Rudder Trim=No_Trim -- rudder trim freed for reuse



Src=TrmR -- rudder trim re-used as an auxiliary control

De-coupling trims in this way is very simple, and is the basis for in-flight adjusters.

Trim values are flight mode aware

Trim values are stored independently for each flight mode. In that respect, they behave similarly to GVARs. This makes it possible to reassign trims for different functions depending on flight mode.


Src=Rudder Trim=No_Trim -- rudder trim freed for reuse



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



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

Using a trim for several things in the same flight mode ("overloading")

In addition to its default behaviour, a trim lever can also independently update one or more GVARs. It's easier to understand this if you consider a trim to be a 'bumping' device. It can either 'bump' its native TrmX value, or it can 'bump' a GVAR.

By default, a trim bumps its TrmX value, but you make it bump a GVAR by using the 'Adjust GVAR' special function. While the special function is active, the GVAR is bumped and trim's default behaviour is suspended. The special function would typically be activated via a switch.

This is a very powerful feature, as it allows a trim to perform multiple independent functions within the same flight mode under the control of a switch. And because GVARs are flight mode aware, you can extend this behaviour across multiple flight modes.

Bump-switching example

Here's a simple example of bump-switching:

A 3-position switch controls the action of the rudder trim.

SF1 Switch=SA↓ Action='Adjust GV1' Parameter='Source/TrmR' Enable='ON'
SF2 Switch=SA- Action='Adjust GV2' Parameter='Source/TrmR' Enable='ON'

How it works :

This gives us three independent values to play with: TrmR, GV1 and GV2. A possible application:

Mapping a GV to a channel

There's just one small problem when updating a GV using this method: the GV will have a value in the range -125 to +125 depending on the trim position. Usually you will want a range of values more appropriate to the task in hand. You can do this by remapping the GV's output via a virtual channel.

Note that GVs can't be used as mixer sources. To get around this, we use MAX as the mixer source and GV as the weight (MAX is equivalent to a source with fixed value of 100).

Example: remap GV1 to range (0 to 100).

CH10 (outputs 0 to 100)

Src=MAX, wt=GV1, offset=125

Src=MAX, wt=40%, Multiplex=MULTIPLY

How it works:

An alternative method is to use a curve and a single line mix as follows:

Curve1 (applies a 40% rate)

2 points (-100, 40) and (100, 40)


CH10 (outputs 0 to 100)

Src=MAX, wt=GV1, curve=Curve1, offset=50

How it works: the key is OpenTx's order of processing of curves, weights and offsets:

The output of CH10 can be used just like any other channel. A typical application would be as a mix adjuster. Note however that this method cannot be used to control parameters like Diff or Expo which are driven by GVARs directly. For these, use the techniques described in How to make in-flight adjusters.

Emulating a trim

Sometimes it's useful to implement your own flight trims. For an example, see Diff - a better way.

Further study

See also How to make in-flight adjusters