Skip to content

[RFC] Automatic RF-gain protection for the Hermes-Lite 2 #5535

Description

@on8st

Rewritten 2026-09-10, much shorter. The original was far too long — apologies.

Problem

On a real antenna the HL2's front end clips at any usable RF gain. Measured on my station with an N2ADR filter board: every gain at or above 0 dB clips 86–100 % of samples, and the connect path restores +20 dB. A clipping ADC intermodulates across the whole receive span, so the band sounds busier and the natural reaction — more gain — makes it worse.

There is no automatic protection today. docs/HERMES.md roadmap 14 wants some.

What I measured

  • The clean→clipping transition is 3–5 dB wide (six sweeps, two antennas, five bands, 1 dB steps).
  • Above about −4 dB, 23 dB of the 31 dB gain range is railed.
  • The ADC overload flag is a threshold, not a rate: at fixed gain its rate swings 0 %→90 % between successive 3 s windows.

Proposal

An Auto RF Gain toggle, off by default, on host-modulating backends:

  • overload observed → back off 6 dB (6 clears the measured knee in one move)
  • after a quiet interval → try 6 dB back; if it clips again, restore and double the interval
  • the operator's own gain setting is never overwritten — the servo's offset is a separate number and the sum is displayed

The question I actually need answered

Is this wanted at all? With 23 of 31 dB saturated, the honest fix for a strong-signal station is a filter or an attenuator, not software. A reasonable answer is "ship the readout, not the controller" — surface the overload state so an operator can see it and decide. I would not argue with that.

Status

Implemented and unit-tested locally, not pushed and not offered as a PRGOVERNANCE.md puts the RFC first. Happy to close this if it is not wanted.

Full measurements and the gateware reasoning are in my lab notes; I will keep them out of here unless asked.

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions