Ultimate LRS telemetry on FlySky 9x

Introduction

Now you can fly without tablet, smartphone or laptop, just by displaying the telemetry on your 9x LCD screen !

Thanks to rcgroups user Fardenco who provided all the details in the ULRS thread here.

Description

From his words :

I just finished moding my OrangeRX 1W TX module

First, I wanted to be able to receive the telemetry datas and display it on the screen of my FlySky 9X.
I also wanted to be able to talk with my plane using MavLink protocol through the ulrs system with my ground station software.
Then, I wanted to also have the possibility of doing this via Bluetooth (with the Tower app on Android)
Finaly, I wanted full 1W power.

I did already mod my 9x to be able to display FrSky telemetry (hardware mod + er9x installation)
I could have placed a MavLink to FrSky adapter on my plane, but that would prevent me from talking to the plane with my ground station software.
So what I did is I placed the translator between the tx pin of my receiver and the “rf” pin on the back of the module (which is the pin used by the 9x for receiving telemetry datas after the telemetry mod)
It took me some time to figure out a few things that were preventing this from working, but with some help (mainly Mike, er9x developper), I managed to get it working.
First, the FrSky telemetry link is not just acting as a passthrough. If we’re not passing our datas through a FrSky link, then the protocol we need to select in er9x is not FrSky. instead, we need to select HbRaw.
Then, the signal comming out of the translator is inverted, because it’s how it needs to be when the translator is on the aircraft side. But we don’t want this so we need to find a way to reverse back the signal. It could be done with hardware, but the software I used did provide an easy way of doing it. All I needed to do is to change a setting in the program.
I used Mike’s translator : https://github.com/MikeBland/APM_Mavlink_to_FrSky
To reverse back the signal, we just need to uncomment this line in Aserial.h : “#define NON_INVERTED_HUB_SERIAL 1”
And that’s it, we’re now able to receive telemetry datas and show them on the screen !

For the Bluetooth, I just used a female header, rx of the bluetooth module is directly connected to tx of the orangeRx, but tx is connected to rx through a resistor. I did set the bluetooth module’s baud rate to 57600.

To achieve (nearly) full power, I used a 5V buck converter to avoid heat.

I managed to pack everything in the original box, except for the bluetooth module. It has to be outside, there’s no more room to fit it inside.
So I made this to be able to plug it only when I want.
It’s also impossible to plug it in the wrong way because of the antenna.