Skip to content

ExpressLRS partial desync and inability to reestablish connection #3258

@PauliusMorku

Description

@PauliusMorku

Current Behavior

ExpressLRS link enters a partial desync state where Link Quality (LQ) drops to very low values with most packets being lost, but the connection doesn't fully disconnect. The link does not recover on its own and requires a manual reset of either TX or RX to restore normal operation. This appears to happen because occasional packets still get through, preventing ExpressLRS from entering scanning mode that would allow proper re-synchronization.

Steps to Reproduce

  1. Set up Happymodel EP1 Dual receiver as TX connected to DTQSYS Head Tracker running HeadTracker firmware
  2. Set up second Happymodel EP1 Dual receiver as RX
  3. Establish normal ExpressLRS link with good LQ
  4. Connect to head tracker via serial and perform settings save operation to flash.
    Note: Issue can occur randomly during normal operation, but saving head tracker settings is a reliable reproduction method.
  5. Observe LQ drops dramatically and stays low
  6. Link remains "connected" but with very poor packet success rate
  7. Only manual TX/RX reset restores normal operation (resetting headtracker is not necessary, meaning it continues to send valid packets after the issue occurs).
    Note: This does not occur when I connect same ExpressLRS module to EdgeTX radio as external TX module.

Possible Solution (based on my very limited understanding)

The issue may be related to how ExpressLRS handles irregular telemetry timing or gaps in Crossfire data. Since the head tracker and ExpressLRS module are separate devices, flash operations on the head tracker should not affect radio synchronization. Possible areas to investigate:

  • Possibly some invalid operation is performed by the headtracker, but ExpressLRS should be immune to this
  • Crossfire protocol timing handling in ExpressLRS firmware
  • Recovery mechanisms when partial desync occurs vs full disconnect

Details

This severely impacts head tracker usability as the link becomes unreliable and requires manual resets. The head tracker and ExpressLRS module are separate devices communicating via Crossfire protocol, so head tracker operations (like flash writes) should not affect radio synchronization.
The issue suggests a problem with ExpressLRS recovery mechanisms - when synchronization is partially lost but some packets still get through, the system doesn't recognize it needs to re-establish sync.

Environment

  • TX hardware: Happymodel EP1 Dual receiver (2.4GHz) flashed as TX
  • RX hardware: Happymodel EP1 Dual receiver (2.4GHz)
  • Handset model: DTQSYS Head Tracker running https://github.com/headtracker/HeadTracker/releases/tag/v2.21
  • ExpressLRS version: Tested on both 3.5.5 and 3.5.6 (TX & RX matching versions)
  • Packet Rate: all tested modes behave the same (tested most of them, in fact I tried most of the settings that can be changed with lua script)
  • Telemetry Ratio: telemetry ratio did not seem to impact this issue
  • user_defines: none

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions