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.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