Sunday, July 21, 2013

Configuring deviationTx on a Devo 10 for Phoenix

Goal

There are actually two different ways to configure an rc aircraft controller for use with a simulator. If you're fine-tuning maneuvers, or learning the advanced maneuvers, then you want the simulation to be as close to the craft you fly as possible. To get there, you tweak the sim to make the model act more like yours. You also use your controller configured the way you normally configure it to fly the aircraft. This is great for advanced flyers, and most - if not all - of the guides on the net have you do things this way.
However, if you're practicing basic skills - flying in different orientations, for instance - and want to experiment with different kinds of aircraft, there is an alternative approach. Since the simulator isn't an aircraft, but a computer, it can do a lot more for you than just pretend to be an aircraft - it can take over some of the functionality of the controller. For instance, it can provide helicopter pitch curves for inverted flight, which most helicopters can't do. They won't be exact, but they'll be good enough for practicing flying inverted while you learn the orientation. And it frees up a channel between the sim and the controller for other things. This is the way the manuals I've seen have you do things. Which may well explain why there is so much confusion about such things.
This isn't so much a guide on setting up a controller for use with a sim, but a demonstration of the capabilities of open source controller software. It takes the latter approach because that lets you get more functionality out of the sim/controller system. If you're looking for instructions on making your sim/controller combination as much like your aircraft as possible - this isn't for you. You're probably well beyond this in any case, so thank you for taking the time to read my blog.
If, on the other hand, you're still working on those basic skills, and interested in trying out various different aircraft without having to re-arrange your controller every time - this is for you. I'll show you how to set up deviationTx on the Devo 10 so you can fly a heli inverted with the same configuration you use for fine control of flaps on an aircraft, while still having the ability to raise the gear and control the engine angle on tilt-rotor craft.

What you're going to find here

The deviationTx software makes the models available as a USB file system, each model being in a file formatted like a DOS .ini file. That means it has sections that each line takes the form variable=value, with sections for different things marked by lines with the section name enclosed in square brackets. I'm going to show you the relevant sections, then describe what they mean. The section names will be in blue, and the subsections - if any - in green.
Finally, I'll tell you where you can download a copy of my model file, so you can just use it directly if you're using deviationTx software.

Getting started - radio and simple channels

Radio config

For completeness sake - as in you'll need this if you're trying to copy the config without using my .ini file - the radio setup looks like this:

name=Phoenix
mixermode=Advanced
[radio]
protocol=PPM
num_channels=8
That is, the name for this model is Phoenix (yes, I'm using the Phoenix flight sim), I'm using the Advanced mixer mode, with the PPM protocol with eight channels. If you haven't aren't familiar with open source controller software, the existence of a protocol setting might surprise you. The software implements multiple protocols in the same controller, sometimes with the same transmitter.

The Simple channels

There are three simple channels - literally. They use the simple mixer type in deviationTx. The first is for AUX4, one of the extra input knobs. You won't find a simpler mixer in a deviationTx config:

[channel7]
template=simple
[mixer]
src=AUX4
dest=Ch7
This doesn't specify a curve type, so it's 1-1. No scaling, no offset, so those default to 100 and 0. I.e. - it copies the input AUX4 direct to the output Ch7.
It does have one twist. In the trims section, I've set up the trim switches in the upper left - near that knob - to tweak it's output:

[trim5]
src=AUX4
pos=TRIM_L-
neg=TRIM_L+
Two of the switches near that knob are nearly as simple:

[channel5]
template=simple
[mixer]
src=GEAR1
dest=Ch5
curvetype=min/max

[channel6]
template=simple
[mixer]
src=ELE DR1
dest=Ch6
curvetype=min/max
These add the curevetype of min/max, meaning they go from -100 to 100 as they turn on, giving a good sharp edge should you have an edge-triggered control. The two are identical except for the channel number, src and dest (all italicized).

Elevator, Aileron and Rudder

These are all set the same, and are the a bit more complicated. The model file entry for them looks like this:

[channel1]
template=expo_dr
[mixer]
src=ELE
dest=Ch1
curvetype=expo
points=35,35
[mixer]
src=ELE
dest=Ch1
switch=FMODE0
scalar=70
The bits in italic are what vary between the three channels - the channel number, source and output channel.
To translate, this is the settings for channel1. I'm going to use an expo_dr template - meaning three mixers, the last two controlled by switches. I only use two mixes, the reason to be revealed later. The first mixer uses a curve from the ELE stick to Ch1 with an expo of 35 on both sides of 0. The second mixer just copies the ELE stick setting to Ch1 with a 70% rate (the scalar value). Obviously, these should be adjusted to taste, I use them on my real helis because they give the same feel near center, but the low rate mode keeps me from getting into trouble with a new craft. The switch setting in the second mixer (aka low rate) controls when it is used. If the FMODE switch is in position 0 this mixer is used, otherwise the first one is.

Pitch (or is it flaps?)

Now we're going to see the first bit of the magic this software can do. Channel 8 has a complex template, meaning an arbitrary number of mixers, each which has the full mixer facilities available:

[channel8]
template=complex
[mixer]
src=AUX5
dest=Ch8
switch=MIX0
scalar=-100
curvetype=fixed
[mixer]
src=AUX5
dest=Ch8
switch=MIX1
[mixer]
src=AUX5
dest=Ch8
switch=MIX2
curvetype=fixed
[mixer]
src=Virt3
dest=Ch8
switch=AIL DR0
usetrim=0
These all have a switch setting which controls how each mixer is used. The last one whose switch is on will be the mixer that actually gets used. The first three:

[mixer]
src=AUX5
dest=Ch8
switch=MIX0
scalar=-100
curvetype=fixed
[mixer]
src=AUX5
dest=Ch8
switch=MIX1
[mixer]
src=AUX5
dest=Ch8
switch=MIX2
curvetype=fixed
are selected by the MIX switch as it moves through it's three positions. The middle one is a straight copy of the other knob - AUX5 - to Ch8. The ones above and below this one have a fixed curvetype, meaning they always output their values when selected. The first one has a scaler of -100, so that's the value it outputs. The last one doesn't have a scaler, so it outputs the default of 100.
This one mixer also has a trim set up in the trim config:

[trim6]
src=AUX5
pos=TRIM_R-
neg=TRIM_R+
These three mixers let you toggle the output to Ch8 from -100, through the knob setting, to 100. I use it for flaps when flying airplanes.
Finally, the last mixer in that template is:

[mixer]
src=Virt3
dest=Ch8
switch=AIL DR0
usetrim=0
This is a straight copy of Virt3 to Ch8 when the AIL DR0 switch is on. Since this is the last mixer, it will always have priority if enabled, meaning that the AIL DR switch switches between the previous behavior (when down) and Virt3 - whatever that is - when up.
So what is Virt3? A virtual channel. It's not output to anything by itself, but can be used in other mixers, as it is here. It looks like:

[virtchan3]
template=complex
[mixer]
src=THR
dest=Virt3
scalar=55
offset=45
usetrim=0
[mixer]
src=THR
dest=Virt3
switch=FMODE2
usetrim=0
A channel whose template is complex, but with only two mixes. The second one is a straight copy of the THR to Virt3 when FMODE2 is on. The first one is a tweaked copy, scaled back to a factor of 55 and having 45 added to it, meaning it runs from -10 to 100. This could be pair of collective pitch curves, one for idle-up mode, and one for inverted flight. Given that the latter is on FMODE2, and I use FMODE0 for a low rate mode, that would be logical.
I could have used two virtual channels here, one for the MIX settings, and virtchan3, and switched between them in the channel8 template. That would have been a bit cleaner, but this model - putting one virtual channel in the real channel, then a switch to turn the other one on - works equally well with one less virtual channel.

Throttle

At this point, I've only got one channel left - the throttle. We are about to go through the looking glass.

[channel3]
safetysw=Virt2
safetyval=-100
template=expo_dr
[mixer]
src=THR
dest=Ch3
[mixer]
src=THR
dest=Ch3
switch=FMODE2
curvetype=fixed
[mixer]
src=THR
dest=Ch3
switch=AIL DR1
channel3 uses another expo_dr template, though it doesn't actually use an expo. Or dual rates, for that matter, though it has DR switch. The first and third mixers are direct copies from THR to Ch3, with the last one being enabled by AIL DR1. The middle one is enabled by FMODE2, and sets the throttle output to the default value of 100, or full on.
So, if FMODE2 is on, giving us the full range pitch curve on channel 8, I get a throttle fixed at full on, which is what I want (well, close to it) for 3d flight. If you prefer a V-curve here, you can either use a 3 point curve, or a scaled and offset absolute value curve to get it.
However, if AIL DR1 is on, you don't get the fixed throttle - you get normal behavior. If you recall, Channel 8 is set up to only use the pitch curve virtual channel if AIL DR0 is on. So AIL DR will switch between CP heli mode (up) and airplane or 4 channel 'copter mode (down).
The real magic is in the setup for channel3, though. It has a safetysw of Virt2, using a virtual channel as a switch. When that switch is on, the value output to channel3 will be -100, creating a throttle hold.
So lets look at that virtual channel. Well, channels:

[virtchan1]
template=complex
[mixer]
src=THR
dest=Virt1
scalar=-50
offset=-49
usetrim=0
[mixer]
src=!FMODE2
dest=Virt1
switch=AIL DR0
usetrim=0
muxtype=min
curvetype=min/max
I start with virtchan1. This translates the combination of THR, FMODE2 and AIL DR0 into an on/off value. It uses a complex template.
The first mixer uses the throttle stick - still THR - as input. It maps the value directly to the output, with a scaler of -50 - meaning it will slope down from left to right. Further, we subtract 49 from it before outputting it, so the value goes from 1 (when the throttle is at the bottom of it's travel) to -49. This will cause the Virt1 switch to be on when the throttle is all the way down, and off otherwise.
But we're not done yet! The second mixer is controlled by the AIL DR switch, being used if it is up. The input is !FMODE2, so it will be -100 if the FMODE switch is in position 2, and 100 otherwise. The curvetype is min/max, because I like those for switches. The result of all this is that this mixer is only on if the controller is either in airplane mode (AIL_DR0 is off) or in heli mode and FMODE is not inverted (2).
This mixer also has the first (and only) appearance of the muxtype value. It is min, meaning that the value from this mixer - if it is enabled - will be the minimum of the value from the last enabled mixer and it's value. All the other mixers use the default muxtype of replace, meaning their value is used if they are enabled, replacing the previous value.
Because of this, virtchan2 will be on if both the first mixer is on - meaning the throttle stick is full off - and the second one is on. In other words, virtchan2 is on if and only if the controller is set so that the propellers aren't getting power.
The second virtual channel is even more complex:

[virtchan2]
template=complex
[mixer]
src=Virt2
dest=Virt2
usetrim=0
curvetype=min/max
[mixer]
src=AIL
dest=Virt2
switch=Virt1
scalar=-100
usetrim=0
curvetype=fixed
[mixer]
src=AIL
dest=Virt2
switch=RUD DR1
usetrim=0
curvetype=fixed
Another complex template. The first mixer copies Virt2 to itself. The curve is min/max, meaning we force the channel to 100% or -100%. That's not really necessary, but we want this channel to be clearly on or off. The source is also Virt2, meaning the default behavior is to continue outputting the old value.
The second mixer is another fixed curve, with a value of -100. It is controlled by the Virt1 switch - which means that it's going to be on only if we're not going to spin the props. If it goes on, Virt2 will go off.
The third and final mixer is controlled by the RUD DR1 switch, or rudder dual rate when it's spelled out. If that switch is on, we get fixed output default value of 100. So when we switch the rudder dual rate switch down, Virt2 will go on.
Ok, let's put this all together to see it in action. During normal flying, rudder dual rate is off, flight mode is either 0 or 1, and the throttle output tracks the stick. Virt2 is also off. I throw the rudder dual rate switch, the third mixer for Virt2 goes on, so the safetysw entry for the throttle sets the output to -100. If I turn off the rudder dual rate, the first mixer will keep Virt2 off! I.e. - the throttle output will stay at -100. It will stay that way until Virt1 goes on - meaning things are set so the props won't spin.
I was introduced to this for just the throttle stick as a sticky throttle hold. The first time I tried it with a CP heli, I managed to turn throttle hold off in an inverted flight mode. Fortunately, I was using a sim, so no damage was done, but I quickly fixed it. I call this a safe throttle hold. When using it, your good habits of making sure the throttle is down and you're not in an inverted flight mode will still work - but should you accidental skip a step, it will help you avoid a nasty accident.

A little lagniape

You can also control the display with this software. I have it set this way:

[gui-qvga]
trim=6
barsize=half
box1=Ch1
box2=Ch2
box3=Ch3
box4=Ch4
box5=Ch5
box6=Ch6
box7=Ch7
box8=Ch8
bar1=Ch1
bar2=Ch2
bar3=Ch3
bar4=Ch4
toggle1=FMODE
tglico1=5,6,19
toggle2=Virt2
tglico2=0,13,19
toggle3=AIL DR
tglico3=0,3,0
toggle4=GEAR
tglico4=0,23,0
This displays the values of all 6 trims as bars, and provides the value of all 8 output channels as numeric output. It provides four toggles, from left to right underneath the model name. toggle1 shows the flight mode, switching to white-on-black when in FMODE2. toggle2 turns on a throttle hold icon when Virt2 is on. toggle3 turns on an A-down icon when in airplane mode. toggle4 turns on a G-down icon when you put the gear down.

Summary

This setup allows me to use one model on my Devo 10 to fly both CP helicopters and everything else. With 30 models, I could certainly spare more than one, but that could be problematical as Phoenix doesn't deal well with multiple transmitters.

Review

Let's go over the controls we have.
The elevator, aileron and rudder sticks are sent to channels 1, 2 and 4 respectively. They all have a low rate mode enabled by FMODE being 0.
The GEAR and ELE DR switches are sent to channels 5 and 6, respectively. GEAR being on brings up a G-down icon on the display. The AUX4 knob goes to channel 7, with trim adjustment.
The AIL DR switch switches between CP heli and other modes. When it's on, channel 8 is a mix of the MIX switch and AUX5 and trims, the throttle stick goes to channel 4, and an A-down icon shows on the display. When AIL DR is off you are in CP mode, and channel 8 is pitch, controlled by the throttle. In CP mode, when FMODE is 2 the throttle is full on and you have the full range of pitch available, so you can fly inverted. Otherwise CP mode has the throttle stick with full range and pitch limited to the top 60% of the range. FMODE also has an icon on the display.
Finally, RUD DR functions a safe throttle hold, that re-enables the throttle only when it shouldn't spin the props, adjusted depending on the setting of AIL DR. Whenever the throttle is held, there's a TH icon on the display.

Download

You can download this model.ini file from the deviationTx forums.

Conclusion

While setting up a sim this way is useful, it really doesn't help you become a better flier. What it does do is provide an example of how flexible this firmware really is - and those features come in useful as your aircraft gets more complex. If there is a controller using proprietary firmware that can duplicate this functionality, I'd be interested in hearing about it. Maybe a pointer to the manual?

Postscript

This setup was done with version 3.0.0 of the deviationTx firmware. The next release will have more functionality, adding the ability to use trim switches (which can include the UP/DN/EXT/R/L/ENT buttons) as momentary switches, toggles, and paired switches. I'll probably use some of those on the current switched channels. It also drastically improves the control of the display. Watch this space if you're interested in how that plays out.

Sunday, July 7, 2013

Open Source Controllers

A rundown of the controllers for which open source firmware is available.

Spektrum DX6i

I can hear people scratching their heads from here: The DX6i can run open source software? Cool! Hook me up! Unfortunately, that's not the case (otherwise, I might still have one). However, it's a very popular entry-level controller. It's capable enough that you may never need a new controller, and if you do, it's probably for more channels rather than missing functionality in the controller. You can probably find one at your local club or hobby shop. Reviews range from good value for the money to garbage, so I suspect it's middle of the road. I'm using it as a baseline that I expect you might be familiar with, if you haven't seen any of the others.

Walkera Devo

These are very capable controllers. All the ones you're liable to find come with the latest features the DX6i doesn't have - a backlight, a real speaker instead of a buzzer, vibration warnings, and telemetry. They run the deviationTx Open Source firmware, but without manufacturers support.
These controllers do not have a module system for exchanging transmitters to use different protocols. However, the CPU in the controller actually controls most of the protocol outside the transmitter itself, which means the authors can add protocols - if the radio transmissions are correct - just by adding software. deviationTx supports numerous Walkera protocols, Spektrum's DSM2 and DSMX protocols as well as the Nine Eagles J6Pro controller protocols without further hardware modifications.
You can add a transmitter by soldering it into the controller. deviationTx has support for FlySky (used by some WLToys ultra-micro copters, among others) and Hubsan X4's protocol by adding a module. The next release should have support for FrSky and SkyArtec protocols with an additional transmitter, and support for yet more transmitters and protocols - including the one used by newer WLToys V2x2 quads - is in the works. At the present time, you can only have two extra transmitters in a controller.
This level of control also allows the controller to emulate behaviors that are done at a very low level in transmitter, such as the WLToys extra functions.

Devo 7E

Street price is around $80 at this time. This is an unusual controller, in that it's not much bigger or heaver than the cheap controllers included with most RTF craft. However, it's a fully computerized controller capable of running deviationTx. It's not quite up to the feel of the DX6i - the gimbals don't seem quite as good. Replacing the cheap plastic sticks (it takes Futaba style sticks) goes a long way towards making up for that. It does have two issues:
  1. Lack of controls. It comes with two two-position switches. There are mods to add either two more such switches, or a three-position switch if you're running deviationTx. That firmware also allows you to use the six configuration buttons as three pairs of trims for extra analog inputs, and the next release will allow them to be used as momentary buttons, toggle buttons, or even on/off pairs of buttons, which will help a lot.
  2. The radiated signal is low power. There is a published mod that increases the output power, but it's probably illegal in most jurisdictions.
In spite of those two problems, I think the Devo 7E with deviationTx is the best buy for a first controller, but you will outgrow it if you stay in the hobby any length of time.

Devo 10

The Devo 10 is a full-features, full-size controller. It costs about twice as much as the Devo 7E, but - well, it's more than twice the radio. Better quality, smoother gimbals, and like the DX6i this is a controller you might not outgrow. It's more capable than the DX6i, and generally better quality.

Devo 6s

This is another small form factor controller, like the 7E. Not only does it sport a color touch-screen, but it doesn't suffer from the low power transmitter of the 7E, and has more available controls. Not as many as a full-size controller, but you have to give up something to keep the size down. With the additional controls the next release of deviationTx will make available, it'll have more controls than the DX6i. It's build quality and gimbals are similar to the Devo 10.
The downside is that it costs as much as the Devo 10. Unless the small size or the color touch screen are must-have features for you, the Devo 10 is a better buy.

Devo 8s

Similar to the Devo 10, but with a color touch screen interface at an extra cost. I'm not convinced color touch screens are a good idea for RC controllers: hard to read in direct sunlight, and possibly a bit fragile for something that's going to be dragged to and from flight fields on a regular basis.

Devo 12s

The top of the line. Better build quality, more functionality, better screen - though it is a color touch screen. It still manages to weigh less than the Devo 10. The downside is that it costs about twice as much as the next most costly Devo, the 8s.

Other variants

Some older Devo controllers you may run into.

Devo 6, Devo 8, Devo 12

These are identical to their similarly numbered brethren, except they have no telemetry support. You may be able to add a module to get that, but those are even harder to find than the controllers.

Devo 7

This is not in any way like the Devo 7E. It's more like an early version of the Devo 10. Most importantly, the architecture is sufficiently different that deviationTx hasn't been ported to it. So unless you're looking to do the port, don't get suckered into buying this thinking you're getting the Devo 7E.

TH9X et al

This is a much more complicated set of controllers, because they are made by more than one company, and have numerous aftermarket modifications available.
They are all full-size controllers using full-strength transmitters and have a fairly complete selection of controls. They have a bay that accepts - possibly with some work - JR-compatible transmitters, which allows them to work with receivers for any protocol for which you can find an appropriate transmitter.

TH9X and clones

The original controller was the FrSky TH9X. A number of companies licensed the right to manufacture and sell it under their own brand, most notably Hobby King, under their Turnigy brand. That's the least expensive of the bunch, generally called the T9X, and the one most people think of when they think of 9X controllers. That's the one I'll describe here.
The Turnigy 9X has lower quality than the Devo 7E, much less the DX6i. The gimbals are about the same as the Devo 7E. Other manufacturers could well have used better parts, though their controllers will cost more.
It comes from Hobby King in one of two forms, either with or without a transmitter and receiver. Either retails for about $50. However, Hobby King charges shipping, and has a number of warehouses around the world, which will have a different (usually higher) price and shipping cost. The provided transmitter is also Turnigy-branded, and speaks the FlySky protocol used by FlySky receivers and the older WLToys aircraft (V911, V912, V9x9 quads; not V922 or V2x2 quads). However, the radios can't manage the extra functions of those quads with the shipped CPU. The transmitter is hardwired into the controller, and needs to be disconnected before you can use a transmitter for a different protocol in the module bay.
There are also published mods for taking the transmitter out of a MLP4DSM controller - the controller shipped with smaller RTF E-flite airplanes and Blade 4-channel copters - or similar and soldering it into the controller, allowing it to use the DSM2 protocol.
As shipped, this controllers firmware cannot be updated. That requires a hardware mod. Likewise, it's a fairly primitive controller - no backlight, a simple buzzer the only form of alert, no telemetry. There are mods to fix all of that, as well as upgrade the CPU for more performance, which might enable the WLToys extra functions, or add an SD card for extra storage. Given the appropriate set of mods, you can playback audio files from the SD card for specific warnings, meaning instead of beeping when you turn it on with dangerous switch or stick settings, it tells you about them.
If you buy a controller without a transmitter, you'll have to add one - which will push the retail price out to close to the cost of a Devo 7E, before you factor in shipping. If you buy one with a transmitter, and do an inexpensive version of the firmware upgrade mod, you might be able to get one put together for slightly less than the street cost of the Devo 7E. But adding a backlight is cheap and simple, and real sound playback and vibrations are likewise. Nothing fancy like telemetry, or a better CPU or voice playback, but you've still got fewer features (if more functionality) than the Devo 7E, and have probably paid more for it.
Fully tricked out with all the upgrades, this controller has functionality if not quality comparable to the better Walkera controllers - but you will have spent more on it than they cost you to begin with. Not to mention having to build it yourself.
The likely lower cost and more functionality with a lot less work is why the Devo 7E beats this out as a recommended entry level controller. This is the controller to buy if you enjoy modding electronics.

Turnigy 9XR

This is Hobby Kings upgraded version of the controller. It is also about $50, but is only available without a transmitter. It does have a backlight and a port for upgrading the firmware, but you'll have to buy the programmer and a transmitter before you can use it.
Quality is, if anything, worse than the original. Very few of the parts have changed, and there have been reports of problems with some of the changes that the original didn't have.
It's also the first controller that shipped with open source firmware from the manufacturer. They've released the source, as required by the license. It was dated software before they released it, and most people purchasing this controller upgrade to something newer fairly quickly. However, the community was not involved in the design of this controller, and the response has been fairly poor in spite of the excitement the announcement generated.
This can be a cost effective controller if the size or limitations of the Devo 7E bother you, and you don't want do the soldering required for the TH9X clones.

FrSky Taranis

This is a new controller, and is just starting to get into the hands of hobbyists. It was designed to run the openTx branch of the th9x software, and ships with that installed. It also ships with all the bells and whistles you can add to the TH9X - backlight, vibration, upgraded CPU, SD card, voice playback, telemtery, etc.
This controller has the same module bay for transmitters as the TH9X, so it can fly anything they can. However, it also has a built-in transmitter. You can use them both at once, meaning you could have one transmitter for controlling your aircraft, and a second for controlling an FPV camera, or whatever else you'd like, using just the one controller.
Unlike the 9XR, this controller was designed with involvement from the open source community. The initial response has mostly been positive. It's not perfect, but the problems are minor, and easily correctable if you're so inclined. Reportedly good build quality, high-quality gimbals, and a very solid feel.
It's to early to say for sure, but could well be the controller to buy if you're looking for something that's not at the bottom of the price scale. It's less expensive than the Devo 8s, or than what you'd spend on upgrading a TH9X clone or the 9XR to anywhere near it's capabilities.

Next time

Configuring a Devo 10 running deviationTx to get the most out of your flight simulator, to show how flexible this software is.

Wednesday, July 3, 2013

Open Source RC controller firmware

What's special about Open Source?

I expect most of you have heard of it, but open source software means you can get a copy of the sources and modify them to meet your own needs. An open source version of a firmware controller means - well, you can change it to add functionality to your controller. Adding a backlight to a controller is easy. Making it time out and shut off after a period of inactivity is also easy - with access to the firmware source. Without it, not so much.

What are the choices?

There are a number of choices:
th9x and descendants
th9x was one of the first open source controller firmware options. A number of other options have been branched from it for a variety of reasons. They aren't identical, but moving between them is relatively straightforward
RadioClone
RadioClone runs on the same hardware as the th9x variants, but was independently developed, and is radically different from them.
DeviationTx
An open source firmware for the Welkera Devo line of controllers.
OSRC
The Open Source RC project is not merely an open source firmware project. It includes a modular open source hardware design that the open source firmware runs on. No complete release is available yet.
XPS-3216
This controller is rumored to have open source software, but nothing has been released yet.
The only ones actually available at this point are th9x and variants, RadioClone and deviationTx.

th9x and variants

These generally run on a variety of similar radios, and include support for a fair number of hardware ugprades - most notably custom CPUs and motherboards. That's one of the reasons for some of the variants - they were created to support some specific motherboard. OpenTx seems to be the most popular now, in part because it was designed to be configurable for different hardware variants at compile time, so some of the hardware-specific variants have been abandoned in it's favor. It's what I'm most familiar with.
The variants are generally harder to configure than proprietary radios, because they don't have specific settings for popular aircraft configurations. Instead, you have to know how to configuring things for a specific type of craft. This is alleviated in part by a template system, and in part by desktop software that can read and write the model configurations, and incorporates the requisite knowledge.
On the plus side, the tools for configuring the controller - generally called mixers - are much more powerful than those found in proprietary firmware. Proprietary systems generally only allow a few custom mixes with one or two extra inputs, controlled by a small set of switches. The th9x versions let you have mixes on every output channel, have virtual channels, have input counts limited only by memory, and can be configured to be controlled by any switch on the device, including things that aren't normally switches, and virtual switches that are the result of evaluating boolean expressions involving the same set of switches - including themselves.

RadioClone

This runs on the same basic radio as the th9x software, but takes a different approach to providing flexibility. I'm not really familiar with it. If you're interested in an in-depth look, leave a comment asking for it.

deviationTx

deviationTx runs on the Walkera Devo line of controllers. These have a generally more powerful CPU than the controllers used by the th9x software. It does have a standard mode for helicopters that resembles proprietary firmware controllers, as well as an advanced mode that resembles the th9x software, but doesn't seem quite as powerful. The software is newer than the th9x software, so I'm still investigating how powerful it is, and it's adding new capabilities quite rapidly. The UI - at least on the more expensive radio with color touch screens - is much better than the th9x software.

Next time

I'll look at the hardware available to run this firmware.