This is the home of the Yaapu Telemetry Script project, a LUA telemetry script for the Frsky Horus and Taranis radios using the ArduPilot frsky passthru telemetry protocol.
Note: the latest pre-release versions are downloadable from the releases section
The supported radios are:
- Taranis X9D(+) and QX7 on OpenTX 2.2.2/2.2.3
- X-Lite on OpenTX 2.2.2/2.2.3 (by using the QX7 version)
- Horus X10(S) and X12 on OpenTX 2.2.2/2.2.3
- Jumper T16 on JumperTX 2.2.3 (by using the Horus version)
Here you'll find
- a Telemetry script for the Taranis radios: X9D,QX7 and X-Lite (changelog)
- a Widget for the Frsky Horus radios: X10/S and X12 and for Jumper T16 (changelog)
both support all of the telemetry DIY 0x5000 packets sent by ardupilot’s frsky passthrough protocol library
The script is also compatible with the excellent MavlinkToPassthru converter firmware by Eric Stockenstrom
Requires OpenTX 2.2.x and a recent release of ArduPilot.
- display layout
- features
- advanced features
- extra screen with up to 6 frsky sensors
- mavlinkToPassthru firmware support
- sensor discovery
- supported flight modes
- voltage sources
- supported battery configurations
- cell count detection
- airspeed vs groundspeed
- alerts
- telemetry reset
- configuration
- ardupilot configuration
- installation on Taranis
- installation on Horus
- sound files customization
- compilation
- hardware requirements
- support and troubleshooting
- credits
- donation
dual battery view
mavlink message history
- configuration menu, long press [MENU] on Taranis or [MDL] on Horus (in Widget mode refer to this guide)
- per model configuration saved in MODELS/yaapu/modelname.cfg on Taranis, SCRIPTS/YAAPU/CFG/modelname.cfg on Horus
- imperial and metric units for altitude and distance inherited from radio settings
- horizontal and vertical speed units selectable from script config menu
- flight modes based on frame type:copter,plane or rover with vocal sound support
- artificial horizon with roll,pitch and yaw with numeric compass heading
- vertical variometer gauge on left side of center panel
- rangefinder with max range support in config menu
- mini home icon on yaw compass at home angle position
- battery voltage from 3 sources, short pressing [ENTER]/[ENCODER] cycles between the sources
- frsky FLVSS voltage sensor if available (vs is displayed next to voltage)
- flight controller via telemetry (fc is displayed next to voltage)
- frsky analog port if available (a2 is displayed next to voltage)
- battery lowest cell if available or cell average if not
- battery current
- battery capacity and battery capacity used in mAh and % with vocal alerts for 90,80,70,60,50,40,30,25,20,15,10,4 levels
- efficiency as battery current/speed, value in mAh
- vertical speed on left side of HUD
- "synthetic vertical speed" calculated from altitude variations (no vspeed is sent by the autopilot in DCM mode)
- altitude on right side of HUD
- gps altitude
- gps fix extendend status (2D,3D,DGPS,RTK)
- gps HDop
- satellite count (Note: the highest reported count is 15 sats due to telemetry library restrictions)
- flight time (uses OpenTX timer 3) with vocal time alerts and spoken flight time
- rssi value
- transmitter voltage
- home distance
- horizontal ground speed or airspeed (available if configured in mission planner)
- home heading as rotating triangle
- mavlink messages with history accessible with [PLUS]/[MINUS] or by turning the [ENCODER] buttons (in Widget mode follow this guide)
- english, italian, french and german sound files for selected events: battery levels, failsafe, flightmodes, alerts and landing
- lcd panel backlight control for the Horus radios, see this
- full telemetry reset on timer 3 reset, see this
- PX4 flight modes support when used with a Teensy running the mavlinkToPassthru firmware
- vocal playback for a subset of mavlink status messages
- up to 6 frsky sensors can be displayed on screen
- dual battery support (dual FLVSS and/or dual battery from ArduPilot) short press [ENTER] on Taranis or [ENCODER] on Horus to display second battery info. If a second battery is detected there will be a "B1+B2" label on screen (in Widget mode follow this guide)
- capacity ovveride for battery 1 and 2
- tracking of min/max values for battery/cell voltage, current, altitude, ground and vertical speed, short press [MENU] on Taranis or [SYS] on Horus to display them, an up pointing arrow will indicate max values whereas a down pointing arrow will indicate min values (in Widget mode follow this guide)
- vocal alerts for battery levels,
- vocal fence: max distance and min/max altitude alerts
- configurable vocal timer alert every n minutes
- sensors VFAS,CURR,Alt,VSpd,GAlt,Hdg,GSpd,Fuel,IMUt,ARM are exposed to OpenTX, see the wiki for details.
Version 1.8.0 and above introduce an extra screen reachable by pressing [ENTER] from the status message history. This screen adds support for up to 6 user selected frsky sensors to be displayed on screen.
More info on setting them up is in the wiki.
- guide for taranis radios
Version 1.8.0 and above natively support Eric Stockenstrom's MavlinkToPassthru converter firmware Plus version.
By using Eric's Plus version the script can display
- waypoint number, bearing and distance
- airspeed info
- throttle %
To enable this feature please select it from the script config menu by choosing "m2f" as left panel option.
# | flight mode | sound support |
---|---|---|
1 | Stabilize | YES |
2 | Acro | YES |
3 | AltHold | YES |
4 | Auto | YES |
5 | Guided | YES |
6 | Loiter | YES |
7 | RTL | YES |
8 | Circle | YES |
10 | Land | YES |
12 | Drift | YES |
14 | Sport | YES |
15 | Flip | YES |
16 | AutoTune | YES |
17 | PosHold | YES |
18 | Brake | YES |
19 | Throw | YES |
20 | AvoidADSB | YES |
21 | GuidedNOGPS | YES |
22 | SmartRTL | YES |
23 | FlowHold | YES |
24 | Follow | YES |
25 | ZigZag | YES |
# | flight mode | sound support |
---|---|---|
1 | Manual | YES |
2 | Circle | YES |
3 | Stabilize | YES |
4 | Training | YES |
5 | Acro | YES |
6 | FlyByWireA | YES |
7 | FlyByWireB | YES |
8 | Cruise | YES |
9 | Autotune | YES |
11 | Auto | YES |
12 | RTL | YES |
13 | Loiter | YES |
15 | AvoidADSB | YES |
16 | Guided | YES |
17 | Initializing | YES |
18 | QStabilize | YES |
19 | QHover | YES |
20 | QLoiter | YES |
21 | Qland | YES |
22 | QRTL | YES |
23 | QAutotune | YES |
# | flight mode | sound support |
---|---|---|
1 | Manual | YES |
2 | Acro | YES |
4 | Steering | YES |
5 | Hold | YES |
6 | Loiter | YES |
7 | Follow | YES |
8 | Simple | YES |
11 | Auto | YES |
12 | RTL | YES |
13 | SmartRTL | YES |
16 | Guided | YES |
17 | Initializing | YES |
Battery voltage is tracked independentely for 3 battery sources: FLVSS, analog port A2 and flight controller. (The script can use the A2 analog voltage source from X4R and X6R receivers, a2 would be displayed next to cell voltage). In single battery mode a short press of [ENTER] on Taranis or [ENCODER] on Horus cycles between all the sources. Min value is also tracked for the 3 sources and can be shown with a [MENU] short press on Taranis or [SYS] on the Horus.
Note:If you use a second FLVSS voltage sensor the OpenTX variable has to be renamed to "Cel2"
When a second battery is detected the script also tracks "aggregate" battery values and shows a "B1+B2" label in the right panel. Cell value and battery voltage is the "minimum" between the two batteries, current is summed and capacity percent is averaged. A short press of [MENU] on Taranis or [ENCODER] on the Horus will show min/max values for this aggregate view.
In dual battery mode a short press of [ENTER] on the Taranis or [ENCODER] on the Horus switches from single aggregate view to individual dual battery view. Subsequent short presses of [ENTER]/[ENCODER] in this dual view will cycle between voltage sources. In dual view a short press of [MENU] on Taranis or [SYS] on Horus shows individual packs min/max values.
To get back to aggregate view and retain the selected voltage source short press [EXIT] on Taranis or [RTN] on Horus.
Note:In widget mode voltage source cycling is not available, the voltage source has to be selected from the menu
The frsky passthrough telemetry library can send on the radio link only 1 speed value. Where it picks that speed value depends on arduplane configuration.
-
ARSPD_TYPE > 0 : an airspeed sensor has been enabled in arduplane. The telemetry library will try to use airspeed even if the sensor is unhealthy, if it’s unhealty the reported speed will be 0, with a healthy airspeed sensor the reported speed will be actual airspeed.
-
ARSPD_TYPE = 0 : no airspeed sensor defined in arduplane. The telemetry library will always send groundspeed (gps)
To recap: the script has no control and simply displays what arduplane is sending based on airspeed sensor configuration.
There are 2 battery level alerts, both are set as cell voltage so independent from cell count. Battery level 1 should be set higher than battery level 2.
When cell voltage falls below level 1 it will trigger a vocal alert and the V next to the cell voltage will start blinking: once triggered blinking will persist even if the voltage raises above level 1.
When cell voltage falls below battery level 2 it will trigger a second vocal alert and the cell voltage digits will start blinking: once triggered blinking will persist even if the voltage raises above level 2.
If the battery reaches the failsafe level (it must be configured in mission planner) the script will display "batt failsafe" on the hud and play a vocal alert every n seconds (period can be configured from the menu).
It's also possible to configure a timer that will trigger a vocal alert every n minutes of flight time.
The script also support a "vocal fence" feature by setting a minimun altitude, a maximum altitude and a maximum distance alert. When the vehicle moves outside of the fence the script will play a vocal alert every n seconds.
Note: (applies to versions 1.7.1 and above) The battery monitoring engine has been modified to allow the voltage to drop below level for up to 4 seconds before triggering the alert. During this period the voltage background will flash to indicate that the alarm is about to fire, if during this "grace" period the voltage raises above level the alarm is reset.
It's possible to do a full script reset by resetting timer 3.
For the reset to occur 2 conditions must be met
- flight time is greater than 00:00
- vehicle is not armed
Complete menu options list:
- voice language: english, italian, french and german
- battery alert level 1, default is 3.75V
- battery alert level 2, default is 3.5V
- capacity override for battery 1
- capacity override for battery 2
- disable all sounds
- disable msg beep: disable sound on incoming message
- disable msg blink: disable text blink on incoming message
- default voltage source: disable autodetection and force either FLVSS,A2 or ArduPilot as battery voltage source
- timer alert every: play a vocal timer alert and speak flight time at configured intervals
- min altitude alert: minimum altitude vocal fence
- max altitude alert: maximum altitude vocal fence
- max distance alert: maximum distance vocal fence
- repeat alerts every: alert period in seconds
- cell count override: disable cell count detection and override it manually
- rangefinder max: enable rangefinder and enter maximum rangefinder distance
- enable synthetic vspeed: ignore telemetry vertical speed and calculate it from atitude variations
- ground/airspeed unit: select either m/s, km/h, mph, kn
- vertical speed unit: select either m/s, ft/s, ft/min
The language of the vocal alerts is independent from the radio language and can be configured from the menu. Right now only english, italian and french are supported but new languages can be added with ease.
Battery capacity for battery 1 and battery 2 is automatically read from the values configured in mission planner but can both be overidden from the menu. When a new capacity is defined from the menu it will immediately be used in all calculations and it's value will be displayed on screen.
The two main wiring configurations are
The flight controller is configured to send native frsky passthrough telemetry data either with an inverting cable or without (pixracer). To enable this feature the SERIALn_PROTOCOL of the uart connected to the receiver has to be set to 10, check the ardupilot wiki for details.
This configuration requires a "special" cable that acts as logic level converter and inverter, an example of such a cable is here
For the pixracer an inverting cable is not needed but the wiring requires that the TX and RX pin of the frs port be connected together, check this image for further details.
The flight controller is configured to send mavlink messages and an external board (Teensy, Blue Pill,etc) is used to convert mavlink to frsky using Eric Stockenstrom MavlinkToPassthru firmware.
This is the default configuration for long range systems (Dragonlink, TBS Crossfire, ULRS to name a few) unable to carry native frsky telemetry but compatible with mavlink.
Please check the wiki for more info
Copy the contents of the SD folder to your radio SD Card. Make sure you have the /SOUNDS/yaapu0, SCRIPTS/YAAPU/CFG, SCRIPTS/YAAPU/LIB, SCRIPTS/YAAPU/IMAGES and WIDGETS/Yaapu folders.
Power cycle the radio to clear widget caches!
The script can be started in 2 ways:
-
Widget (recommended) see this guide
-
One time script by using the yaapux.lua or yaapux.luac script, see this guide
Note: For the script to control the lcd panel backlight a few extra steps are required, please follow this guide
The script is already compiled and only needs to be copied to the radio SD card.
The correct folder structure is
- /SCRIPTS/YAAPU/CFG
- /SCRIPTS/YAAPU/IMAGES
- /SCRIPTS/YAAPU/yaapux.lua
- /SCRIPTS/YAAPU/yaapux.luac
- /SCRIPTS/YAAPU/menu.lua
- /SCRIPTS/YAAPU/menu.luac
- /SCRIPTS/YAAPU/LIB/copter.lua
- /SCRIPTS/YAAPU/LIB/copter.luac
- /SCRIPTS/YAAPU/LIB/plane.lua
- /SCRIPTS/YAAPU/LIB/plane.luac
- /SCRIPTS/YAAPU/LIB/rover.lua
- /SCRIPTS/YAAPU/LIB/rover.luac
- /SCRIPTS/YAAPU/LIB/init.lua
- /SCRIPTS/YAAPU/LIB/init.luac
- /SOUNDS/yaapu0/en
- /SOUNDS/yaapu0/it
- /SOUNDS/yaapu0/fr
- /SOUNDS/yaapu0/de
- /WIDGETS/Yaapu/main.lua
- /WIDGETS/Yaapu/main.luac
Note: On radios without the luac option enabled it is necessary to use the .lua versions
To compile your own version you must first preprocess the SOURCES/yaapu0.lua scripts with the pproc.lua preprocessor. Details on the preprocessor can be found here
You need a working lua interpreter for this to work. On a command line simply run "lua pproc.lua yaapu0.lua yaapu9.lua" The yaapu9.lua script is now ready to be compiled in Companion.
Please refer to the arducopter wiki for information on how to configure your flight controller for passthrough protocol
For information on how to connect the FrSky equipment together, please refer to
- http://ardupilot.org/copter/docs/common-frsky-telemetry.html#common-frsky-equipment
- http://ardupilot.org/copter/docs/common-frsky-telemetry.html#diy-cable-for-x-receivers
For information about building DIY frsky telemetry cables
Official Blog Thread on ardupilot.org
Official thread on rcgroups.com
Open an issue on github.com
Thanks go to
- Marco Robustini (X9D tester)
- Chris Rey (QX7 tester)
- Alain Chartier (french sound files)
- Johnex for TTSAutomate phrase file
- Franck Perruchoud (X12 main beta tester)
- Chen Zhengzhong (X10 tester)
- Andras Schaffer (X12 tester)
- Massild (X10 tester)
- Zeek (X10 tester)
- Vova Reznik (X10 tester)
- athertop (X9D tester)
- zs6buj (X9D tester)
- BFD Systems (Horus version sponsor)
- Harris Aerial (Horus version sponsor)
- Jumper (Jumper T16 version sponsor)
- Craft&Theory for the passthrough protocol
This project is free and will always be.
If you like it you can support it by making a donation!