Skip to content

v0.3.5 — Flex sim SmartSDR v4.3 firmware (--firmware 4.3)

Choose a tag to compare

@github-actions github-actions released this 14 Oct 02:27
· 11 commits to main since this release
e2e3eb7

The Flex radio sim can now behave like a radio on SmartSDR v4.3.16, FlexRadio's release of 2026-10-13. Start it with --firmware 4.3 to test AetherSDR's 4.3 work without upgrading a radio. aethersdr/AetherSDR#6437 maps the wire changes this follows. Without the option nothing changes: the sim reports and behaves as before.

About the binaries below: they are the Flex radio sim (flex_sim.py). The KPA1500, ANAN and station sims run from source.

Added: --firmware 4.3 (#19)

  • Version: discovery and the connect greeting report 4.3.16.42034. Presets are 3.3, 4.1, 4.2 and 4.3, or give a full version.
  • PTT Override (#6442): the transmit status reports ptt_mic_override. A client can set it to 0 or 1; any other value is refused. Older firmware never reports it.
  • What a footswitch sends. On 4.3, a hardware PTT (MIC, ACC or RCA) transmits the selected source, DAX included. Before 4.3 it always forced the analog mic. PTT Override brings the old behaviour back.
    • Simulate a footswitch with http://<sim>:8731/hwptt?src=MIC&on=1.
    • /state shows what the radio would put on the air.
  • Interlock sources: every latched source is listed, hardware first (MIC,VOX, MIC,VOX,SW), and VOX is reported as VOX.
  • DSP levels: reported as nrl_level, anfl_level and nrs_level. NRS runs 0–50, and nrf_level is ignored.
  • 48 and 96 kHz slice audio: slice set N sample_rate=48000|96000 streams with the new class codes (0x03E4/0x03E5, reduced bandwidth 0x0124/0x0125). It switches live.
  • APD: state=OFF|IDLE|ACTIVE, plus the new equalizer line with its antenna, frequency and power.
  • UDP keepalives: udp_register and ping are counted in /state.
  • DAX TX rate: the TX chain check gains stage 3b: TX audio rate must match the TX slice, which 4.3 firmware enforces.
  • CWX: the 0x1E stand-in for a quote inside cwx send is decoded.

Fixed

UDP keepalives were counted as DAX TX audio. AetherSDR sends its UDP keepalives to the radio's port 4991, which is also where the sim watches for DAX TX audio. So a client ping every 5 s could make the TX chain's "audio arriving" stage flicker true with no audio flowing. Keepalives are now recognised and counted separately, whatever the firmware setting.

Tested

  • tests/test_firmware_43.py: 44 checks, each behaviour run against an old-firmware sim and a 4.3 one.
  • The full suite and the offline loopback self-test pass.
  • Against a real AetherSDR: the #6292 build connected to a --firmware 4.3 sim, showed version 4.3.16.42034, and took the new PTT Override key without complaint.

Documented in PROTOCOL.md §12.

One assumption: whether real 4.3 firmware ignores the dropped nrf_level command or refuses it isn't known. The sim ignores it.

Not covered: SmartLink WAN sessions, APD's TRAINING/HOLD/FAULT states, and the FLEX-8000/Aurora-only features (AutoDX, NTP, Noise Floor Range).