Skip to content

Conversation

@CapnBry
Copy link
Member

@CapnBry CapnBry commented Nov 15, 2025

Changes the internal ChannelData structure to be initialized with an invalid CRSF value, so our code on the RX can tell if a channel has been updated OTA yet. Also updates CRSF EXT min/max to match CRSF spec 880-2120us (we referenced 885-2115)

Bug

Servos running in FullRes mode could not distinguish a "0" channel value (880us) from a value that had not been received yet. The servos will not output a value if the channel value is 0, leading to a low throttle never outputting a value.

CRSF Ext Limits

When writing Fullres mode, I somehow landed on +/-120% (885-2115us) as being the CRSF Ext Limit. However, looking at the calculation on their spec, it is 0=880us and 1984=2120us. I've updated our references to match this, although no values we're sending will change since we send them in CRSF.

For discussion!

What do we write to our serial outputs for channels we have not received yet? Currently we output CRSF(0), so this PR replicates this behavior. However, we can output 1500us if we want. I'm not sure if we want to move all the sticks and switches to center before they've all been received, as Betaflight (and I believe iNav) will discard channels outside the 988-2012us range by default, so 1500us would make them "valid".

Any channel could not be received yet, so this is somewhat of a hidden gem of ExpressLRS. Switch channels take 8 packets to fill all of them. Fullres 16ch mode takes 2 packets.

@CapnBry CapnBry changed the title Crsf channels init Use invalid CRSF value to differentiate from an actual 0 ChannelData value Nov 15, 2025
Copy link
Collaborator

@pkendall64 pkendall64 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor grammar fix in the comment, other than that, all good

@CapnBry CapnBry merged commit 720c9a0 into ExpressLRS:master Nov 18, 2025
26 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants