From the project

The AetherSDR blog

Release notes, engineering deep-dives, and notes from the bench — how the workstation gets built, and what's landing next.

A contribution pipeline drawn as a signal chain — issue, fix, merged — over a spectrum trace
Pinned 8 min read

Your first contribution to AetherSDR

You no longer need to be a C++ programmer to fix something in this project. You need judgement, a radio, and the patience to check work — the same things that make a good Elmer. Here's what an AI coding agent changes about contributing, and what it very deliberately doesn't.

Read post
v26.10.4 release art — 4.3, continued, drawn as an AetherSDR spectrum panel
5 min read

v26.10.4: SmartSDR 4.3, continued

Noise Floor Range, CW profiles and APD from SmartSDR 4.3.16, and a fix for a Retina panadapter that could stop a FLEX-8600's display for every client. AetherSDR now checks for its own updates and opens one window for the release and the radio's firmware.

Read post
v26.10.3 release art — smartsdr 4.3, drawn as an AetherSDR spectrum panel
3 min read

v26.10.3: SmartSDR 4.3 and an AI CW decoder

Auto AGC-T, DSP parameter reset, per-band TUNE suppression and PTT Mic Override arrive for SmartSDR 4.3, the DeepCW neural decoder joins the CW panel, and Auto squelch finally stays with its own slice.

Read post
v26.10.2 release art — behind cgnat, drawn as an AetherSDR spectrum panel
5 min read

v26.10.2: the radio, from anywhere

A Tailscale node that runs inside a FLEX-8000 or Aurora radio carries AetherSDR through CGNAT. The main window gets one title bar with a tab per radio, the user guide moves to docs.aethersdr.com, and the first windows take on the AetherSDR style guide.

Read post
v26.10.1 release art — one qt, drawn as an AetherSDR spectrum panel
4 min read

v26.10.1: one Qt, every build

Every binary and every source build now uses the same Qt 6.12, installed with one command. On a radio without a Flex command plane, every control now either works or tells you why it can't. A CTR2-Max reaches the radio through AetherSDR, 4O3A accessories authenticate, and the Hermes-Lite 2 gains squelch, APF and RIT/XIT.

Read post
A cross-needle meter over an AetherSDR spectrum trace, for the CQ WPX CW station-notes post
4 min read

Adaptive Throttle held the line at CQ WPX CW — and two more bugs died live, mid-contest

1,048 QSOs, 4 bands, 73 DXCC entities, over 47 hours 40 minutes, run remote to KB8O on a link that was never fully reliable. Adaptive Throttle kept it from ever tearing down — and two more bugs, in the amp/tuner reconnect path and the PWR/SWR meters, got found and fixed live, mid-contest.

Read post
v26.9.4 release art — the chain, in one window, drawn as an AetherSDR spectrum panel
8 min read

v26.9.4: one window per chain, and the meters that passed every test

AetherRX and AetherTX rebuild the receive and transmit chains into one window each, where the stage list is the chain and you drag it into order. WDSP 2.10 brings Neural Noise Reduction, precipitation goes worldwide — and two meters that agreed perfectly with a test tone turn out to have been badly wrong on speech.

Read post
v26.9.3 release art — the tools, first, drawn as an AetherSDR spectrum panel
6 min read

v26.9.3: a Tools menu, and a digipeater that only arms when you say so

The menu bar is rebuilt around what operators actually reach for, PSK Reporter gains weather radar and night lights, and AetherModem becomes a WIDE1-1 fill-in digipeater — one that will never come back armed on its own.

Read post
v26.9.2 release art — four skimmers, one stream, drawn as an AetherSDR spectrum panel
6 min read

v26.9.2: four skimmers on one stream, and two more ways to receive

One Flex can now feed four CW skimmers through a single TCI server, experimental ANAN-G2 and RTL-SDR reception arrive, the SPE front panel and an LP-100A wattmeter come inside — and the KiwiSDR directory gets a mirror, so browsing receivers stops billing someone else’s volunteers.

Read post
v26.9.1 release art — the map goes round, drawn as an AetherSDR spectrum panel
4 min read

v26.9.1: a globe, a rotator, and buttons that tell the truth

PSK Reporter gains an optional globe projection, Green Heron antenna and rotator control arrives as a native applet, and — quieter but more consequential — the interface stops offering you controls your radio doesn’t actually have.

Read post
v26.8.4 release art — evidence, not assumption, drawn as an AetherSDR spectrum panel
4 min read

v26.8.4: capabilities the radio has to prove

Icom support stops assuming and starts checking. Each model is described by independently attested facets, and a radio nobody has profiled hides unsupported controls rather than borrowing another model’s commands. Plus client-timed CW on the Hermes-Lite 2.

Read post
v26.8.3 release art — the workspace canvas, drawn as an AetherSDR spectrum panel
5 min read

v26.8.3: a new shell, and the reason it’s off by default

Workspace Canvas turns pans and applets into freely placed, layered items that can span several windows, with named workspaces bound to radio profiles. An install that never enables it never even gains a settings key. Plus an ordered command plane for the Icom.

Read post
v26.8.2 release art — two more radios, drawn as an AetherSDR spectrum panel
14 min read

v26.8.2: two more radios, and what “experimental” has to mean

The Hermes-Lite 2 and the Icom IC-705 arrive on the vendor-neutral backend seam, labelled experimental — which here is a request for reports rather than a disclaimer. Plus SPE Expert amplifiers, a noise reducer found to be delivering a fifth of the attenuation it advertised, and a CW keyer measured at 26 WPM with 30 on the dial.

Read post
A play drawn on a chalkboard: a formation runs routes at one line of scrimmage while the dashed flight of the ball arrives at a point marked main
24 min read

An army of agents vs one main branch

An essay on how a project with no human-authored code actually gets built. There's no ceiling on the number of AI agents proposing changes to it — at least one per contributor, and a single run can spawn ninety. What stops that becoming an unreviewable mess isn't better prompting: it's written-down authority, and a gate that doesn't care how confident anyone sounds.

Read post
v26.8.1 release art — settings that survive, drawn as an AetherSDR spectrum panel
10 min read

v26.8.1: settings that survive, and a way in when they don’t

Your settings stop being an XML file and become a database — transactional saves, verified backups, and credentials moved out to your OS keychain. Then the part that matters when it goes wrong: a config editor that runs without the GUI, because the escape hatch can’t depend on the thing it’s rescuing.

Read post
v26.7.4 release art — speech to text, drawn as an AetherSDR spectrum panel
10 min read

v26.7.4: Copy Assist, and the eight milliseconds that ate half the audio

AetherSDR now transcribes received voice on your own machine — whisper.cpp under the waterfall, confidence colour-coding, no audio leaving the computer unless you send it. Then the deep end: why it sounded broken with NR2 engaged, and how a repaint optimisation was quietly discarding half the speech.

Read post
v26.7.3 release art — meters you can trust, drawn as an AetherSDR spectrum panel
5 min read

v26.7.3: the cross-needle returns

A cross-needle PWR/SWR applet brings the classic forward-power, reflected-power, and SWR view into AetherSDR — the meter where the reading is the crossing point. The analog S-meter gains configurable face themes, and the SWR response and scale maths got more accurate underneath.

Read post
v26.7.2 release art — digital voice, drawn as an AetherSDR spectrum panel
7 min read

v26.7.2: D-STAR, locally, with a dongle

Complete local D-STAR through a connected ThumbDV hardware vocoder — receive and transmit digital voice, headers, callsigns, repeater routing, and 20-character messages. Software AMBE is deliberately not included, and the reason is worth explaining. Plus an MCP server and Blackwell GPU support for BNR.

