Skip to content

[Bug] CRSF telemetry: Alt/VSpd not discovered on EdgeTX and GAlt off by ~1000 m after #27948 #28530

Description

@AshwinDeTaeye

Describe the bug

CRSF telemetry: Alt/VSpd not discovered on EdgeTX and GAlt off by ~1000 m after #27948
Describe the bug
On two otherwise identically configured GEARUP_AIRBRAINH743 boards, CRSF telemetry altitude behaves differently depending on the build, and the difference brackets PR #27948.

Working build (83c4f4e, branch beta, built Aug 9 2026):
Alt, VSpd and GAlt all display correctly on a RadioMaster TX16S running EdgeTX.

Broken build (e8ea98b, branch main, built Aug 18 2026):

Alt and VSpd are never discovered on the transmitter, including after an explicit Discover New Sensors. They stay N/A.
GAlt is discovered but reads about -700 m while the true altitude, confirmed in QGroundControl over USB, is about 293 m.
Altitude is correct in QGC on both boards, so the problem is confined to the CRSF path to the transmitter.

Note that both builds self-report as 1.18.0 build 80, so the version string alone does not distinguish them. Only ver all does.

Suspected cause
PR #27948, "feat(crsf): add local altitude/vertical-speed telemetry and fix GPS frame", merged into main on 2026-07-19, sits between the two hashes above. The beta branch predates it.

That PR introduces CRSF frame type 0x09 (baro_altitude) carrying local altitude plus vertical speed, which is what EdgeTX surfaces as Alt and VSpd, and it reworks the GPS frame encoding. Both reported symptoms fall inside that change:

Alt and VSpd never appearing is consistent with the newly added 0x09 frame not being accepted by the EdgeTX parser, for example a payload length or CRC mismatch, rather than with a pre-existing sensor breaking.
-700 against a true 293 is almost exactly 293 - 1000, the classic signature of a missing +1000 m GPS altitude offset, which is one of the three GPS-frame bugs that PR set out to fix.
We could not explain the GAlt symptom from source inspection alone: in src/drivers/rc/crsf_rc/CrsfRc.cpp the GPS altitude line is static_cast<int16_t>(sensor_gps.altitude_msl_m) + 1000 at both hashes, with only a comment changed. So either the affected board takes a different driver path, or the newly added 0x09 frame is disturbing EdgeTX's sensor mapping. We are flagging the correlation rather than asserting a root cause.

To Reproduce
Flash a board with a build from main at or after 2026-07-19.
Connect an ELRS receiver over CRSF on a UART with telemetry enabled.
On a TX16S running EdgeTX, delete all telemetry sensors and run Discover New Sensors.
Observe that Alt and VSpd do not appear, and that GAlt reads roughly 1000 m below the QGC altitude.
Repeat with a build predating #27948 and observe all three sensors correct.

Expected behavior
Alt and VSpd are discovered on EdgeTX and track the local altitude estimate and climb rate. GAlt matches the GPS MSL altitude shown in QGC.

Software Version
1.18.0 build 80 on both boards. Distinguished only by ver all:

Board 1 (broken)
PX4 git-hash: e8ea98b
PX4 git-branch: main
Build datetime: Aug 18 2026 17:50:26
OS: NuttX, Release 11.0.0
Toolchain: GNU GCC 13.2.1 20231009

Board 2 (working)
PX4 git-hash: 83c4f4e
PX4 git-branch: beta
Build datetime: Aug 9 2026 04:23:18
OS: NuttX, Release 11.0.0
Toolchain: GNU GCC 13.2.1 20231009
Flight controller
GEARUP_AIRBRAINH743 (Gear Up AirBrain H743), upstream target gearup_airbrainh743.

Vehicle type
Multicopter.

How are the different components wired up
ELRS receiver on a UART, CRSF, telemetry enabled. TX16S running EdgeTX.

Additional context
Reported from a customer bench running two boards side by side; the bisection to these two hashes is theirs. Happy to run further instrumented tests on either build if that helps narrow it.

@dakejahl maybe you can have a quick look as the author of #27948.

Possibly related but not the same defect: #22439 (auto-closed for inactivity, different symptom, altitude reported in millimetre-scale units on a Pixhawk 6c).

Flight Log / Additional Information

No response

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    status:needs-triageAuto-assigned to new issues and removed after maintainers review it and assign the specific label.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions