Saturday, 26 April 2014

OpenTx 2.0

OpenTx v. 2.0 is a major upgrade of everyone's favourite R/C operating system. It offers several enhancements, adds a bootloader, and uses a new EEPROM format. For the last couple of days I've been trying out the development version. I've also had a brief play with the updated model editor, now called 'OpenTxCompanion'.

What I've seen so far looks pretty promising.

In this post, I'll describe my experiences, with particular emphasis on features which will affect sailplane users.

Installing OpenTx v. 2.0

Getting to the bright new world of version 2.0 was pretty straightforward.

  • I downloaded the lastest build, using information from here
  • I installed OpenTxCompanion on my Win 7 box with Zadig drivers
  • Finally, I flashed the new firmware, using Companion9X
A spare transmitter was used, in case anything went wrong. I needn't have worried though, as it all went pretty smoothly.

The bootloader

A nice new feature is the 'bootloader', a program which the Tx can boot into at startup instead of the main firmware. The bootloader is installed automatically the first time you flash the v. 2.0 firmware.

The bootloader allows you to flash firmware without the need to install special drivers. It also handles the USB connnection, so the transmitter appears as a mass storage device.

To start the bootloader you press inwards on the horizontal trim levers while switching on the tx. After power up, you're greeted with this menu:

There are four options at this point:

1. Flash the firmware from a file on the internal SD card
2. Restore an EEPROM image from a file on the internal SD card
3. Make a USB connection with a PC
4. Exit (reboots into main firmware)

The options are fairly self explanatory. 'Write firmware' allows you to flash firmware from a file in the \FIRMWARES folder on the SD card.

'Restore from EEPROM' overwrites all your model definitions with a file in the \EEPROMS folder. OpenTx v. 2 uses a new EEPROM format (version 216). If you restore an EEPROM in the old format (version 215), OpenTx will automatically convert it to the new format, making the necessary changes to the model definitions - more on this later.

OpenTx already had the ability to backup individual models. However, v 2.0 provides an additional option (in the VERSION menu) to backup the entire EEPROM image to the SD card.

All this provides a great deal of flexibility for managing your data and firmware.

Translation of EEPROM to the new format

After reflashing the transmitter with the new firmware, I launched OpenTx Companion and restored my old EEPROM to the transmitter, using the 'Write Backup to Radio' menu option  (I'd previously saved it using Companion9x). This EEPROM contained a couple of complex models with 50 mixer lines each.

OpenTxCompanion main window

OpenTx recognised that the EEPROM data was in the old format, and proceeded to translate it to the new format. A progress bar is displayed during the translation.

The translation was almost - but not quite - flawless: one switch setting was mis-translated [edit 30 April: now fixed] , and a couple of sound files were unrecognised. It turned out that filenames had to be in 8.3 format. Once these gremlins were dealt with, the model setup performed just as before. No glitches or anything... it just worked.

With the EEPROM converted and operational, I was able to read it back into OpenTxCompanion and start playing with some of the new features.

What's new in 2.0?

What really matters of course are the enhancements. This is not intended to be an exhaustive list, just what I came across when playing with a pretty complex F3X setup.

The screenshots which follow show the old and new versions of the menus.

Flight modes

Trims can now be (a) linked to another flight mode, (b) relative to another mode (+/- delta), or (c) independent of all other flight modes.

The 'relative' option is new. To give an example of where it might be useful, consider the elevator trim of F3X sailplanes. Trim changes resulting from CG changes affect all flight modes. Trim changes due, say, to camber or crow application can be considered relative to some 'base' flight mode. The new options allow this behaviour to be modeled in your trim setup.

Inputs (was Sticks)

There are some big changes here. Sticks are now called Inputs. The previous defaults of Ail, Thr, Rud and Ele are still available, but you can now define your own inputs based on any physical control, or a telemetry data stream.

In the second screenshot below I've defined some additional inputs:
  • a Spoiler input 'IThSp'. This is based on the throttle stick (Thr), with a curve (CV4) to provide deadband at the top of travel. 
  • a Diff adjuster 'ITrDf', based on the rudder trim (TrmR) with a curve (CV6) to define the range of adjustment. 
The IAil, IRud, and IEle inputs were created automatically by the system when translating the EEPROM.

A slight irritation is that names are limited to just four characters.


The mixer list looks much the same as before though there are some changes under the bonnet. The most significant is the order of processing of offset and wt, which has been swapped round. Mixers with non-zero offset values are affected by this. All this is dealt with during the format conversion process which takes place during the first boot, however, this change will impact on the way further adjustments are made to the affected mixers.

More investigation needed to evaluate the long term impact of this.


The biggest change is the addition of a 'curve' option. This makes it very simple to achieve accurate tracking of flaps and other paired surfaces. It's possible to emulate this feature in the v. 1 firmware using a mixer curve, but the new way is so much neater!

Gone is the 'INV' indicator for reversed servos, and in its place is an arrow. Also, MIN and MAX settings can now be specified in tenths, or as global variables.


Curves can now be specified with two points. Previously the only way was to use a 3-point curve, and fiddle with the middle point to make it a straight line. A simple but useful enhancement.

One thing I've been hoping for is highlighting of the active point. This is now implemented but only when opening a curve from the Inputs screen. 

Global variables

There are now four more GVARs to play with. One nice thing is that the GVAR popup no longer clutters up the screen.

Logical switches

Custom switches are now called Logical switches, and the prefix changed to 'L'. But theres lots more...

A new 'sticky' type switch has been added, with Set and Reset parameters which themselves refer to switches. These can be used to make sophisticated virtual latches (e.g. for safe arming of motors).

Also new is the 'edge' switch. An edge is essentially a momentary switch with a user-specified minimum and maximum duration. When an edge is detected, the logical switch generates a short on-pulse which might typically be used to set/reset a 'sticky' switch.

When you consider the existing functionality with boolean and comparison operators, telemetry values as operands etc., the possibilities are truly endless.

Special functions (was Custom functions)

Apart from the new name, there are only one or two cosmetic changes to the interface. There may be more changes under the covers, but I haven't had time to explore.

[edit 6 May 2014]
Flight modes have been added to the list of switches. This is great news, as it allows flight mode related actions to be defined easily  (previously, you would have to re-invent the entire flight mode priority mechanism using logical switches).

Custom scripts (LUA)

This is the v. 2.0's 'killer app'. For the first time you can write your own procedural scripts, for execution via the built in LUA interpreter. It's sure to open up all kinds of interesting applications, from modifying setups, to performing calculations in mixers. There are however some restrictions in their use, and documentation is currently rather sketchy. More information and examples here.

Sticky pots

Here's a great new feature: knobs and sliders can optionally be made 'sticky', i.e. the firmware stores their last position on a per model basis. During startup, the tx will not radiate until the control is rotated to the saved position. An indicator shows which way to rotate the pot. The feature can be selectively enabled for each pot.

Incidentally, the Multiplex 4000 used a similar scheme for its mechanical trim levers.


Even though I've only scratched the surface, what I've seen looks promising. The development builds that I tried were all functional, though there a few bugs still to be be sorted at the time of writing. (You can see bug-busting progress here.)

The bootloader is a welcome addition for newcomers and experienced users alike. The new logical switches will make it easier to design safety switches and latches. The LUA interpreter is a potentially groundbreaking feature though reserved for the more technically inclined users - like all new technology, it'll be interesting to see how it's used in practice. Finally, good compatibility with earlier EEPROMs is a welcome bonus.

The only slight nitpick is the changes to the processing of mixer weights and offsets will mean that some relearning is required (and some changes to the documentation of my setups!).

All in all, the developers should be congratulated - and thanked - for listening to users, and extending what is already a groundbreaking system into exciting new territory. These are exciting times!

If you do want to try out the development version, please read this post first.

Other links


Tilman Baumann said...

Great wrap-up. Thanks.
I shall try it soon too.

Rob Thomson said...

Nice. Good to see a decent writeup :)

RC Soar said...

Thanks guys :)

Matthew Brett said...

...but the killer question - have they fixed the annoying "10 seconds, 10 seconds, 10 seconds..." countdown timer!

RC Soar said...

Matt, yep the countdown timer works fine now...
Just been playing with pot/slider warnings (like switch warnings), and 'sticky' logical switches. Looking good!

ians said...

Have you any plans to update the documentation for your 6 servo epee file to take account of the latest firmware release.

Ken Stephens said...

Thanks Mike,

Can we now set up an F3B glider with 8 flight modes and all the mixing bells and whistles and have it be sensible and flight-line-adjustable, for example to tweak the launch camber just before launch or very quickly adjust an errant ail or flap servo back into line in multiple flight modes very quickly?

I ask because this is what I have with my 12FG and my replacement choice is Taranis or Jeti. I know the Jeti ticks my boxes, I'm hoping the Taranis/Opentx can now too?


RC Soar said...

@Ken: Adjustable launch presets and quick servo calibration are all possible with programming (and both available on my forthcoming F3J setup). However, a full feature F3B setup with 8 flight modes will present a major usability and programming challenge for the average user.

Ken Stephens said...

Thanks Mike,

That's what I feared.


Dan Neelands said...

I don't entirely understand why the F3F set-up had to change. I thought all my existing model which used 2.03 or below worked fine. What should I be looking for?

RC Soar said...

@Dan: OpenTx v2.0 handles mixers differently to previous versions. See migration notes on the F3F Setup page.

Dan Neelands said...

Thank you! I don't know how I missed the notes which were higlighted, in bold and at the top of the page! egg on my face.