As I was planning to build my first quadcopter and enter the world of RC, one of the components I was looking for was the transmitter. I wanted something fairly cheap, full featured so that it can control any RC planes or vehicles, and easy to use. The Turnigy 9x meets all of these requirements! Another great advantage of this transmitter is, there is large potential for you to do modifications, to make it even more powerful.
Basic and Cheap Modifications (last post)
- Lipo Replacement battery
- Install LCD backlight
- Speaker Mod
- FrSky 2.4GHz module
Advanced Modifications (this post)
- Programming Header Socket
- Flash ER9X Firmware
- Use ER9X Firmware Telemetry
- MCU control of LCD light.
Programming Header Socket for Firmware Flashing
By flashing the er9X firmware it solves most of the firmware problems people have! You can either use the Arduino or USBASP programmer depends on what you have.
To get ready for the er9X firmware flashing, we need to solder the header socket first. Firmware flashing can change the firmware of the TX (by using a USBASP programmer or an Arduino etc), so you can use extra functionality. I will discuss the advantage of having the er9X firmware compared to the original firmware that comes with the stock 9X in the next post.
The picture above shows all the connections I needed. The soldered pad to the immediate right of the label is the one being described. I took a 10pin header cable, split it for each of the connections, stripped off a bit of casing and then soldered them onto the pads.I then labeled each wire on the other end of the cable.
Finally, I cut a rectangle in the battery box so that I could put a 10-pin ISP header inside. First I hot glued the header in place. Then, I soldered each each wire to it according the picture below for easy programming.
Flashing The ER9x Firmware
Arduino ISP Method
You will need
- Arduino board. either one of these should work
Arduino Nano, Arduino Uno, Arduino Mega 2560
- Some female and male header cables to connect the transmitter and Arduino.
How to Flash it
- Connection between Arduino and Transmitter
Arduino - TX 10 - RST 11 - MOSI 12 - MISO 13 - SCK 5v - 5v Gnd - Gnd
- change the serial buffer of the Arduino because the Arduino can’t keep up with the data (er9x firmware) being sent to it over serial on default settings. To do this, find the arduino install directory, and go to: arduino-x.x/hardware/arduino/cores/arduino and opened HardwareSerial.cpp in a text editor. search for #define SERIAL_BUFFER_SIZE and change its value from 64 to 128.
- The current Arduino ISP sketch can’t handle the large amount of EEPROM that the ER9x firmware uses (the stock firmware does too), so try to upload this sketch instead: Arduino ISP Code
- download the ER9x programming software from here. Open it, you will be prompted to download the latest ER9X firmware.
- go to burn->configure in the eepe software and selected the avrisp programmer, m64 mcu, the port the arduino is connected to, and -b 19200 in the extra arguments box.
- back up the firmware, memory and EEPROM using the options in the burn menu of the stock firmware in case something went wrong with the ER9x firmware.
- finally go to burn->Flash Firmware to TX and select the firmware, should be ready in 1 to 2 mins.
- connect the USBASP to the transmitter and Install the driver on the computer.
- Then open the eepee software and you will be asked to download and save the ER9x firmware.
- go to burn->Flash Firmware to TX and wait.
This mod adds the ability to display FrSky telemetry values on the 9x transmitter when using the er9X firmware.
THIS IS NOT A SIMPLE MOD! It involves cutting circuit board traces and soldering very tiny wires directly onto very tiny processor pins. If you’re not experienced with circuit boards or don’t have a SMALL tipped soldering iron, look at the 9x TelemetrEZ board instead and save yourself a lot of trouble.
The mod itself has 2 steps:
- Reroute 2 switches to different pins on the processor
- Connect the telemetry data circuits from the module into the 9x. There are several methods to achieve this. This method utilizes 2 unused pins on the module connector to transmit telemetry data to the 9x transmitter, which still allows the use of other modules. Note that the 2 pins used will have to be isolated in any other modules used to be safe.
NOTE: When doing the Telemetry Mod, keep in mind that if you do the mod on a stock 9x transmitter BEFORE flashing it, when you connect to the TX (or even power it up) it will give a constant “Switch Error!” alarm. DON’T PANIC! The OEM firmware expects a “closed” circuit on each switch during POST, and will trigger that alarm BECAUSE we’ve cut the traces to pin 41 & 42. The er9x/open9x Telemetry version firmware resolves this issue.
Required for this mod:
- 2 x 200 (or 220) ohm resistors
- 470 Ohm resistor
- 150mm / 6″ thin (30-32 AWG) wire, preferably in different colors
- A small plug can be helpful to disconnect the telemetry connections, like a 2 position micro JST.
- Thin heat shrink tubing to cover solder joints
- A SMALL tip for your soldering iron, e.g. 1/32″ (0.8mm) or even smaller
The first part of this mod frees up the RXD and TXD special-purpose pins (2 & 3) on the ATmega64 processor that are used for simple switch inputs from the Throttle Cut & Aileron Dual-Rate switches. The switches are moved to pins 41 (PC6) & 42 (PC7).
There are 2 methods of doing this:
This method involves removing 2 SMD resistors then connecting this area to pins 41 & 42 on the ATmega64 processor via 2 x 220 Ohm resistors.
We start by removing 2 SMD resistors as shown:
Next connect pins 41 & 42 to where the SMD resistors were removed via 220 Ohm resistors. Use really fine single strand wire, for example the 36AWG teflon coated wire HobbyKing sells, or fine PVC insulated wire. The pins on the ATmega64 are delicate! Tin the wire & the pin, hold the wire on the pin, then touch a fine point soldering iron onto the joint. Don’t pull up on the wire, rather pull gently in the direction of the pin to test the joint. This is also a good time to connect the wire for the haptic mod to pin 43:
Locate the soldering points for the wires where the SMD resistors were removed:
- Hot glue 2 x 220 Ohm resistors to the main PCB and connect one side to the wires soldered to pins 41 & 42.
- Connect the other side of the resistor to where the SMD resistors were removed as identified above. Note which SMD resistor location connects to which pin.
The second method retains the 2 SMD resistors that are removed in method 1, but instead 2 traces have to be cut.
These traces are pretty small, so a steady hand and good eye will be required! Use a #11 Blade hobby knife and a good magnifier. One hard cut with the blade tip then one more with the back side of the tip makes a good cut and separation of pad and trace. With a sharp tipped iron pre tin the SMD resistor solder point, using leaded solder, since it melts at a lower temp.
Use really fine single strand wire, for example the 36AWG teflon coated wire HobbyKing sells to connect the ends of the SMD resistors directly (without the 220 Ohm resistors) to the processor pins 41 & 42 as shown in method 1. Pre tin the wire and do a fast on and off solder joint. Too much heat and the resistor may be damaged or fall off, which will also happen with too large a tip or too high heat. The pre tinning should make it fast and easy.
Use a multimeter to ensure the SMD resistor is still disconnected from the pads when done.
Connecting the FrSky module
Now we get to the first step of the second part of this mod.
As we are using the unused pins 2 & 5 on the module connector to send telemetry information to & from the FrSky module, these pins must be isolated. Remove the rear PCB from the rear half of the transmitter by taking out the 4 screws shown by the red arrows:
Locate pin 2 on the painted side of the rear PCB. You may have to scratch some of the paint away to see the traces, then cut the traces on both sides of the pin:
Before replacing the rear PCB, note that on the latest 9x transmitters, there is a lip around the pins in the module bay, now would be a good time to remove this with a Dremel or similar, otherwise the FrSky DJT module wont fit. Replace the rear PCB when done.
On the other side of the rear PCB, also cut the traces on both sides of pin 2 and on one side of pin 5 as shown. It’s always a good idea to check the pins with a multimeter to ensure the traces have been fully cut.
To complete the mod, solder a 470 Ohm resistor to pin 2, then connect the 2 wires that go to pins 2 & 3 on the ATmega64 processor:
Processor connections shown below will be completed during the programmer installation process: