An Open Source Frsky Telemetry Script for the Horus X10,X12 and Taranis X9D,X9E and QX7 radios

Hi @Pavan,
drawing a widget is not that hard, the biggest limiting factor, aside from user input, would probably be display performance and background telemetry processing rates, Horus display is slow.

If for any reason the telemetry processing would drop below around 40Hz one could potentially loose packets, right now at full screen with my script at max priority telemetry processing is at 42Hz.

Unfortunately I don’t own an Horus, for widgets I guees it would be a requirement to have a real radio for tuning and testing.
The current version has been developed on Companion and tested thanks to the great help of @Touchthebitum who tested every single version I sent him, even in the middle of the night :slight_smile:

Just out of curiosity on how many radios are you using it?
Has it proved to be stable enough for everyday use?

Cheers,

Alex

Hi, We currently are using on 3 of the radios. We have used it in short test flights as of now and is quite stable, all good. I will let you know if anything comes up :slight_smile:

Thanks

1 Like

I would like to thank Max Tubman from BFD Systems for the donation of an Horus X10 to this project. Very much appreciated.
It’s great to see that ArduPilot has some great partners!

Thanks for the support Max.

Alex.

6 Likes

That’s is indeed some great news @yaapu.

And this just shows that the ArduPilot ecosystem and community is alive and well, when some ArduPilot partners recognise the value of this open source movement.

Kudos to Max Tubman from BFD Systems for this kind gesture.

2 Likes

Your LUA scripting is pushing me towards purchasing one of these and I know I am not the only one…such a fantastic display.

@Marc_Dornan the lcd is fantastic but if you end up getting a Horus I won’t be responsible :slight_smile:

Marc, I purchased the new Horus x10 for that reason too. BTW the same color what Alex has.
Since I finally have the Alex LUA script working I will use that TX from now on for sure.
But for me personally the Taranis X9D+ feels better in my hands.

Fred. I have heard that said before – the Taranis feels better to hold.

Hi @yaapu,
Just started learning telemetry things basing on your work. And I see in your script calls to OpenTX sportTelemetryPop() function to get the telemetry frame.
But could you please explain who does the poll requests? Does the OpenTX polls telemetry by itself?
I mean that Ardupilot expects poll for the SENSOR_ID_28 in order to respond with a passthrough telemetry frame. But I didn’t fount any sportTelemetryPush() call in the script.

Hi @sergbokh, the rx polls the physical sensors, if a sensor is present responds to the polling by sending its data, ardupilot responds to polling for sensor 1B with frames in the 0x5000 range, OpenTX reads all serial data on the frsky bus and consumes all sensor values except those with sensor id 1B and 0x32 which are pushed into a queue that lua can access with sportTelemetryPop, sportTelemetryPush would be used to send from OpenTX to ardupilot if only ardupilot could listen :slight_smile:

Ok, thanks. That’s what I want to try to implement - to make an ability to control some settings via telemetry script.

why not join forces, do you have specific needs or are you thinking about a general protocol?

Nothing very specific at the moment just a common-purpose needs and ideas:

  • to tune on-the-fly failsafe related things: FS mode, battery capacity etc.
  • to tune PIDs
  • to tune navigation things: max vert and hor speeds for Loiter etc.
  • to trigger some ardupilot actions that currently are only could be binded to RC aux switch
    and so on

This will always require some “tinkering” on the ArduPilot side. Would be better to come up with a generic approach that would “link” to existing parsing, like sending Mavlink commands ?

Alex. I didn’t ask anyone to bring up this again :slight_smile:

@LuisVale, I’m a fan of generics too. But I don’t believe Frsky telemetry is suitable for sending native Mavlink stream. This will be very unreliable, I’m afraid. Also taking into account this link must be bidirectional. Please clarify if I understood you wrong.

We should implement in a way that it will not looks like tinkering :slight_smile:

  1. Existing AP_FrSky_Telem class to expose a raw stream of incoming data (i.e. from RC lua script)
  2. New FrSky_Interop class should be able to understand a base set of incoming frsky commands; like read/write [some knonw] settings etc.
  3. Every vehicle could directly use the FrSky_Interop class to achieve base functionality.
  4. Every vehicle could inherit FrSky_Interop class to implement a handling for an axtended vehicle-specific set of telemetry commands.

Amazing really, thanks for all the hard work!

One thing I don’t like about the X9D Plus is too many three-position switches on it. There’s some things I want to be just on/off like engine kill for gassers, belly hook drop, or throttle hold. There’s only the normal throttle hold two-position, which works fine. But the other one on the other side is momentary and I like to use that one for timer resets. So I pulled my Switch G out and replaced with two-position so I got at least one other decent two-position switch.

Frankly, I like my FlySky FS-i10 radio way better than the like the Taranis. It also has a better telemetry system than FrSky, and touch screen on it is more advanced than Horus. If I want to tinker with something then I mess with the FrSky stuff. When I want to fly I grab a real radio.

Chris,
I have never touched a FlySky radio but I have seen it close up in your demonstrations. You are right the Taranis and Horus are full of those 3-position switches.I do have a Horus x10 which is now for my Helis and 2 Planes. The Taranis is for my 2 drones only from now on. Both with OpenTX FW.
For to reset the timer I use the same switch as you.
For Throttle Hold I use a 3 position switch on the right hand side as I used to have it there previous with my Spektrum DX8(used for flight simulator now only).
Now with the 3 position switch I startup in the second position and view the startup of the Heli I want to fly. In about 4 seconds during the Heli spool-up I switch into the third position and the timer starts to count down with minute announcement and the last 10 seconds.
In the middle position the announcement of "takeoff’ is repeating until I have switched into position 3. For ‘stop’ which is also announced ones I flick it into pos. one, the Heli spools down. I like it very much and would not go back to a 2 position switch. It also gives me a chance if I am clumsy and flick the switch by mistake one position. Has not happened yet.
I call it the old man switch. It is in my case ( 69y) increased safety.

@ChrisOlson those are all easy fixes as long as you remember to change the type of switches on the firmware, and with the work that Alex @yaapu has done here is way better than the native RC telemetry stuff we get.

More news coming soon :slight_smile:

Finally had some time to try this out, it’s awesome, thank you Yaapu.

I’m not that familiar with the Horus yet, is there a way to start this automatically at startup or a less annoying way than going trough the sd-card folder structure?
From what i read in the wiki this is not possible: “Note: On the Horus the script needs to be started as a “one time script”, see the wiki on how to do it.”

I don’t think this can be set up to be a telem-screen.

Starting a special-function did not work (unless i did something wrong, which is likely) in “MDL” -> "special functions"
After i copied the yaapux.luac (or .lua) to sd/scripts/functions i could select it and assign it to a switch but it did not execute after toggeling it. (like this lua script example)

And the MDL -> “custom scripts” did nothing for me.

1 Like