Er9x user guide

From OpenRC Guides
Jump to: navigation, search

The manual below is very old and it might be removed soon. For an updated version of the Er9x manual please go to


The IMAX/FLYSKY/TURNIGY/EURGLE 9x is a computerized radio from china. The transmitter is outfitted with a 128x64 pixel monochrome LCD, 2-2axis gimbals, 3 variable potentiometers (pots), 6 2-position switches, 1 3-position switch and some funky red trim. The big thing about this transmitter is the price. At the time of writing radios may cost anywhere from $180 for simple units up to $1000+ for super blinged out bazillion channel super heavyweight monsters.

This one costs $60. Where's the catch then? (you might ask) The catch is in the software (firmware - FW). The original FW is less-than-perfect. It has bugs, funky navigation and the most annoying beeping I have ever heard. Not good.

However, some neat guy called Thus figured out that the whole radio is made from gimbals, switches, funky trim and a very generic main processing unit that does absolutely everything. He had one of those ah-ha moments where insanity overrides common-sense and decided to completely rewrite the original software and replace it with his own. At some point I decided that while Thus' FW is great I really wanted more bling for my TX. So in the spirit of open-source Thus' source was stolen and ER9x was born. (Yeah, I was vain. ER are my initials)

You might want to check out Thus' code – it's available here: While you're at it check out RadioClone's code – which also runs on the 9x. While ER9x is based on Thus' code, I have managed to pilfer some of RC's excellent code. His FW is more complex but also more powerful. Check it out here: Got you all worked up about this? Good. Go now to the kitchen, make yourself a nice cup of coffee. This is a long read. I'll wait here till you're ready. Promise!

How it works

Bear with me here – some flow charts coming up:


What the heck was that?

The system receives 4 types of inputs:

  1. Main Sticks
  2. Potentiometers
  3. Trims
  4. Switches

The analog inputs (sticks and pots) go through a calibration phase. The sticks can also go through Expo and Dr filters before going to the mixer.

The mixer does it all. It directs each input to the desired output (CH1..CH16). It controls how the inputs are added. It also controls the timing of each function.

After the inputs are processed by the mixer they are directed to the relevant output channels. The limit procedure takes over and makes sure no output goes too far.

Finally the channels are encoded and sent to the RF module to take that nice little hike through the air to your model.

Nomenclature (just so we understand each other)


  1. RUD – Rudder.
  2. ELE – Elevator.
  3. THR – Throttle.
  4. AIL – Aileron.
  5. P1/P2/P3 – Pots.
  6. Switches:
    1. THR – Throttle cut switch, don't confuse this with the THR stick. The THR switch is located on the back left side.
    2. RUD – Rudder Dr switch.
    3. ELE – Elevator Dr switch.
    4. ID0, ID1, ID2 – Three position switch. These 3 define the 3-position switch. ID0 is the top position, ID1 – mid position and ID2 – bottom position.
    5. AIL – Aileron Dr switch.
    6. GEA – Gear switch.
    7. TRN – Trainer switch. This switch is spring loaded.
    8. SW1..SW6 – Custom switches. More on these later.

It should be stated that every function in this FW is assignable. There are no fixed switches. You can choose the TRN switch to be throttle cut and use the triple switch to control Dr. The names are useful since they are labeled like that on the Tx.

Edit buttons

There are 6 edit buttons on the Tx. In this manual they are noted with square brackets ([MENU]). Some functions need the button to be pressed and held for a second or so. The are noted as “long” presses like so: [MENU LONG]

Also since the “+” and “-” keys are placed stupidly in the original Tx I've switched their position. So [+] is actually [-] and vice-versa. This is actually more intuitive than the original (trust me, I've tried using them as is).

Since to upload this FW you need to open up your Tx and do some modifications (which void your non-existent warranty FYI) it is highly recommended you switch between the [+] and [-] keys. It's a simple job, so don't skimp, you'll thank me later. To avoid confusion with people who modded their keys and all the others I'll refer to the [+] and [-] keys as [LEFT] and [RIGHT] from now on. (I hope that left and right are still universal values – you can never tell today)

The “!” sign. Whenever you see the “!” sign you can read that as “not” or “inverted”. Switches can be “normal” or “inverted”. So when choosing the elevator d/r switch ELE is normal operation and !ELE denotes inverted operation.


As a general rule the [UP]/[DOWN]/[LEFT]/[RIGHT] move the cursor appropriately The [MENU] key is used for selection and for editing. The [EXIT] key is used for exiting (surprise). Pressing [EXIT] will generally bring the cursor to the top of the screen. Another press will exit the menu to the main screen. Pressing [EXIT LONG] will exit immediately to the main screen.

Pressing [MENU] from the main screen will take you back to the last menu. From the main screen you can press [RIGHT LONG] to enter the model setup pages. Pressing [LEFT LONG] will enter the general setup menus.

