You are on page 1of 13

Turnigy 9X Advance Mod

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 require
ments! Another great advantage of this transmitter is, there is large potential for you to do modifi
cations, to make it even more powerful.

I have done some very basic modifications in the previous post. In this post I will talk about some
of the research I have done on more advanced mods we can do on the 9X transmitter .

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 ei
ther 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 com
pared 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 con
nections, 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 direc
tory, 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.

USBASP Method
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.

FrSky Telemetry
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.

This tutorial is from Without RS232 Level Converter , you might also find this one useful With
RS232 Level Converter

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 trans
mitter BEFORE flashing it, when you connect to the TX (or even power it up) it will give a con
stant “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

Rerouting switches

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:

METHOD 1

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.
METHOD 2

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, other
wise 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.
Support This Website

Support Me: Patreon | Paypal Donate


To complete the mod, solder a 470 Ohm resistor to pin 2, then connect the 2 wires that go to pins Subscribe to our Mailing List
2 & 3 on the ATmega64 processor: Like us on Facebook
Join IntoFPV Forum
RSS Feed

FPV Drone Tutorials

Processor connections shown below will be completed during the programmer installation
process:

Recent Posts

FPV Acronyms and Technical Terms


Explained
FPV is full of acronyms which is confusing (even the
name …

Review: Moblite6 vs Moblite7 vs


Mobula6 – Which is the best?
The new Happymodel Moblite6 and Moblite7 are the
ultra-light versions of …

How to Build an FPV Drone From


Scratch (Analog FPV System)
I will show you how to build an FPV drone from …

Review: Diatone Mamba DJI F722 MK2


Flight Controller
Diatone Mamba DJI F22 MK2 FC, a bit of a mouthful,

Coupons and Good Deals on FPV


Products
Wanna save money for your next FPV product pur
chase? Here are …

Advertisement
Posted in DIY and Hacks Electronics and tagged 9x on 4th December 2013
, . 29 Replies

← Turnigy 9X Transmitter Modifications Frame Material: Carbon Fibre and Fibreglass →

29 thoughts on “ Turnigy 9X Advance Mod ”

Jeff Boyko
8th April 2021 at 5:03 am

Oscar..
Would you happen to have any Turnigy TGY 9x Open TX .hex files for this radio. I had version 2.2.1 from
207-12-26 (216-1).. but as a dummy.. i forgot to back it up. Now lost it…
i If you have any hidden in some
dark corner of you comp.. please let me know..

Take care.

Jeff Boyko

Reply ↓

Oscar Post author


8th April 2021 at 8:35 pm

Sorry don’t have i it.

Reply ↓

Commando
3rd January 2020 at 6:41 am

I was able to get this to work with a arduino nano by:

Using Arduino IDE 1.8.9


File — Examples —- Arduino ISP

Flash this to arduino nano

Then using eepee settings:


programmer: avrisp
mcu: m128
extra arguments: -b 19200

Reply ↓

whoim
29th December 2019 at 4:02 pm

Anybody have problem with turniga after frsky telem mod?


My t9x freeze random time at left long switch. Reboot for normalize need.

Reply ↓

aeropic
6th October 2019 at 3:17 pm

Hi Oscar,
Many thanks for all the information found here, It has been very precious.
I just want to share the solution I found to add a buzzer motor (haptic mod).
I did not want neither to over load the internal regulators, nor to add floating transistor…

The idea is to use a 12V to 1,5-3.3 V down converter, but one which is equipped with an ENABLE pin that
can be directly connected to the microcontroler. They are able to deliver up to 3A which is lore than
enough to drive those little motors directly connected to the output voltage between 1,5 and 3,3V to op
erate safely without any resistor.
I was afraid of potential coupling between the converter frequency and the Tx, but I see no difference at
all !

Setup is straightforward, and the result is an impressively strong vibration in your hands !

Here is a video explaining how to operate: youtu.be/_fC9Q3eNR6s

the bulk converter can be bought from ebay or elsewhere, just search for
‘Mini DC-DC 12-24V To 5V 3A Adjustable Step Down Power Buck Converter 3.3/5/9/12V’ and be ready to
pay 1€ ;-)

cheers !

Reply ↓

Giannis
20th August 2019 at 12:44 am
READ THIS FIRST if you are gonna do it with an arduino! I just got my Turnigy 9x back from the place of
bricked stuff… Please DO NOT FOLLOW this guide if you’re gonna do it with an arduino. I got this error
(protocol error, expect=0x14, resp=0x64) in the middle of the procedure and my 9x was bricked…

