Flying at an F3F competition

Calibrating the outputs

Introduction to calibration


Creating a setup in EdgeTX is a story of two parts.

The first part is about designing the mixing scheme - how stick commands are converted to channel values. In the diagram above, it's everything to the left of the outputs.

The second part - and the subject of this article - is all about geometry. The process of calibration compensates for differences between the left- and right-sides of your model (differences in linkages, servo arm angles, hinge limits etc.). Calibration is performed in the Outputs menu - think of it as a sophisticated servo programmer, and you have the idea!

With your setup properly calibrated, you will be able to use identical weights for the left/right mixers, regardless of mechanical differences. And if you swap out a broken servo, a simple recalibration is all that's required - no adjustments needed to mixers.

Goals of calibration

The goals of calibration are:

Limit servo travel
Set limits on each servo's travel, to avoid damaging linkages.
Equalise left/right movements
Equalise the travel of left/right surfaces, regardless of mechanical differences.
Achieve a linear response
Control surfaces should respond linearly to stick commands.

Generating reference values

In order to perform a calibration you'll need:

Calibration is performed in the Outputs menu

The Outputs menu

Calibration will be performed in the Outputs menu, so let's take a quick look.

servos menu

Outputs menu

The parameters (marked in blue at the top of the diagram above) which used for calibration are as follows:


Normally, you'll calibrate by adjusting Min, Max and Subtrim. However, you can also use output curves. The benefits of curves are: quicker calibration, and more control, since you aren't restricted to 3 adjustments. We'll use curves when calibration the flaps.

To use a curve, you first have to create it in the Curves menu. Then, go the Outputs menu and assign it to the curve field. Once the curve is created, you can edit it by long pressing on the curve field (on most radios).


CH1 calibrated via min/max/subtrim
CH3 calibrated via curve

Note that Min/Max and Subtrim are always applied, even when you assign a curve. Min/Max/Subtrim are applied first, followed by the curve.

If using a curve, it's much easier to see what's going on if you do all the adjustments in the curve, with Min/Max and Subtrim set to their 'pass thru' values of −100%, 0%, +100% respectively.

Okay, so let's get calibrating...

Calibrating ailerons, elevator, rudder, V-tail

Calibration of these surfaces is very simple, but I'll spell it out anyway:

  1. Open the OUTPUTS menu
  2. Activate Calibration Mode. If you don't have a calibration mode, just set the input and mixer weights to 100%, and centre the trims.
  3. Adjust Subtrim for correct centre position.
  4. Adjust Max and Min for each servo:
    • First, adjust thee for maximum possible control surface travel
    • Next, refine so that control surface travel is equal up/down (or left/right).
    • Finally, refine so that left and right surfaces match.
  5. Exit from Calibration mode

The outputs are now calibrated.

Ailerons often have differential, where the downgoing aileron is less then the upgoing in response to roll commands. Where possible calibrate the ailerons for equal up/down movement as described above, and set the differential in the aileron mixers. This will ensure that that diff is applied only for aileron commands.

Calibrating flaps (using curves)

Flaps present a greater challenge. They are characterised by grossly asymmetric movement. Also, flaps have large deflections, and it's important that they track precisely. Fortunately OpenTX allows these to be calibrated with great precision. Instead of adjusting Min/Max and Subtrim, you can use curves.

So the procedure calibrating flaps is:

Here's the procedure in a more detail:

Step 1: set Min, Max and Subtrim to 'pass thru' values

Since we're using curves, we should set Min, Max and Subtrim to their 'do nothing' values:

  1. Open the Outputs menu
  2. For each flap servo, set Min, Max and Subtrim to −100%, +100% and 0% respectively (or -150%, +150% and 0% if using extended limits)..

Step 2: calibrate left flap

Start by calibrating the left flap. The aim is to (a) set the limits of servo movement, and (b) to obtain an approximately linear response. The neutral position is not considered here.
  1. In the Curves menu, create a 2-point curve with points (−100%, -20%) and (100%,20%). The low point values (20%) are to avoid accidental damage to your linkages before finalising the adjustment.
  2. In the Outputs menu, go to the Curve column, and select the curve you just created
  3. Enter Calibration mode
  4. Set the curve points for maximum possible travel, as limited by the linkages. The flap deflection should vary more or less linearly with the calibration input. If necessary, you can add third point aound the middle of the curve.
  5. Exit the Curve menu
  6. Exit Calibration mode

Step 3: calibrate right flap

The next task is to synchronise the right flap with the left flap. Do this using a 5-point curve.

  1. In the Curves menu, create a 5-point straight line curve
  2. In the Outputs menu, go to the Curve column and assign the new curve.
  3. Enter Calibration mode
  4. Move the stick to the 0/25/50/75/100 positions; at each position, adjust the corresponding point so that the right flap exactly matches the left flap. (Depending on the linkage geometry, it may be necessary to go back and reduce one or other end point on the left flap.)
  5. Exit the Curve menu
  6. Exit Calibration mode

Step 4: offset the flap

The flap servos are now calibrated, and the flaps should track perfectly. However since the flap has more down-travel than up-, each flap's 'home' position (that is, with the servo at its natural centre position) will be around 30 degrees down. In other words, with all mixers disabled (servos at centre), the flaps will droop 30 degrees! Clearly this is not what we want.

To fix this we need to apply an offset at the mixer level as follows:

  1. Exit Calibration mode
  2. Create a mix in each flap servo channel.
  3. For each flap mix, set source = 'MAX'. This generates a fixed offset of value 100%.
  4. Adjust the weights of the mixes, so both flap are at the correct neutral.

All the mixes for roll control, crow, camber and so on will then start from the correct neutral position. The end points of flap travel are not affected - since of course we have already calibrated these in steps 2 and 3.

Adjusting rates

Once calibration is done, you can finalise the control travel in the Inputs and Mixers menus.

  1. For the flight controls (elevator, aileron and rudder): adjust travel in the Inputs menu and leave mixer weights at 100% (the input weights will propagate to the mixers).
  2. For all other interactions: adjust the Mixer menu. Following calibration, the mixer weights should be equal on the left and right sides.

Using CAL mode to identify servo drift

Most models will suffer during their lifetime from drifting servo neutrals. This may be due to temperature effects, or damaged linkages. Now here's the thing: it can be difficult to distinguish between drift and valid trim offsets which you've dialled in yourself.

However if you calibrate your setup regularly, you can tell the difference. Enter CAL mode, and see if the calibrated centres have changed. If yes, then the servos or linkages have drifted.

If the amount of drift is small, there's no need to do a complete recalibration, you can simply adjust PPM Centre - the effect is similar to moving the servo arm on its spline. Once you exit CAL mode, all trim offsets will be restored.

So, by calibrating your channels and checking regularly, you can correct for servo drift while at the same time preserving your carefully adjusted trim offsets!

Trims => Subtrims - AVOID!!

OpenTx allows you to re-centre your trims, by moving the offsets to Subtrim. Obviously, using this feature will trash your calibration settings. Avoid!


Calibration-centred design

Even greater benefits can be achieved by designing your setup with calibration in mind from the start. I call this 'calibration-centred design'. The two main elements are:

Integrated CAL flight mode

The first step is to create a CAL mode. That way, you can check the calibration at any time for drifting servos, bent linkages and so on.

GVARs and cascading mixers

A key goal of calibration is to match up left/right outputs. This means that paired mixers can have identical weights, and you can take advantage of this by employing GVARs and cascading mixers in your setup. This will result in:

Calibration the easy way

All the canned setups published on this site have CAL mode already built-in, protected against accidental operation.

Digging deeper: the mapping layer (advanced)

Okay, we've covered the basics, let's drill down a bit and look at the internal processes.

The Outputs layers is a simple mapping of mixer values to PWM values. In effect, Min, Max and Subtrim define a 3-point curve:

On entry to the Outputs stage, mixer values are clipped to +/−100%. Min and Max therefore represent absolute travel limits. Think of them as electronic end stops.

Conversion of Min/Max/Subtrim % values to PWM units

Min, Max and Subtrim represent PWM values, yet OpenTX displays them as percentages. The conversion is as follows:

Standard servos have a nominal range of 1000 to 2000μs, so you can think of these percentages as 'percentage of the range of a standard servo - roughly!'.

PWM values outside the range 988 - 2012 μs are only available if the 'extended limits' option is enabled (in the MODEL menu).

Subtrim modes and PPM Centre

The Subtrim mode determines how the limits are calculated. Subtrim mode is set in the Outputs menu (last column). There are two options:


Delta mode is recommended!

Switching between "equals" and "delta" modes will cause the end points to jump, so start with delta mode and stick with it. If later on you need to shift the whole curve with a single adjustment, then use the PPM Centre adjustment. The effect is similar to 'equals' mode.

PPM Centre screenshot