Once in the menus you can navigate between different screens using the [LEFT]/[RIGHT] keys as long as the cursor is at the top right position of the screen

Editing and Saving

As a rule once a value is changed it is saved. You can turn off your Tx and turn it back on and the values will be saved. The values are saved internally in the MCU's eeprom. However there is a slight delay sometimes so it's probably a good idea to wait a couple of seconds before turning off. There is no undo functionality. Once something is erased/changed it's changed for good.

Generally, when a value is highlighted and you cannot move left or right then pressing [LEFT]/ [RIGHT] will change that value.

When moving left or right is possible you need to press [MENU] to edit that value. Edit-mode is displayed by the cursor blinking. To exit edit-mode press either [MENU] or [EXIT]. When editing, pressing both [LEFT] and [RIGHT] simultaneously inverts the value. Try it, it's cool!

Also , with r155 and up it is now possible to change values with the P3 pot (the one at the front of the Tx called PIT. TRIM/AUX 2).

On Startup – Quick Model Select On startup holding a certain key will load an associated model memory. This is useful for quickly changing between model memories:

  1. Holding [MENU] Will load Model memory #1
  2. Holding [EXIT] Will load Model memory #2
  3. Holding [DOWN] Will load Model memory #3
  4. Holding [UP] Will load Model memory #4
  5. Holding [RIGHT] Will load Model memory #5
  6. Holding [LEFT] Will load Model memory #6

Transmitter Layout


Main Screen

General View


The main view is split into top and bottom. The top contains the following:

  • The current model's name. (MODEL01 in this case)
  • The battery voltage(10.4v).
  • Trim increment information(Exp or exponential).
  • Timer and timer trigger information(e.g. TH% throttle position relative). Pressing [EXIT LONG] resets the timer.
  • Throttle trim activation information.

The bottom consists of four screens. You can flip between these with the [UP]/[DOWN] keys. The 4 screens are:

  • Value bars – these show the output values for the first 8 channels.
  • Value values – The output values for the first 8 channels.
  • Input values – Stick position and switch indicators (shown in this pic-mode2 throttle on left) bars in the middle are pot input indicators.
  • Elapsed timer – Timer that may be started, stopped [MENU] or reset to zero [MENU LONG].

Statistics Screens


From the main screen pressing [UP LONG]/[DOWN LONG] will enter the statistics screen.

The first shows some available timers and traces the throttle stick as well.


The second shows general timing of the Tx. The value “tmain” shows how long the math takes. This will increase as you add more mixers. It can be very large sometimes depending on eeprom writes. The Stack value shows the unused space, in hexadecimal, between the end of used Ram memory and the lowest point the stack has reached. You can reset the timers by pressing [MENU].

General Settings

From the main screen pressing [LEFT LONG] will enter the general settings menus. Here you can set up settings that will be the same regardless of chosen model. The menus are as follows:

  1. Radio Setup
  2. Trainer settings and PPM In Calibration
  3. Version Information
  4. Diagnostics
  5. Analog Inputs
  6. Calibration

Radio Setup 1/6


Use this screen to set up general functions for the Tx:

  1. Owner Name: The radio owner's name. You... Unless.... (hmmm...) This will also be displayed on the splash screen.
  2. Beeper: Sets Beeping levels
    1. Quiet: No beeping at all. No warning – nada. If the kids are sleeping and you must setup the model in your living room this is the mode to use. Just remember that the Tx will not even warn you when the battery is low. If you're using a Lipo watch out!
    2. No keys: The beeps are normal but edit keys are silent.
    3. xShort.
    4. Short.
    5. Normal.
    6. Long.
    7. xLong beeps.
  3. Sound Mode : TODO
    1. Beeper
    2. PiSpeaker
    3. BeeprVoice
    4. PiSpeakerVoice
    5. MegaSound
  4. Volume : as suggested, the sound volume. The values can be 0..7. The higher the value, the louder the sound.
    1. Speaker Pitch : TODO
    2. Haptic Strength : TODO
  5. Contrast: The LCD's contrast. The values can be 20..45. The higher the value the darker the screen.
  6. Battery warning: Battery voltage warning. When the connected battery's voltage drops below this voltage the Tx will beep. Though the Tx will continue to function normally it's really advisable to land as it is known that this FW was not able to fix the “zero voltage non functionality” problem of the original.
  7. Inactivity alarm: This will set up a warning that will beep if the Tx is left unattended for the specified amount of time. The default value is 10 minutes. To turn off the Inactivity timer – set the value to zero. Also, when running on USB power, the alarm is inactive. Values can be from 1 to 250 minutes. To reset the timer simply move one of the sticks.
  8. Throttle reverse: This is for all you wacky people who fly with the throttle backwards (e.i. idle is far from you and full is close to you). Though I personally don't understand how you fly like that it's a nice feature. The reverse will also reverse the throttle warning on startup and some other throttle related functions.
  9. Minute beep: Beeps every full minute while the timer is running.
  10. Beep countdown: Beeps at 30, 20, 10, 3, 2 and 1 seconds before the timer ends.
  11. Flash on beep: Flashes the backlight on timer beeps.
  12. Light switch: This chooses a switch which can be used to turn on a backlight if connected.
  13. Backlight invert: Reverse the light mode. if set, by default light is on instead of being off.
  14. Light off after: When this is not OFF any keypress will turn on the backlight and turn it off after the specified number of seconds.
  15. Light on Stk Mv: When this is ON, any move of the sticks will turn on the backlight.
  16. Splash screen: Show the logo on radio startup. Btw, you might not know this but the splash screen can be skipped on startup by pressing any key.
  17. Splash Name: If ON, the owner's name will be print on the splash screen.
  18. Throttle warning: If ON will show a warning when throttle is not at idle when the Tx is turned on. The Tx will not output a signal until the alert is cleared.
  19. Switch warning: If ON will show a warning when the switches are not at the default position when the Tx is turned on. The Tx will not output a signal until the alert is cleared.
  20. Default Switch: When you first switch the radio on, er9x used to require that all the switches were 'OFF'. This option lets you choose a default setting with some switches 'ON' and others 'OFF' instead. T is THR switch, R is RUD switch, 0/1/2 is the position of the 3-positions switch, and so on. Use the left/right buttons to select a switch, and MENU to toggle.

Note: One of the 0/1/2 has always to be activated (for evident reasons)

  1. Memory warning: If ON will show a warning when the available eeprom memory is less than 200 bytes when the Tx is turned on. The Tx will not output a signal until the alert is cleared.
  2. Alarm warning: This will give you a “heads up” if your beeper is silent. If on and the beeper is set to '0' (Quiet) you will receive a warning on startup. This has been added after a programing session left a user flying on silent. I find it really useful!
  3. PotScroll : TODO
  4. BandGap : TODO
  5. Enable PPMSIM : TODO
  6. CrossTrim : TODO
  7. Mode: Choose between MODE1, MODE2, MODE3 and MODE4. The diagram show how sticks are allocated depending on the Mode. Very usefull when you don't know what are the modes.

PPM In 2/6


This menu allows the PPMin (trainer) inputs to be configured. It enables the RAW PPM inputs to be selected to replace the sticks for training purposes. The student transmitter does not need to have the same model setup as the instructor. All the mixes on the instructors Tx will be applied to the student inputs. If, for example, you have expo on your sticks, this will be applied to the raw trainer inputs when they are selected.

The mode entry selects how the PPMin value is used:

+=add to instructor stick value
:=replace instructor stick value

The % entry applies a weighting to the PPMin value -100 to 100, Use -100 to reverse the input. Use values closer to 0 to reduce the students control sensitivity. The src entry selects the PPMin channel for the function.

The sw entry selects the switch used to action the trainer operation. Multiplier 1,0 to 5,0 scale for PPMin values The multiplier does as it's name suggests. It multiplies the ppm Input by a set amount. Great for dealing with different tx's whose makers don't know how to encode PPM.

CAL Center calibration for first 4 PPMin values This entry allows you to calibrate the mid point for the first 4 input PPM channels. Highlighting “Cal” and pressing [MENU] will calibrate the mid point for all PPM IN channels.

PPM IN is read from the signal at the trainer port of the Tx.

There is an option for each model to enable or disable the trainer input function. If you do not need the trainer function you may disable it, and use the selected switch for something else. All the PPMin values are available to the mixer.

Version Info 3/6


This screen shows the version information for the current FW:

SVN : The SVN name of the current revision.
VERS: Version number.
DATE: Compile date for the current FW.
TIME: Compile time for current FW.
MOD : Main compile switch modifications

In this example, ER9X has been compiled for FrSky telemetry and no templates

The first value is for telemetry

empty for the basic ER9X
FRSKY | JETI | ARDU | NMEA for one of the telemetry versions

The second block shows heli and templates support

empty  heli setup and templates availabe
NOH    NO Heli setup
NOT    NO Templates
NHT    No Heli setup and no Templates


When you have physically rerouted the signals for Throttle cut and Aileron D/R switches you always MUST use one of the telemetry versions of ER9x (FRSKY, JETI, ARDU, NMEA)

When you did not reroute the signals for Throttle cut and Aileron D/R switches, you must use the basic version of ER9x

If you reflash your radio and realize that Throttle cut switch and Aileron D/R switch do no longer work (are always active), you probably flashed the wrong version.

Since ER9x is OPEN SOURCE We all to help out anyone who has problems. Please feel free to open new issues for defects and/or enhancement requests at the project's code page:

Your participation is what helps me makes the FW better (and your donations of-course!). Please use the revision number stated in this screen when you state a problem.

Diagnostics 4/6


This menu will help you visualize the current state of the trims, keys and physical switches. Each Key/Switch/Trim is represented. When pressing a key or switch they are highlighted.

Analog Inputs and Battery Voltage Calibration 5/6


Here you can see the analog inputs in hexadecimal format to save space and annoy you at the same time.

Values range between 0..0x3FF (0..1023).

A1-A4 are the gimbals (sticks). A5-A7 are the pots.

A8 is battery voltage.

You can press [DOWN] and highlight the battery voltage. Pressing [LEFT]/

[RIGHT] will increase and decrease the value and so enable you to calibrate the battery voltage monitor.

Calibration 6/6


This screen allows you to calibrate the analog channels (A1..A7). The calibration method goes like this:

  1. Press [MENU]
  2. Set Sticks to center. (Including throttle and pots)
  3. Press [MENU] → (SetSpan)
  4. Move sticks and pots through full range.
  5. Press [MENU] → (Done) – Values are saved here.

The values are calculated when you press [MENU]. They are saved when you press [MENU] to (Done).

(Works surprisingly well for a cheap Chinese Tx)

Model Setup

From the main screen pressing [LEFT RIGHT] will enter the model select/settings menus. Here you can set up settings that model specific.

The menus are as follows:

  1. Model Select
  2. Model Setup
  3. Heli Setup
  4. Expo/Dr
  5. Mixer (This is the important one)
  6. Limits
  7. Curves
  8. Custom Switches
  9. Safety Switches
  10. Templates
  11. FRSky (if enabled in firmware)

Model Select


In this screen you can see, select, copy and move models between different memory “slots”. I quote the word “slots” because memory management is dynamic. The available memory is displayed at the top of the screen.

Memory usage for each model is displayed on the right. The more complex your model (mixes/curves/options/limits/etc) the more memory it'll take.

The “*” on the left shows the currently loaded model memory. Pressing [UP]/[DOWN] will move the cursor between different models.

Pressing [MENU] will highlight the model. Pressing [UP]/[DOWN] with the model highlighted will move it up/down. Pressing [EXIT] will un-highlight the model.

Pressing [EXIT] will load the highlighted model.

Pressing [EXIT LONG] will load and exit to the main screen.

Pressing [RIGHT LONG] will load the model and go to the next screen (Model Setup).

Pressing [LEFT LONG] will load the model and exit to the main screen.

Pressing [MENU LONG] will duplicate the selected model. A confirmation screen will be displayed requiring you to confirm the duplication of the selected model.

Model Setup 1/12


Lots of options here:

  1. Name: Unsurprisingly here you edit the model's name. To edit: scroll down until the name is highlighted and press [MENU]. Once your press [MENU] only one letter will remain highlighted. To change the letter you press [UP]/[DOWN]. To move the cursor press [RIGHT]/[LEFT]. Once done, press [MENU]/[EXIT] to exit the edit.
  2. Voice Index : TODO
  3. Timer: Here you set the value for the timer. Press [RIGHT]/[LEFT] to choose between minutes and seconds. Press [MENU] and the cursor will blink. To edit use the [UP]/[DOWN]/[RIGHT]/[LEFT] buttons and [MENU]/[EXIT] when done.
  4. Trigger: Choose what triggers the timer → (remember – by pressing [LEFT] you'll see the same values with the “!” sign. This means that the usage is inverted)
    1. OFF – timer is off.
    2. ABS – timer is on.
    3. RUs/RU%/ELs/EL%/THs/TH%/ALs/AL% - chooses to activate the timer based on stick position. When a XXs is selected (THs for example) The timer starts whenever the stick is not at zero. The XX% sign is the same except the timer speed is determined by stick position. When at zero, the timer is stopped. When at full the timer goes at normal speed. When midway the timer's speed reflects the sticks position.
    4. Switches – You can specify a switch so whenever that switch is activated the timer counts.
    5. Momentary switches. A switch denoted with “m” (like TRNm) means “momentary”. That means that moving the switch once to the on position and back turns the timer on. Moving it on and off again turns the timer off. (difficult I know, take a sip from your coffee, relax a bit, take a break – it's not difficult once you try it out :) )
  5. TriggerB : TODO
  6. Timer: Here you can choose whether the timer counts up or down.
  7. T-Trim: Throttle trim. This is a nifty feature for power fliers. When activated a couple of things happen. First off the center detent for the throttle trim is removed. Also the throttle's trim will now only affect the “low” side. That means you can use the trim for setting idle while full throttle remains unchanged.
  8. T-Expo: 'nother throttle related function. This one makes the throttle stick's expo go from zero to full instead of having a center like all the others. Always the odd kid out this throttle is.
  9. Trim Inc: Trim increments:
    1. Exp – Exponential. With this the trims are fine near the center and get progressively coarser farther out.
    2. ExFine – Extra fine – 1 step per click.
    3. Fine – 2 steps per click.
    4. Medium (my personal favorite) – 4 steps per click.
    5. Coarse – 8 steps per click.
  10. Trim Sw: Neat little function this is. When in flight if this key is activated it reads the current position of the sticks and trims and copies that into the subtrims. After that it zeros the trims.This is really neat for new models when you might have a hard time taking your hands off the stick and pressing the trims. Simply hold the plane level with the sticks and press the selected trim switch. Voilà – the plane is trimmed. It's magic! No it ain't. It's ER9x!!!
  11. Beep Cnt: Beep Center. Here you set center warnings. The string RETA123 corresponds to: RUD, ELE, THR, AIL, P1, P2, P3. When the letter corresponding to the analog channel is highlighted the system checks for center. When the input is at center a short beep will sound enabling you to hear when the input is centered. This is useful for checking the center of the pots without looking.
  12. Proto: encoding protocol
    1. PPM – with ppm you can choose how many channels to encode. Anything from 4 to 16 channels. You can also change the pulse spacing. This is useful for systems which might experience jitter. On the whole it might be a good idea to leave it alone.
    2. PXX : TODO
    3. DSM2 : TODO
    4. PPM16  : TODO
    5. Other protocols include Silver A/B/C and TRAC09. ???
  13. Shift Sel: Shift select. POS/NEG. Select signal shift. POSitive or NEGative.
  14. E. Limits: Extended limits. Allows limits to go to ±125%. Please test first and make sure this does not cause unwanted mixing between channels.
  15. Trainer: Trainer enabled. This allows you to select if the trainer inputs are used on this model.
  16. T2ThTrig : TODO
  17. Auto Limits : TODO

Heli Setup 2/12

This screen is specifically designed to help you set up a CCPM heli.


  1. Swash Type: This defines what kind of Swash plate you have on your heli:
    1. 120: “Standard” 120° swash plate. The “pitch” servo is towards the front/back.
    2. 120X: Same 120° swash plate but turned 90° so the pitch servo is on one side.
    3. 140: 140° swash plate – again, the “pitch” servo is towards the front/back.
    4. 90: 90° - Basically a simple 90° setup where you have a single servo operating the pitch and two operating the roll.
  2. Collective: This defines the collective's source. The idea being that you can create a mix with all the required curves and switches and simply plug it in here to mix with the others.
  3. Swash Ring: As the name implies. This limits stick movement just like a physical swash ring. Notice that this only works on AIL and ELE regardless of radio mode selected.
  4. ELE/AIL/COL Invert: These invert the direction of the input functions. Use these to make the controls move the correct way when setting up your heli.

Flight Modes 3/12

You can define here up to 4 Flight Modes.


Expo/Dr 4/12


This screen allows you to enter and edit Expo and D/R values for the main controls (RUD/ELE/THR/AIL).

For each control you can input values for Left/Right for both Expo and D/R. To edit expo values highlight the value in the “expo” column and press [MENU]. Once the cursor blinks you can use the [UP]/[DOWN]/[LEFT]/[RIGHT] buttons to change the value. Notice that while there is a telltale that shows you which side of travel you are adjusting:

  • "-”: This means both left and right values are equal. Pressing [UP]/[DOWN]/[LEFT]/[RIGHT] will change both values simultaneously.
  • "←”, “→” : When moving the stick you can see either of these symbols. When this symbol is

visible you are only changing that side of travel.

For each control you can set 2 switches (DrSw1 & DrSw2). The main switch changes between high rate/high expo and mid rate. If the main switch is “low” (i.e. mid rate) the second switch can switch between mid and low rate.

At the end of the first line there's a telltale that shows you which rate you are on:

  • Hi: High.
  • Mid: Medium.
  • Low: Low.

Pressing [MENU LONG] while the cursor is on a control will take you to the Edit Expo/Dr screen.


More in depth Expo curves

In this screen you can adjust the values for that single control. You will also see a graph indicating the action of that control. These controls are set individually in this screen. If you pull down on the elevator control, it will set the expo curve or dr for down. If you push up on the elevator control it will set the expo or rate for up. This is to allow for the flexibility of setting non-semetrical expo and rates. This is applied the same for left right on ailerons and rudder. Press [EXIT] to return to the main Expo/Dr screen.

Triple Dr Example

The "F.Mode" switch can be used as a triple rate switch for any one axis, or it can be used as a triple rate flight mode switch, controlling rates and expos for some or all of the flight axes at once. To use it as a triple rate/flight mode switch, set sw1 to "!ID2" and sw2 to "!ID1" If you want rudder, elevator, and aileron all assigned to this switch for flight modes, be sure to set sw1 and sw2 as above for each axis. With the switch in the up position, it will be at low rate, as indicated by the "L" at the end of the line. In the mid position, it will be mid rate, and at the down position, it will be at high rate. You can also include throttle if you'd like, to have different expo curves for each of the flight modes.

Mixer 5/12

I'm actually writing this last since it's the most important menu. If you're still awake now would be a good time to sip that coffee and wake up. You want to understand ER9x? Understand the mixer and you're very nearly there.

The function of the mixer is to take the inputs, perform some function on them and route them to the output channels. Since selection is totally free you have a very flexible system which is extremely powerful and very quick to boot.

Main Screen

When you enter the screen for the first time you'll probably see a list like so:


What this is telling you is that the rudder stick's input is being routed with a weight of 100% to CH1. For the elevator CH2, throttle CH3 and aileron CH4. Though not visible now you can also see the switch column which will tell you if a switch is assigned to the mix and also a crv (curve) column which tells you what curve is applied to that mix.

When you scroll down you'll see that sometimes the weight is being highlighted and sometimes the channel's number is underlined. When the weight is highlighted, pressing [LEFT]/[RIGHT] will edit that value and pressing [MENU LONG] will enter the Edit Mix screen and allow you to edit that mix.

When the channel's number is underlined, pressing [MENU LONG] will insert a new mix for that channel and take you to the edit mix screen to insert it into that channel.

You can also press [MENU]. This will highlight the mix. Then you can press [UP]/[DOWN] to move or copy the mix. Notice that moving or copying is decided by whether you press up or down on the first press after highlighting the mix. If you first try to move it down it will be copied. Subsequent presses of [UP]/[DOWN] will move the copy up or down until you press [MENU] or [EXIT]. Pressing [UP] will move the mix without copying it. Again, subsequent presses of [UP]/[DOWN] will move the copy up or down until you press [MENU] or [EXIT].

If the Trainer function is enabled and active, the four values RUD, ELE, THR and AIL are changed to the PPMin values selected in the TRAINER menu.

Edit Mix

Screenshot-18.png Screenshot-19.png

In this screen you edit individual mixes.

Here are the available options for each mix:

  1. Source: This is the input for the mix. It can be the following:
    1. Stick or pot: Self explanatory.
    2. HALF: The output is either 0 or the value describes in “weight”. This is controlled by the switch.
    3. FULL: Same as HALF but the value is “-weight” if the switch is off or “weight” if the switch is on. HALF and FULL can be a little confusing. Look in the examples section for, well, examples :).
    4. CYC1, CYC2, CYC3: The 3 outputs of the heli swash-plate mix. Once swash mixing is turned on (Heli menu – 3/10) these become active and hold the result of the swash mix. Generally CYC1 holds the fore/aft output and the other two do the rolling. On the 120X mode CYC1 is the odd one out.
    5. PPM1..PPM8: PPM input channels. These are fed by the ppm input or “trainer port”. You can use these to configure a buddy system or to simply extend your radio with more functions (like head tracking for you FPV guys).
    6. CH1..CH16: These are the outputs of the other mixes. You can use these to chain mixes for very complex behavior.
  2. Weight: This value multiplies the value from the input. It can be -125% to 125%.
  3. Offset: This value is added to the value from the input. It can be -125% to 125%.
  4. Fix Offset : TODO
  5. FlModetrim: (flightmode trim) if toggled to "ON" will produce a Fm TRIMVAL in the line above it. This is where you would select the value for your flight mode trim for this channel.
  6. Trim: When this is “ON” the trim value (if exists) will be carried on through the mix. When “OFF” it is ignored.
  7. Curves:
    1. x>0: The value of the source is carried through only if it is positive (greater than zero). Otherwise it is zero.
    2. x<0: Same but for negative values.
    3. |x|: The value is passed as an absolute value.
    4. f>0: If source is positive then the output value is “+weight” otherwise it is 0.
    5. f<0: If source is negative then the output value is “-weight” otherwise it is 0.
    6. |f|: Output is either “+weight” or “-weight” depending on the sign of the source.
    7. c1..c16: custom curves. These are defined in the “CURVES (6/8)” screen. You can also press [MENU] to edit the curve directly.
  8. Switch: Here you select the switch that operates the mix. If the switch is not selected then the mix is on by default.
  9. Warning: Here you can select an audible warning that will sound whenever a mix is active. (This will only work when a switch is defined). You have an option of 1, 2 or 3 beeps. The warnings will sound in succession so you can hear them individually.
  10. Multpx: Multiplexer. This value defines how the mix will be added to the channel.
    1. Add: This is the default value. With this value the mix is added to the previous values in the same channel.
    2. Multiply: Use this to multiply the previous values in the same channel.
    3. Replace: This value is used in conjunction with a switch. When the switch is off the value is ignored. When the switch is on the value discards the previous values and places it's own value in the channel.
  11. Delay Down/Up: Use this to delay use of this channel. Usually used with a switch. When the switch is turned “ON” or “OFF” the mixer will wait the specified number of seconds before changing the value.
  12. Slow Down/Up: Slow the rate of change in the channel. When not zero these will determine the maximum speed with which the value can change. The specified value is the number of seconds to go between -100% to 100%.
  13. DELETE MIX [MENU]: Pressing [MENU LONG] here will delete the mix and return to the main mix screen

Limits 6/12


This is probably the second most important menu. The limits operate on the output channels (as you can see from the flow chart in the introduction). In the LIMITS menu you can set the center point (subtrim), limits (both left and right) and reverse the channel's output (inv – invert).

Each channel here corresponds to a channel in your receiver. The limits you set will be used on that channel only.


  1. subT: SubTrim. This sets the channel's center point. HINT: The values of subT can be -100 to 100 with increments of 0.1. This is done so to have excellent resolution when setting the center of each surface. You can use your stick to set the center point as well. While the subT is highlighted hold the stick so that the surface is centered. Press [MENU LONG] and the position will be recorded! It's the magic of ER9x again :).
  2. Min/Max: These set the endpoints of the channel. Notice that there's a telltale that hints as to which side is active at the moment. Each limit point can range between -100% to 100%. The limits act both as gains and as absolute limits. The servo will not go beyond the limits you set here.
  3. inv: Invert. This function reverses the output of the channel.