There is no reason to use this custom sketch… Download this version of Arduino IDE (Since using the lat
est 1.8.9 did not work even with the settings in the tutorial)
storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/arduino/arduino-0023.zip

Extract and run arduino.exe AS AN ADMINISTRATOR. Go to File–>Examples and select ArduinoISP.

Then just upload the code to your arduino(i used an original Uno model) and thats it…

No need to mess around with anything.. Like said, following this got my 9x bricked and had to trou i i

bleshoot for 3 hours to find the solution…

Reply ↓

ZAINUL
12th July 2018 at 8:21 pm

help me, tried to upgrade the 9x turnigy firmware, to open


i tx, using arduino uno, but failed, and now tx
is off, can it still on again

Reply ↓

Amit Verma
26th August 2018 at 5:37 pm

Please use a usbasp to program your 9x safest. feel free to ping if you need help.

Reply ↓

Daniel
19th May 2018 at 12:15 am

Please correct this manual!! The wring from atmega to the back PCB are WRONG:

Atmega64:
– PIN2 -> RX
– PIN3 -> TX
Back pins:
– PIN2 -> RX (DJT Module)
– PIN5 -> TX (DJT Module)
You are wiring PIN3 of atmega64 with PIN5 of back PCB, which is WRONG. Doing that way you are wiring
TX with TX, bad thing.

Summarizing, the correct wiring is:

– PIN2 (RX) Atmega64 -> PIN5 (TX) back PBC


– PIN3 (TX) Atmega64 -> PIN2 (RX) back PBC

Reply ↓

rafi
30th March 2018 at 6:27 am

I cant find #define SERIAL_BUFFER_SIZE in the hadwareserial.cpp .can you please help me out?

Reply ↓

Francesco
5th October 2017 at 9:39 am

Hi there, I have an XJT module and did everything step by step but didn’t manage to get telemetry work
ing. I cut the pins on the Pin 2 and Pin 5 of the transmitter board.

