Skip to content

Aetherial Channel Strip TX output level too low to drive radio to full PEP without high Trim #2876

@TnxQSO-Admin

Description

@TnxQSO-Admin

Report preparation

  • I used the AI-assisted bug report tool (Help → Support → File an Issue)
  • I have attached a support bundle or log file

What happened?

Disclaimer

This may be a radio configuration issue or user error on my part rather than an actual bug in AetherSDR. I am filing this because the investigation produced enough concrete data to suggest something might be off, and I would appreciate feedback on whether this is known/expected behavior or something to look into.

What happened

With Aetherial Audio Channel Strip as the sole TX processing (FlexRadio EQ and compressor disabled), default settings produce significantly lower-than-expected TX output power. To get close to the radio's rated PEP, Trim must be raised approximately +6.5 dB above default.

Measurements at normal speech levels with default Trim (+1 dB), limiter ceiling -3 dB, LIM on:

  • Channel strip Final Output Stage: peaks at the displayed -3 dB ceiling occasionally, RMS around -20 dBFS
  • Radio-side SC_MIC meter: -21 dBFS
  • FWDPWR: approximately 100 W PEP from a radio rated 500 W
  • TUNE (no audio processing involved): 500 W, confirming the RF chain and PA are healthy

Workaround that produces acceptable results: Trim +6.5 dB, limiter ceiling 0 dB, LIM off. Output reaches approximately 400 W PEP and a QSO partner confirmed clean audio.

Environment

  • OS: Linux (Arch / KDE)
  • Radio: FlexRadio AU-520 (500 W class)
  • AetherSDR: built from current main
  • Microphone: RØDE NT-USB
  • FlexRadio EQ: OFF
  • FlexRadio compressor: OFF
  • DAX: OFF
  • All TX processing performed in Aetherial Audio Channel Strip

Investigation

Two independent measurements were performed to narrow down where the level loss occurs.

1. Radio-side meter capture

I wrote a Python script that connects to the radio on TCP/4992 and reads every meter the firmware exposes via VITA-49 (PCC 0x8002), including meters that AetherSDR does not currently display: CODEC, TXAGC, SC_MIC, AFTEREQ, COMPPEAK, ALC, RM_TX_AGC, SC_FILT_1, SC_FILT_2, TX_AGC, FWDPWR.

With Trim +1 dB, normal speech, snapshot during TX:

SC_MIC      -21.0 dBFS
CODEC       -24.1
TXAGC       -21.0
AFTEREQ     -21.2
COMPPEAK     -6.4   (compressor disabled, but post-comp tap reads this)
ALC         -17.5
RM_TX_AGC   -20.0
TX_AGC      -20.1
FWDPWR       48.8 W

The radio TX chain passes the signal through correctly. FWDPWR is consistent with a signal arriving at SC_MIC near -21 dBFS. The radio's RF chain and PA are operating as designed.

2. Client-side PCM level capture

I added temporary debug logging in AudioEngine.cpp around line 4140 (the TX callback path), measuring peak and RMS of the int16 stereo PCM buffer at two taps:

  • Pre-limiter tap (channel strip output, before applyClientFinalLimiterTxInt16)
  • Post-limiter tap (same buffer that feeds the Opus encoder)

Results at normal speech levels:

Default settings (Trim +0 dB, LIM on, ceiling -3 dB):

  • Pre-limiter peaks: typically -8 to -13 dBFS, best case -3 to -5 dBFS
  • Pre-limiter RMS: -17 to -22 dBFS
  • Pre and post taps essentially identical (limiter never engages)

With workaround (Trim +6.5 dB, LIM off, ceiling 0 dB):

  • Pre-limiter peaks unchanged from above
  • Post-limiter peaks regularly clip at 0.00 dBFS (LIM off, so hard clipping)
  • Consistent +6.5 dB delta between pre and post taps confirms Trim is the only thing applied between them

This confirms that the channel strip output naturally lives 8 to 11 dB below the level the radio expects at SC_MIC. Trim cleanly applies that delta but has no other gain stage to do the work properly.

Related observation: WSJT-X via DAX1

A separate path observation, in case it indicates a shared upstream gain stage: WSJT-X TUNE through DAX1 with every volume slider at 100% produces only approximately 246 W. The radio's SC_MIC meter reads about -7 dBFS during the TUNE tone. This is a completely separate signal path (DAX float32, not Opus), so it should be independent of the Aetherial channel strip, yet it also shows an undersized input level relative to a full-scale tone.

Suggested fix

I do not know enough about the channel strip design intent to recommend a specific fix. Possibilities:

  1. Expected behavior, undocumented. The channel strip is intentionally conservative and Trim is the intended makeup gain. In that case, either the default Trim value should be higher, or documentation/UX should make it obvious that significant Trim is normal.
  2. Missing makeup gain stage. Some implicit gain stage that SmartSDR's built-in EQ/COMP provides is not replicated when those are off and Aetherial is in their place.
  3. One specific processor attenuating more than intended. Less likely, but worth checking with the individual chips bypassed.

I am happy to provide additional data:

  • Raw debug log CSV from /tmp/asdr_tx_levels.csv
  • The Python meter-capture script
  • Additional measurements with different channel strip presets, or with individual chips bypassed

Suggested labels: audio, maintainer-review, bug (or enhancement if this is expected behavior and just needs documentation or a default change).

What did you expect?

What I expected

When the channel strip is configured to peak at the limiter ceiling (e.g. ceiling at -3 dBFS, signal peaking near that level), the radio should produce close to its rated PEP. Instead, even when the Final Output Stage meter shows peaks reaching the -3 dB ceiling, the radio only delivers approximately 100 W from a 500 W class radio. To actually reach close to rated PEP, an additional +6.5 dB of Trim is required beyond what the meter says is already a fully-driven signal.

In other words: the channel strip's "0 dBFS" reference point and the radio's expected input level appear to be misaligned by roughly 6 to 10 dB.

Steps to reproduce

Steps to reproduce

  1. Set up SSB TX with FlexRadio EQ and compressor OFF
  2. Enable Aetherial Audio Channel Strip with default settings (or any preset)
  3. Trim at default (+1 dB), limiter ceiling at default (-3 dB), LIM on
  4. Adjust mic gain so that channel strip Final Output Stage shows peaks at approximately -3 dBFS during normal speech
  5. Observe TX output power; it will be substantially below the radio's rated PEP

AetherSDR version

v26.5.2.1

Radio model & firmware

AU-520

Operating system

Linux

OS version and hardware

CashyOS

Metadata

Metadata

Assignees

No one assigned

    Labels

    audioAudio engine and streamingbugSomething isn't workingmaintainer-reviewRequires maintainer review before any action is taken

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions