Wednesday, January 30, 2013

FrSky DHT DIY 9x Mod with ER9x Integrated Telemtry

In one of my latest HK orders I got one of the FrSky DHT 8ch DIY Telemetry TX Modules. I'm definitely a DIY person and that's why i didn't get the 50$ module that fits in the JR style Turnigy 9x.
I needed:
-Single Core wire: for example: IDE ribbon cable.
-Solder stuff.
-9x with a programming header
-ER9x-FrSky firmware
-Basic hand tools

9x Mods

Ill start with the Turnigy 9x part of the mod. We need to move two aux switches to extra digital pins so that the original pins can be used for UART communication with the FrSky Module. Cut the traces, and solder on the two wires for RX and TX.

Open up the case.

Disconnect the cable between the two halves. Wiggle and pull gently.

An un-modded Turnigy 9x will look just like this.

I had already modded mine with the programming port, so mine looks like this. Except, it is slathered in hot glue to protect the programming wires from popping off. At that point i didn't expect to do another mod, so i didn't even think about how it would affect later things. That hot glue causes a lot of problems  here, so i recommend to do all mods at once or don't use hot glue. I had to carefully pick off the glue.

Cut the traces on the PCB where shown by the yellow marks. Use a sharp Xacto and be sure not to press so hard that you loose control and cut another trace. Check it with the continuity function of a multimeter.

Use the Thin piece of wire (seen in pic) to connect the blue marked spot to the blue pin on the top side of the atmega64. Same for red. Use a bit of flux and be sure to not bridge anything. Check for no continuity again.

This image shows what we are doing next, and also is a brief overview of what we just did. The GND, VCC, MOSI, MISO, SCK, and RST bubbles need to be connected to a programming header so that we can program the ER9X-Frsky firmware. Then there are the two bubbles that have two labels: RX0/MOSI and TX0/MISO. These two pins double as the TX and RX from the FrSky telemetry module and for programming now that the AIL and THR switches are on other pins. Thanks to Marc G at for this image: original post.

This is looking into a female 6 and 10 pin isp connector. Simply connect all of the pads on the board to their respective pins on the connector. Then take two more pieces of wire and solder them to the MISO and MOSI pads so that they can go to the FrSky module.

My Results

As i mentioned before, i had issues with hot glue. This is what i ended up with (working!). In the first test i realized that the THR and AIL switches were mixed, so rather than re-soldering to the atmega use IDEcable wire), i just cut the wires before and swapped: green to brown and vice versa. The next screw up is the resistor wrapped in tape. I couldn't get a wire connected to the SMD resistor right next to the TX0/MISO pad, so i put in a through-hole resistor. The caps at the top left are to replace the 22uf one that blew when i plugged the battery in with opposite polarity: i was lucky that i didn't blow anything else! As you can see this mod isnt without risk, but now i could nearly do it in my sleep (so to say)!

FrSky Module Mods

In this part we will open the FrSky module and grab the TTL level TX and RX to connect with the 9x. The FrSky module converts the 3.3v TTL to RS232 as it has better quality but this outdoes matter for the distance from the FRSky module to the atmega.. We don't need RS232 since were going to the atmega and dont want to spend 50$ for their telemetry JR module. This mod involves cutting a few traces, and soldering some wires and resistors. The important thing to remember here is that the FrSky module runs at 3.3v so we might need to do a little protection between it and the atmega 5v (like the 3.3v bluetooth module).

The bag from HK 

The top one is the included 2db antenna. below it is a 5db antenna that I've had laying around. This is a a pretty important topic. The higher the "db" of an antenna, the higher signal power, but this comes at a sacrifice. More power means less unidirectional distribution of that power. If you have a high gain antenna  you risk loosing control of your model because of this narrower range of power, if you don't use these antennas properly. To deal with this people have made antenna trackers. Basically, these have super high gain antennas that are pointed to the model at all times using GPS, so no matter what, it will have good signal.

Here is the binding PCB with an LED and a momentary switch.

the SMA connector with the 2db antenna. NOTE: NEVER EVER turn on the TX without an antenna as you risk frying the transmitter module. It's sorta like a LED with 5v: you must have the resistance, or it will fry because of too much current.

The RX mode toggle.

TTL Level FrSky Module Output

Cut open the case (Careful!). It's some sort of thin, hard plastic shell. Rips pretty well.

Cut traces marked by yellow

and here

Scratch off the light green protective layer over the TX and RX lines so we can solder onto them. 

TX/RX pins on the FrSky module.
Solder a wire from TX (next to the MCU) to the TX on the pin header (red line).

You have two choices to connect the RX line:
1. The atmega RX can take these 3.3v levels from the FrSky TX. The RX of the FrSky will need the resistors as a 3.3v MCU isn't compatible with 5v on the serial port. Put a 20k resistor from the FrSky RX pad to GND and a 10k from the RX pad to RX on the pin header. (Safer)

2. These STM MCUs (processors) are 5v tolerant. That means you can hook the STM RX pad directly to the RX on the pin header. Just be careful with the wiring. This is shown in the first picture above. (i did this; no issues) 

Now connect FrSky pinheader TX to RX (MOSI) of the atmega, and FrSky pinheader RX to atmega TX (MISO)

Connecting to the 9x

Power, Ground and PPM connect to pads I have pointed out on the top of the main board. Some people unscrew the main board and solder to the bottom of the connector (the one just to the right of all the labeled wires) that goes to the other half of the TX. That doesn't make sense as these front side solder pads are so much easier to get to.

Frsky wire : 9x Connection
Black        : Ground
Red          : +12v
Yellow:      : PPM
Ignore the wires. This pic was from a different mod, but gave me what i needed for the markings.


Mount these some where on the outside of the case so you can change modes quickly. the toggle is for changing between 1-way (a regular RX), 2-way (receive telemetry from the RX to your TX), and the FW setting fro uploading new FW to the FrSky module. The button and LED are for binding.

I'd recommend putting the toggle somewhere else. Mine got in the way of the antenna a bit and required some extra work.

You're Done! 

Enjoy longer range, signal strength, telemetry, and that feeling of accomplishment. Look in the manual you received with the FrSky DIY module for binding instructions.
The final insides. I used tape because the original plastic cover was ruined (you wont see it anyways :D).


Big thanks to Zen09 from RCG for the FrSky TX/RX pictures and rchacker for it's picture and info!


  1. Hi there. I followed your instructions, and I have a few questions...
    1) is your frsky module still doing fine / working without any issues even though youre running the STM MCU Rx port @ 5V? I did it this way, and it seems to work, but I'm worried about frying the chip in the long-run, or having problems due to fluctuations in the input voltage coming from the atmega (i.e. it goes over 5.5V or whatever the abs max for the STM IS)...

    2) can you please explain the purpose/theory behind adding the 10k & 20k resistors? Just trying to understand how this would work...

    3) the er9x docs state something about having to calibrate the telemetry values for voltage using a multiplier of 3.3...might be way off, but does this have anything to do with the er9x firmware expecting 3.3V coming from the telemetry module and/or the fact that most of the frsky telemtry mods require regulating the voltage? Or, is this totally irrelevant?

  2. 1) yes, its still working perfect.
    2) the 10 and 20k resistors is a simple way to do 5v -> 3v conversion for serial stuff. i found it when i was working on my 3.3v BT module. how it works exactly, i dont know.
    3)i never got my telemetry to work for some reason. im assuming that i fired the ports somehow, so i dont know exactly. But i do know that all sensor inputs have to be 3.3v for the FRSKY RX telemetry inputs. id just use a voltage divider to get 3.3v but dont trust me on that.