Receiver: RX-F8P (couldn’t find any specs other then here: banggood.com/RX-F8P-8CH-Bi-directional-
1km-Receiver-Compatible-With-Frsky-X9D-X12S-X7-DJT-p-1166272.html.
Flight controller: HGLRC F4 Flame (specs here: banggood.com/F4-FLAME-Race-Spec-STM32F405-Flight-
Control-Built-in-BETAFLIGHT-OSD-5V-BEC-PDB-Current-Sensor-p-1136917.html)
Remote: TH9x with 64 frsky er9x (er9x.com/er9x-frsky.hex)
Is there a tutorial on how to set up the receiver too maybe I’m missing something? Thanks!

Reply ↓

J Cooper
11th September 2017 at 9:41 pm

Many many many thanks! I spent hours and hours stuck on this. I have it working now.

Reply ↓

Yohan
17th August 2017 at 10:10 pm

Can you confirm that the pin 2 and 5 cutted on je module are not used by others rf modules

Like the orange tx module or original turnigy 9x because I use them time to time on my radio so I don’t
want the frsky telemetry mods crash my others modules
Thanks

Reply ↓

Ben Barr
18th September 2016 at 9:25 pm

Is this process the same with an XJT module ?… It seems that when using an Xjt with the smartiepats
9xtreme board only a wire from pin 5 on the module is required. Is it the same with this mod… ie just
one wire from pin5 … if so where do conect i it on the turnigy atmega chip.. ?pin 2 or pin 3

Reply ↓

Richard Witherspoon
27th June 2015 at 9:08 pm

Hello using the Internet for advice is relatively new to me.Also the correct name for the parts I talk about
may be a little out.Please bare this in mind.I have a Turnigy 9x for my RC Tanks.The thing is the right
stick has been modified so it centres itself up/down.I would like to buy a second Turnigy controller
9x.But was told when I bought my first one it had been modified to do this.It came with a little bag with a

screw & & a steel strip that I was told had been removed to make this right stick centre itself.Can some
one please give me guidance on what’s involved in doing this process if I buy another controller?Your
help would be appreciated.Regards Richard

Reply ↓

6th June 2015 at 11:12 pm

A note for others using an Arduino. Without a modification to the linked sketch, you will be unable to
read the EEPROM. Reading and writing to Flash will work fine.

Here’s the relevant excerpt from another blog (theboredengineers.com/2013/01/flashing-a-turnigy-9x-


with-an-arduino/):

“Because of the ATMEGA64 EEPROM address managment, you have to make 2 modifications when :

reading the EEPROM and writing the EEPROM : the code looks like it :

uint8_t write_eeprom(int length) {

// here is a word address, get the byte address


int start = here * 2;

and

char eeprom_read_page(int length) {

// here again we have a word address


int start = here * 2;

You have to delete the “*2″ since the address is already a byte in the ATMEGA64.”

Good luck everyone.

Reply ↓
Ben R
24th April 2015 at 12:02 pm

Hi I am a little confused. Probably from reading too many tutorials. If I follow only what you have de
scribed here, will my telemetry work? Or do I need to go to one of those links for further modifications?

Thanks, Ben

Reply ↓

Mark
24th July 2016 at 10:16 pm

Same question. Flashing er9x was easy (if you find the correct driver von win10). But the
Telemetry Mod doesn´t work for me. I´m not sure, if you have to mod your DJT FrSky Module?!(
There so many different Tutorials in the web)

Reply ↓

Gearymeister
29th October 2014 at 9:54 am

Do you have a link to how to do this on the 9xr? Fantastic post but as far as I know the 9xr uses a differ
ent chip.

Would really appreciate your help as I can’t find what I’m looking for.

Thanks

Reply ↓

Oscar Post author


29th October 2014 at 10:01 am

Not really sorry!


I have not used the 9XR because I have been hearing bad reviews about it.

It’s just one of those things that once it works, you don’t want to lok at another one. :D

Reply ↓

Jason
22nd October 2014 at 1:39 am

Very well presented tutorial, much appreciated. I just finished flashing my 9x with ER9x using the
Arduino method you described, with no issues at all. One minor detail I wasn’t clear on was whether I

needed to have my 9x powered on or off for firmware flashing, but I found the answer elsewhere and
thought I’d mention it case your readers also wondering the same. Be sure to power OFF your transmit
ter and unplug the battery before you flash the firmware (power is supplied from the Arduino/USBasp).

Thanks,
-Jason

Reply ↓

Oscar Post author


24th October 2014 at 12:56 am

Thank you Jason for pointing that out! :D

Reply ↓

lavith
23rd September 2014 at 2:44 am

Are those pin header 10,11,12,13 the same for all Arduino Nano, Uno and Mega 2560 board?

Reply ↓
John
25th August 2014 at 4:46 am

Hi, Thanks for a really clear, well labelled description. I am a little confused after looking at this and sev
eral others. The telemetry mods and the firmware flashing mods all seem to use the same MOSI and
MISO pins near the cpu. Your mod does not seem to make any reference to a firmware flashing mod yet,
obviously, one is required.

How do the two hw mods interact? Do you need to make one, flash, undo it, make this one? Do they co
exist somehow?

Reply ↓

Oscar Post author


26th August 2014 at 10:03 am

Hi, The Frsky Telemetry mod, requires er9x firmware, which means you need to do the firmware
flashing mod first.

Reply ↓

Maurício
24th August 2014 at 2:03 am

Hi, congratulations for the excellent post.


i have a doubt.
I´v been reserching for this mod for a wile and all the other tutorials make a mod on the frsky module. is

it necessary with the mod that you have posted?


if it´s necessary, what should do with i a DJT module?

Thanks

Maurício

Reply ↓

Tom De Bie
4th March 2014 at 11:22 am

Nice how-to you made here! :)

On the Mega the ISP pins are different though.


MISO –> 50
MOSI –> 51
SCK –> 52
RST –> 53

Or is it countered by your Arduino ISP sketch?

With kind regards,

Tom

Reply ↓

Oscar
5th March 2014 at 11:30 am

Hi, the pins are defined in the ISP sketch. I am not sure if these pins are required by hardware
constrains, or you can choose whatever pin you want.

Reply ↓

VictorK
1st April 2016 at 8:43 am

Hi,

Change the code to:

#define SCK 52
#define MISO 50
#define MOSI 51
#define RESET 53

Leave a Reply

Your email address will not be published. Required fields are marked *

Comment

Name *

Email *

Sign me up for the newsletter!

For prompt technical support, please use our forum IntoFPV.com . I check blog comments weekly.

Oscar Liang © 2013-2021

You might also like