Copy Trim [Menu]

At the end of the limit menu, you have the option to... TODO

Curves 7/12


Surprisingly in this menu you set your custom curves. Curves are nifty things that can tell your servo how to move when you move your stick. In ER9x there are 8 5-point curves and 8 9-point curves.

A 5pt curve is a curve you can edit at position -100%, -50%, 0%, 50%, 100%.

A 9pt curve is a curve you can edit at position -100%, -75%, -50%, -25%, 0%, 25%, 50%, 75%, 100%.

When you enter the menu you see a long list of zeros. Scroll down to the curve you wish to modify and press [MENU] or [RIGHT]. This will bring up the screen for editing the curve.


At the top you will see a “preset” entry. Pressing [LEFT]/[RIGHT] on that will populate the values with a linear curve that is a good starting point. 9 pre-defined linear curves are pre-defined.

Depending on whether you chose a 5pt or a 9pt curve you will see 5 or 9 editable points. Scroll through the points with [UP]/[DOWN]. Change the value with [LEFT]/[RIGHT].

You can also change the curve graphically. Highlight the “EDIT->” line and press [RIGHT]. This will highlight the curve points. Pressing [UP]/[DOWN] will change the values and pressing [LEFT]/ [RIGHT] will select a different curve point.

Custom Switches 8/12


I really like this feature.

Custom switches are not really switches at all but rather a set of logical conditions that can be used as switches.

You might have noticed that beyond the physical switches there are 6 switches called SW1..SW6. These correspond to the list you see in this screen. Once the condition defined for the switch is met it's value will be “ON”.

  1. First we define the condition. This can be v>offset, v<offset, |v|>offset and |v|<offset, or it can be a logical condition: AND, OR, XOR, or it can be an evaluation between 2 sources.
  2. If you've selected a regular condition you need to specify a source and an offset:
    1. The source can be a stick, a pot, a PPM input or an output channel.
    2. An offset can be anywhere between -100 and 100. This will be the test point for the condition.
    3. If you've selected a logical condition the switch results the condition applied to the 2 selected switches. For example: OR ID1 ID2 will be “ON” if either ID1 or ID2 is on. Cool, huh?
  3. If you've selected an evaluation you (“==”, “>”, “<” etc...) you need to select the 2 sources to evaluate between. For example: Switch on only if CH1 is less than RUD → V1<V2 CH1 RUD
  4. TimeOff: TODO
Say you have a glow plug driver which you want to turn on when the throttle is below 10%:  
* Highlight SW1
* Select the source as THR.
* Select the offset as -80 (remember -100 – 100 so 10% from idle is -80).
* Select the condition as v<ofs.
Now you need to use a mix to run the switch.  Go to the mixer menu.  Select the CH8 as the channel  you want the GP driver to operate on.  
On that channel select source as “HALF” and Switch as “SW1”. Now whenever the throttle goes below 10%, CH8 will go to 100%.  Cool, huh?

Safety Switches 9/12


Safety switches allow you to select a switch and have it write a value for a channel that will overwrite any other value.

For example – you might want to set a switch on the channel your electric esc is placed. That way you can work on your model and not worry that a chance programing error will spin up the propellor.

This does not make your radio fool proof!
You must be careful at all times.   Hopefully this can add another level of safety and reduce the risks associated with this hobby.

Templates 10/12


START AT THE BOTTOM !!!! Toggle your prefered channel order BEFORE you select the desired template.''

Channel order:

This will allow you to set the way the templates are written to the mixers.

RETA means RUD = 1, ELE = 2, THR = 3, AIL = 4.

AETR means AIL = 1, ELE = 2, THR =3, RUD = 4.

(and so forth). The templates are there to help you get started. When entering the screen you'll see a list of available templates. To choose a template, scroll down to it and press [MEU LONG]. This will add the template to the existing mixes.

At the bottom you'll see an option called “CLEAR MIXES [MENU]”. Pressing [MENU LONG] on this will clear all the mixes leaving you with a clean slate.

WARNING!!!! WARNING!!!! WARNING!!! selecting clear mixes menu on a live plane 
will make motor spin at %50 even though the throttle is all the way off.! 

The templates are:

  • Simple 4-CH: Plain vanilla 4-ch airplane.
  • T-Cut: This adds a throttle cut mix on your throttle channel.
  • V-Tail.
  • Elevon/Delta.
  • ECCPM; A generic ECCPM mix.
  • Heli Setup: This will clear your mixes and curves and setup a preliminary eCCPM heli.
  • Servo Test: This will setup a servo test output on CH15. To test your servos choose the mixer's source as CH15. It will cycle slowly between -100 and 100.


To be completed.... You have 2 screens for telemetry setup. They are 10/12 and 11/12.

Screenshot-23.png Screenshot-24.png


First on this screen is UsrProto, which stands for User protocol. You have 2 options, if you have a Frsky hub plugged into the receiver then set this to FrHub. If you have the How High from Winged Shadow plugged into the receiver then set this to WSHhi. The second option on this line is Imp or Met. For imperial or metric displays. Next down it says A1 channel. Just to the right it will say 0.0v. This is where you set the range of your input. The range is 3.3 times your divider ratio. The built in divider ratio in Frsky receivers is 4:1. So the range is 4*3.3 = 13.2. The number further to the right displays the channel voltage from the receiver scaled by your range value. So if you have your receiver plugged in you will get a value displayed here. This also allows you to calibrate the displayed voltage. Just connect a voltmeter so you know the battery voltage you are reading and adjust the range value so it matches. Next down are the alrm(alarm) settings. You have 2 for each channel. In the first column you can set Yel, Org, or Red. This simply means to have the Frsky module beep 1, 2, or 3 times when the alarm condition is true. Set to '---' to disable the alarm. To the right you have '<' this means less than. You could change it to '>' also. Finally in the third column you can set the alarm voltage. Set this to the threshold you want the alarm to go off at.

Global Vars 12/12


Model Delete

Guess.... This deletes the current model. You need to press [MENU LONG] for that to happen though.

You can not delete the current selected model (for evident reasons); the Delete option will not appear in the menu.

If you want to delete a model, first select and switch to another one (the '*' will appear in front of it), then delete the other one.

Further Information

Example Mixes

The best source of examples is the template library on

Download the examples and have a play with them using the superb eePe or companion9x software.

Forums Support

Using er9x is not difficult - one you master the basics.

If you would like to take your radio to the next level, we would strongly suggest you join the forum on:

The forum has a vibrant and friendly community that will be happy to help with pretty much any query you have.

Video Tutorials

A number of video tutorials have been put together to guide you through both simple and advanced er9x programming.

You access the videos from this page:

They are well worth watching!

Trim Use Description

Trims operation is always confusing. When you apply a trim, you are, sort of, moving your centre position. Yes, having trim at =-10 does leave you with a positive end at +90, but this IS +100 from your trimmed centre. If anything, it is the 'other' end that suffers as you only get movement from -10 to -100, a total of only 90.

There is also another consideration. "Commercial" radios often only provide about 75 to 80% of full servo movement from the stick, the other 20 to 25% is left for the trim. Try with the weight of the mix set to 80%. With no trim, you get -80 to +80. With full negative trim (-20), you get -100 to +60, the same range but centered at -20.

One question is what you want the trim for? If it is to trim the 'plane, then it is usually suggested that the mechanical linkage is adjusted so no trim is than needed. If you need the trim permanently, then the trim value required should be placed in the offset (sub-trim) field on the limits menu. This is calculated differently. This offset moves the centre position, but the stick range is maintained to the set limits. So if the offset is -10, the stick will still move to -100 (90 movement) and +100 (110 movement).

There is also an option in the model setup for 'auto limits'. This may be set to a value between 0 and 10.0. This causes the set limits to be adjusted by the sub-trim (offset in limits menu) up to the amount set. If you set auto limits to 5.0, then set the sub-trim to 4.0, a negative limit of -100 will adjust to -96 and a positive limit of +100 will adjust to +104. If the sub-trim is set to -7.5, the limits will adjust to -105 and +95, limited to a change of 5 due to the value set in auto limits.