CRSF mode/rate messages diverges from actual settings

Hi,
Trying to understand why CRSF mode/rate message displays different rates than my actual settings. I wasn’t too concerned about this as everything is working as expected but now I’m still trying to have yaapu telemetry working on the RadiomasterTX12 and not sure if these differences reported on the messages are important.

Using ELRS 3.2.0
Options I have for CRSF baudrate on radio’s model setup are 115k 400k 921k 1.87M 3.75M 5.25M. Using 400k
Tried changing RC_OPTIONS “Use 420kbaud for ELRS protocol” On/Off but same results.

While keeping tele ratio 1:2 the differences between actual setup and CRSF mode/rate messages are:

ELRS setup → CRSF rate message on OSD
50Hz → “50Hz, telemetry rate 65401Hz”
100Hz → “150Hz, telemetry rate 78Hz”
150Hz → “200Hz, telemetry rate 134Hz”
250Hz → “500Hz, telemetry rate 375Hz”
333Hz → “500Hz, telemetry rate 339Hz”

The only rate that message displays the correct value is for 50Hz, but weird telem rate number in this case.

Should I be concerned?
Should I downgrade ELRS? There’s any suggested ELRS version while on Copter 4.3 ?
Thanks

1 Like

The telemetry rate is the measured rate. The link rate includes all frames. ELRS sends download frames in gaps depending on your setup, so in theory a link rate of 500Hz and a ratio of 1:4 will give you a telemetry rate of 500/(1+4) = 100Hz, but this can vary depending on whether data is sent or not. We have no way of knowing what ratio was configured on the TX side other than measuring.

Thanks.
It makes sense. The OSD telem ratio I get for 50hz is screwed though.

Trying to wrap my head around how to setup things correctly. It looks like a UART; CRSF; ELRS(so LoRa) labyrinth actually, and not easy to debug it seems.
I’m probably missing basic details/concepts to be able to connect the dots.

Default on my SERIALx_BAUD is 57600bps, clearly not enough to cope with CRSF and ELRS default rates. Assuming it’s self negotiating/adjusting baudrate accordingly (because it works after all)

CRSF default baudrate is 420k (or 416.6k …). It seems crsf is proprietary protocol (it doesn’t help). The most descriptive text about crsf I can find is https://github.com/cleanflight/cleanflight/blob/master/src/main/rx/crsf.c (from line 74)

… whilist ELRS default baudrate is 400k Radio Preparation - ExpressLRS . I wonder how ELRS is able to work over CRSF considering it’s default lower baudrate. (again assuming self negotiation or just me missing concepts)

Perhaps that’s why “Use 420kbaud for ELRS protocol” bit exist in RC_OPTIONS. The confusing part is ELRS doesn’t even have a 420k option (but 400k).

SERIALx_BAUD is irrelevant for CRSF and ELRS, the baud rate is set in the protocol handler and is fixed at 416k or 420k if RC_OPTIONS bit is set or can be negotiated to 2m if using CRSFv3. 400k is the TX baud rate - not the same as the RX baud rate.

Thanks again. It helps making this less foggy for me (down the rabbit hole)
Rabbits everywhere! Can't compile OTX-ETX_BW-LCD (bw128x64) · Issue #208 · yaapu/FrskyTelemetryScript · GitHub