Read post
v26.7.1 release art — the band, over time, drawn as an AetherSDR spectrum panel
7 min read

v26.7.1: the spectrum stands up

A 2D/3D toggle turns the panadapter into a perspective stacked-trace surface — a rolling history of FFT traces receding into the distance, so you can watch a band's activity build rather than only seeing the live sweep. Ridge height is anchored to the measured noise floor, and the whole path runs at 60 fps.

Read post
v26.6.5 release art — diversity across geography, drawn as an AetherSDR spectrum panel
6 min read

v26.6.5: aligning a Flex with a receiver a thousand miles away

KiwiSDR receive sync uses GCC-PHAT correlation to time-align your Flex with a public Kiwi in both audio and the waterfall, so a diversity pair separated by a continent stays phase-coherent. Plus SmartMTR transmit meters and a profile-switcher applet.

Read post
v26.6.4 release art — receivers worldwide, drawn as an AetherSDR spectrum panel
6 min read

v26.6.4: listening from somewhere else

A KiwiSDR public-receiver browser lands — find and connect to public receivers worldwide, entirely independent of the FlexRadio path. It's deliberately policy-aware rather than pretending the world's volunteer-run receivers are a free API, and it physically cannot transmit.

Read post
v26.6.3 release art — satellite data, drawn as an AetherSDR spectrum panel
6 min read

v26.6.3: WFM, and 9600-baud satellite work

A per-slice WFM demodulator built specifically for G3RUH 9600-baud satellite telemetry — DAX IQ through Doppler correction, exact resampling, and a flat discriminator into a virtual audio cable. Plus an APRS client and a PSK Reporter map on a new reusable mapping engine.

Read post
v26.6.2 release art — a complete packet station, drawn as an AetherSDR spectrum panel
7 min read

v26.6.2: your radio is now the TNC

AetherModem grows from a decoder into a full packet station — a KISS-over-TCP TNC server for any host app, a connected-mode AX.25 terminal that calls a real BBS, and a personal mailbox that answers. All over the built-in 1200-baud AFSK modem, with no external TNC hardware anywhere in the chain.

Read post
v26.6.1 release art — hands on the radio, drawn as an AetherSDR spectrum panel
6 min read

v26.6.1: knobs, dials, and physical controls

Three new classes of physical controller land — the Elgato Stream Deck+, the Ulanzi Dial, and native Icom RC-28 support — all opt-in by design so macOS never prompts for Input Monitoring unless you actually enable one. Plus a seven-year-old noise-reduction crackle finally traced to a Bessel function.

Read post
v26.5.3 release art — aetherial tx complete, drawn as an AetherSDR spectrum panel
7 min read

v26.5.3: the de-esser that was costing you 30 watts

The Aetherial transmit path reaches feature-complete with a PAPR processor and a split-band de-esser. The de-esser rewrite is the interesting one: the old broadband implementation was quietly pulling roughly 30 W of forward power out of voice content, and the fix is a single change in how the gain is applied.

Read post
v26.5.2.1 release art — aethermodem, phase 0, drawn as an AetherSDR spectrum panel
6 min read

v26.5.2.1: a packet decoder of our own

AetherModem lands as a native HDLC/AX.25 receiver — a 21-lane phase bank, FCS validation, and a dedicated Packet Decode dialog, with RX live on 300-baud HF and 1200-baud VHF. Also the story of why this release has a fourth version digit, which turns out to be about one string in a device-identity handshake.

Read post
v26.5.1 release art — the 1.0 release, drawn as an AetherSDR spectrum panel
6 min read

v26.5.1: dropping the pre-1.0 framing

After eight 0.9.x cycles the version number had stopped telling the truth. v26.5.1 is the 1.0-equivalent release — full SmartSDR feature coverage, the Aetherial strip complete on both paths, and native builds on three platforms. It also switches the project to CalVer, for a reason worth explaining.

Read post