Skip to content

Releases: PNWHam-K7JUS/Kainos

Kainos 1.0.9 - New features and updates!!!

Choose a tag to compare

@PNWHam-K7JUS PNWHam-K7JUS released this 12 Oct 13:33

Kainos 1.0.9

Based on Thetis 2.10.3.15. See the Kainos wiki for how to use everything below.

New: VST3 plugins in Kainos Audio (experimental)

  • Kainos Audio's transmit chain has a Plugin stage. Choose a VST3 plugin installed on your PC (or browse for a .vst3), open its own window, and drag the stage anywhere in the chain like the others. Audio > VST3 Plugin... takes you straight there.
  • It runs in voice modes only (never in digital modes or CW), Kainos Audio's BYPASS takes it out too, and Thetis's leveler, compressor and ALC still come after it.
  • Your plugin and its settings are remembered.
  • Transmit only for now. Running plugins in a separate process (so a misbehaving plugin can't take Kainos down) and receive plugins are still to come.

New: Xiegu GPA100 band switching over Bluetooth

  • Setup > Serial / Network / Midi CAT > Amplifier (CI-V): the GPA100 follows Kainos's band over Bluetooth, with step-by-step setup, a button that opens Windows's Bluetooth settings, and Find GPA100, which finds the amp's COM port for you.
  • Kainos sends the transmit frequency (VFO B in split, and the HL2's own frequency with a transverter), and reconnects by itself if the amp is switched off or goes out of range.
  • Band switching only: keep the amp's ACC1 cable for PTT and ALC. Other amplifiers that follow an Icom radio over CI-V can work too. See Amplifier Band Switching.

New: a tidier menu bar

  • In the Kainos layout the menu bar is now Setup, Memory, Audio, Modes, Tools, Compact, About.
    • Audio: Kainos Audio (receive and transmit), the VST3 plugin, Equalizer, and shortcuts to the VAC, VOX / DEXP and CFC settings.
    • Modes: FreeDV, RTTY, CW and CWX.
    • Tools: XVTRs, Linearity, Radio Astronomy and Finder.
  • The Classic layout keeps Thetis's menu bar.

New: compact view

  • Compact (where Collapse was) tucks the left dock and the right-hand column away at the window's edges. Point at an edge and it slides in over the panadapter; move away and it slides back. Expand puts everything back, and Kainos remembers which view you were in.

Fixes

  • The right-hand column scrolls smoothly: the mouse wheel glides it instead of jumping, a touchpad scrolls in proportion, and the meter no longer goes blank while scrolling.
  • Menus could show light for a moment before turning dark; they now open dark. Windows's own menus (a text box's right-click Cut / Copy / Paste) are dark too.
  • The menu bar said Collapse instead of Compact in the Kainos layout.

Installing

Run Kainos-1.0.9-x64.msi. It replaces any earlier Kainos version and keeps your settings. Kainos installs alongside Thetis and doesn't change it.

Thanks to everyone who sent ideas and bug reports.

73, Justin K7JUS

Kainos 1.0.8 - Fixes, requests and more.

Choose a tag to compare

@PNWHam-K7JUS PNWHam-K7JUS released this 10 Oct 22:40

Kainos 1.0.8

A feature release driven by your GitHub issues and Facebook comments. Thank you!

What's new

  • Hear VFO B in split: a LISTEN button on VFO B lets you hear the pileup and the DX at the same time, with its own volume.
  • Audio Scope: a new right-hand column tab with a waveform, audio spectrum and waterfall of what you're hearing, and of your own signal while you transmit. Handy for setting up your TX EQ.
  • Pin the VFO flags anywhere: drag a flag sideways and it stays put. Or turn the flags off and use the VFO tab instead (#11).
  • Mouse wheel your way: choose whether the wheel scrolls the right-hand column or adjusts the control under it (#4).
  • Cleaner RX2: with RX2 on, its controls move to VFO B's flag, so the panadapters get the full height.

Fixes

  • Squelch now keeps its level when you restart (#10).
  • Windows' Installed apps list now shows the real Kainos version (it said 1.0.1 before).
  • Report a bug now includes your screen size and scaling.

Install: run Kainos-1.0.8-x64.msi. It replaces any earlier Kainos and keeps your settings. New features are explained in the wiki, including the new Audio Scope page.

73, Justin K7JUS

Kainos 1.0.7 - Fixes, Update and more!

Choose a tag to compare

@PNWHam-K7JUS PNWHam-K7JUS released this 07 Oct 22:45

The biggest Kainos update yet, based on Thetis 2.10.3.15. See the 1.0.0 notes for everything Kainos adds, and the new Kainos wiki for how to use it. Thanks to everyone on GitHub and Facebook who reported bugs and asked for features.

New: SWR sweep

An SWR button in the left-hand column opens the sweep window. Pick a band (or your own range) and Kainos steps a low-power carrier (1 W at most) across it, plotting SWR as it goes.
Shows the lowest SWR and where it is, and the 2:1 bandwidth.
Save sweeps and tick earlier ones to lay them over the current one, to compare antennas or watch one change over time. Export CSV for a spreadsheet.
Before each sweep, a reminder to turn off any antenna tuner, put any amplifier in bypass or off, and connect an antenna or dummy load. The sweep stops by itself if SWR goes above 5:1 or the output above 1 W, and puts your frequency and tune settings back afterwards.
New: KiwiSDR panadapter and waterfall

A Waterfall button in the KIWI tab opens the KiwiSDR you're listening to as a panadapter and waterfall: its live spectrum, your tuned frequency and passband, and a frequency scale.
Click a signal to tune to it, or use the mouse wheel; Ctrl + wheel or the Zoom buttons zoom from the whole 0-30 MHz down to a couple of kHz. The view follows your frequency.
Kiwi as your radio: with the HL2 off, the Kiwi you're listening to fills the main panadapter area, and the VFO flag, band and mode lists and the mouse wheel all tune it. Power the HL2 on and its own panadapter comes back. Turn this off with Main view in the KIWI tab.
Follow now steps through Follow A, Follow B and off, so the Kiwi can listen on VFO B while the HL2 is on VFO A. Following keeps working with the KIWI tab closed.
Tuning from the Kiwi's view tunes the VFO being followed (A or B), or the Kiwi on its own with Follow off.
The Kiwi's view shows DX cluster and POTA spots as call tags (click one to tune to it) and the same band plan as the main panadapter. Right-click it for the waterfall's Contrast and Speed; the zoom you choose on each band is remembered.
New: arrange the right-hand column your way

Drag a section by its title in the column (RX, METERS, BAND ...), or its tab at the top of the column, to a new place. A gold marker shows where it will land.
Or right-click a tab for Move up, Move down, Move to the top or bottom, and Reset the order.
Your order is saved; tabs added in future versions go at the end.
New: safety nets

Report a bug at the top right of the menu bar (and in the Setup menu): describe what happened and Kainos opens a new GitHub issue with diagnostics filled in (versions, Windows, screen, layout, radio, recent errors). Nothing is sent until you press Submit on GitHub; you can also copy it all to paste elsewhere.
Setup > Back up settings now: one click backs up your current settings. Restore a backup, or keep several settings profiles, in Setup > Database Manager.
Update notice: once a day Kainos checks for a new version and, if there is one, shows what's new with Download, Later and Skip this version. Setup > Check for updates checks right away.
New: light mode

For slower PCs: turns the 3D panadapter off and lowers the display to 20 frames a second. In the Setup menu and Setup > Appearance > Kainos, and suggested by the setup wizard on PCs with 4 or fewer processor threads. Turning it off puts your frame rate and 3D back.
New: licence-aware band plan

A band along the bottom of the panadapter shows what each part of the band is used for (CW, DIGITAL, SSB, BEACONS, AM, SATELLITE, FM, from the ARRL band plan, or IARU Region 1's outside the Americas), with small tags above it at the popular spot frequencies (FT8, FT4, WSPR, PSK31, SSTV, AM, QRP).
Its colour shows where you may transmit: gold all modes, ice CW and data, violet CW only, red out of privileges (labelled "OUT OF PRIVILEGES" there). It's see-through, so signals still show.
Uses the country and licence class from the setup wizard, or set them in Setup > Appearance > Kainos > Band plan (where it can also be turned off).
Full privileges are built in for the United States (Technician, General, Amateur Extra; HF and 6 m) and Canada; elsewhere the band edges are shown. It's a guide: always check your own licence.
New: easier scrolling in the right-hand column

A scroll bar down the right-hand side when the open tabs don't all fit: drag it, or click above or below it.
The mouse wheel anywhere over the column now scrolls the column instead of changing whatever slider is under the pointer. Hold Ctrl to use the wheel on a slider or list (GitHub issue #4).
Changed: the VFO SYNC tab in the Kainos look

VFO Sync, Rx Ant, VFO lock A / B, tune step, quick memory (Save / Restore) and the band stack are now in rows like the rest of the right-hand column, with Kainos's rounded buttons instead of the old scaled-down Thetis panel. The Classic layout is unchanged.
New: one-line VFO flags

Click the A or B on a VFO flag to shrink it to one line (mode, frequency and TX), as in SmartSDR; click it again for the full flag. The frequency still tunes with the wheel and can be clicked to type one (GitHub issue #4).
Fixed

Setup and the other windows were hard to read in places (GitHub issue #3): text is now brighter (near white, with clearer group titles), greyed-out options are a readable grey instead of dark blue, the radio list on Setup > General no longer shows light text on a light highlight, the Meters/Gadgets lists show their names in white, and any text that ends up light on a light box (like the "TX Profile modified" notice) is switched to dark.
The FreeDV Reporter's station list was hard to read (white rows behind light text): it's now dark like the rest of Kainos, with darker red / green / plum shades for stations transmitting, just heard, or with a new message, and its tool bar is dark too.
The VFO flag's MODE tab could open empty (no mode or filter buttons) when Thetis's Legacy Items "Hide mode / filter button grid" options were on (GitHub issue #6).
KiwiSDR in CW, following VFO A: the Kiwi was off by the CW pitch. It now hears a signal on your VFO at your own CW pitch (GitHub issue #5).
Installing
Run Kainos-1.0.7-x64.msi. It replaces any earlier Kainos version and keeps your settings. Kainos installs alongside Thetis and doesn't change it.

Kainos 1.0.6 - Feature Updates

Choose a tag to compare

@PNWHam-K7JUS PNWHam-K7JUS released this 06 Oct 19:39

I do apologize for the two updates in one day, but here is what has been changed.

Here is a few other features that are in the works,

  • SWR Sweep tool - I feel like this is an important feature to have on these radios if you using and external amplifier with actual band controls from the radio (pico firmware would need to be updated first if you want that data from the amp.)
  • License-aware band plans on the panadapter - Particularly excited about this one as it will give you a visual indicator based off of your license class and location.
  • Safety nets: I am adding the function to backup all your settings and restore them to a fresh install if need be, also going to be adding in the ability to report bugs directly to github and lastly, and update notification.

I think that is all for today, please download, test and let me know.

If you think of an improvement, an idea or a suggestion for the software (yes I am looking into a linux port - difficult, but not impossible!).

And once again, thank you everyone how has downloaded and tested it!

73's - Justin - K7JUS

Kainos 1.0.6
An update to Kainos 1.0.0, based on Thetis 2.10.3.15. See the 1.0.0 notes for everything Kainos adds.

New: setup wizard for the Hermes Lite 2
A few questions and Kainos sets itself up for your HL2:

Your station: callsign and grid square (used for DX cluster spots, FreeDV RADE and the FreeDV Reporter), and your country and licence class (Kainos will use these for licence-aware band plans in a later version).
Your HL2: which boards you have: the N2ADR filter board, the HL2 I/O board, the built-in power amplifier, and band data (Band Volts) for an external amplifier. Clock and latency options are under "Show advanced options".
Audio: the HL2 has no speaker or headphone output of its own, so receive audio and your microphone go through the PC. Pick your speakers and microphone, and play a test tone to check. If you've had no receive audio, this is the page to look at.
Look and feel: Kainos or Classic layout, UI scale, and which right-hand column tabs start open.
Summary: exactly what will change, before anything is set. Nothing changes until you press Apply.
The wizard is offered once after updating (choose "Not now" to skip it), and you can run it any time from Setup > Appearance > Kainos > Run setup wizard.

On a new install with Thetis on the same PC, the first-run question is now a choice: set up for my HL2, import my Thetis settings, or skip.

Installing
Run Kainos-1.0.6-x64.msi. It replaces any earlier Kainos version and keeps your settings. Kainos installs alongside Thetis and doesn't change it.

Kainos 1.0.5 - Requested fixes

Choose a tag to compare

@PNWHam-K7JUS PNWHam-K7JUS released this 06 Oct 18:27

Some requested fixes were completed and also did some minor UI changes.

kainos-1.0.4 - Issues Fixes

Choose a tag to compare

@PNWHam-K7JUS PNWHam-K7JUS released this 04 Oct 17:57

This version fixes a few user submitted issues. Please install and test at your own convinience.

73's

kainos-1.0.3 - Issue Fix

Choose a tag to compare

@PNWHam-K7JUS PNWHam-K7JUS released this 04 Oct 01:03

The DX spots at the very top of the pan adapter were hiding behind the the VFO's making them somewhat unusable. Controls were added and this should now resolve this issue/enhancement.

kainos-1.0.2

Choose a tag to compare

@PNWHam-K7JUS PNWHam-K7JUS released this 03 Oct 20:39

This version fixes an issue with the how Split and quick split work, this should now be corrected.

Kainos 1.0.1

Choose a tag to compare

@PNWHam-K7JUS PNWHam-K7JUS released this 03 Oct 17:25

Kainos development notes

This file records what Kainos changes compared with Thetis, and why, so that future work and upstream merges don't have to rediscover it. For the user-facing description, see ReadMe.md. For how the Thetis code fits together, see CODEMAP.md.

The project

Kainos is a fork of Thetis maintained by Justin Cron, K7JUS. It is based on the Hermes Lite 2 edition of Thetis by Reid Campbell, MI0BOT (mi0bot/OpenHPSDR-Thetis), at release v2.10.3.15.

The goal is a Thetis-based SDR application for the HL2 that adds AetherSDR-derived audio processing (AetherVoice on RX and TX) and built-in FreeDV, while staying close enough to Thetis to keep taking its updates.

Repository layout

Item Purpose
main on GitHub (kainos-main locally) Kainos main line
feature/* branches One feature per branch, merged into kainos-main once it works
upstream remote MI0BOT's HL2 Thetis. git fetch upstream brings in new Thetis releases
baseline-working tag Unmodified Thetis v2.10.3.15 that builds in Visual Studio 2026
kainos-identity tag Thetis renamed to Kainos (end of roadmap Phase 2)

Build Project Files/Source/Thetis_VS2026.sln as Release | x64. The program is built to Project Files/bin/x64/Release/Kainos.exe.

What Kainos changes

Identity

  • The program is Kainos.exe (AssemblyName in Thetis.csproj), with Kainos in the title bar, About window, splash screen, dialogs, tooltips, startup log and Midi2Cat.
  • New splash image (Resources/kainos-splash.png, 720x307). splash.cs now positions the status, progress and countdown overlay from the bottom edge (layoutOverlay), so any image size works.
  • New icons: Resources/kainos.ico is the program icon (Σ at 16-24px, flame + Σ at 32-64px, full art at 128-256px). Every form with an embedded icon uses the Kainos window icon.
  • The About window lists K7JUS as a contributor and checks PNWHam-K7JUS/Kainos (main, version.json) for new releases instead of upstream Thetis.

Coexisting with Thetis

Kainos keeps everything separate so that both programs can be installed on the same PC:

Thetis Kainos
Settings and databases %APPDATA%\OpenHPSDR\Thetis-x64 %APPDATA%\OpenHPSDR\Kainos-x64
Registry (cmASIO, startup log) HKCU\Software\OpenHPSDR\Thetis-x64 HKCU\Software\OpenHPSDR\Kainos-x64
Recordings Music\Thetis Music\Kainos
Firewall rules Thetis Allow ... Kainos Allow ...
Install folder OpenHPSDR\Thetis-HL2 OpenHPSDR\Kainos-HL2
Installer UpgradeCode Thetis's New GUIDs, so installing Kainos never replaces Thetis

The registry key name is shared between C# (clsCMASIOConfig.cs, clsProgressLog.cs) and C++ (cmASIO/hostsample.cpp, lib/portaudio-19.7.0/src/hostapi/asio/pa_asio.cpp). All of them must always use the same name.

One-time Thetis settings import

clsThetisSettingsImport.cs: on first start, if Kainos has no settings of its own and a Thetis settings folder exists, Kainos offers once to copy the Thetis folder and registry settings. The answer is recorded in thetis_import_offered.txt in the Kainos settings folder. The offer is skipped when -datapath: is used.

Compatibility with data saved under the old name

Some settings are saved with .NET BinaryFormatter, which records the assembly name. This includes the built-in country data (Properties.Resources.cty), meter settings and diversity memories. That data names the Thetis assembly, which no longer exists once the program is Kainos.exe. TypeRenameBinder in common.cs maps Thetis back to the current assembly. Without it, country lookups fail silently for everyone. Any new code that deserializes with BinaryFormatter must use TypeRenameBinder.Create().

AetherVoice on receive (roadmap Phase 4)

A C port of AetherSDR's exciter (src/core/ClientPudu.h/.cpp, commit 20d022d5). AetherSDR calls the two bands "Poo" and "Doo"; Kainos uses its UI names, Body and Clarity.

Piece Where
DSP module wdsp/aethervoice.c/.h, GPLv3. Double precision, WDSP create/x/destroy pattern, settings under the channel's csDSP lock
RXA wiring RXA.h (aethervoice member), RXA.c (create, destroy, flush, rate and buffer-size hooks), xrxa runs it just before xpanel, so the volume control still comes after it
Exports SetRXAAetherVoiceRun, SetRXAAetherVoiceMode, SetRXAAetherVoiceBody, SetRXAAetherVoiceClarity
C# dsp.cs (P/Invoke), radio.cs RadioDSPRX (RXAetherVoiceOn, RXAetherVoiceMode, SetRXAetherVoiceBody/Clarity, included in SyncAll and Copy)
UI setupKainos.cs: Setup > DSP > AetherVoice tab, built in code so setup.designer.cs stays identical to Thetis. Hooked in by two lines in setup.cs (constructor and ForceAllEvents). The settings apply to all four receivers

| AetherVoice window | frmAetherVoice.cs: a Windows Forms recreation of AetherSDR's AetherVoice editor (ClientPuduEditor, PooDooLogo, ClientCompKnob): glowing logo driven by GetRXAAetherVoiceWetRms, Even/Odd and ON buttons, six knobs (drag, Shift for fine, wheel, double-click to reset). It holds no settings of its own: it reads and writes the Setup tab's controls |
| Console | consoleKainos.cs: the Kainos Audio menu item (see below), and an AV button below RX EQ on the phone-mode panel (click toggles, right-click opens the window). Hooked in by one line in the Console constructor |
| Skins | The AV button borrows RX EQ's skin images through Skin.ImageAlias (a small Kainos change in Skin.cs, SetupCheckBoxImages), so it matches every skin without new image files |

Design decisions:

  • One source of truth. Setup's AetherVoice controls own the settings (and save them). The window and the AV button only change those controls, and Setup.applyAetherVoiceRX notifies the console, so all three stay in step.
  • Voice modes only. RadioDSPRX runs it only in LSB, USB, DSB, AM, SAM, FM, AM_LSB and AM_USB, re-checking on every mode change, because an exciter would distort CW and digital audio (including audio decoded over VAC).
  • Mono and binaural. Normally the panel copies I to both ears, so only I is processed. In binaural mode (panel copy == 0) I and Q are processed as left and right, sharing one low-band envelope like AetherSDR's stereo path.
  • Level. The RX AGC normalises audio to a peak of 1.0, the same full-scale level AetherSDR feeds the exciter, so AetherSDR's settings behave the same here. Heavy settings can roughly triple the peak level.
  • Verification. The port was compared sample by sample against AetherSDR's original code (both modes, mono and stereo, extreme and out-of-range settings): maximum difference 3e-4, from AetherSDR using float. Bypass is bit-exact. A real WDSP RX channel was also run through Kainos's own P/Invoke declarations, including the FM 192 kHz rate, buffer-size changes and binaural.

AetherVoice on transmit (roadmap Phase 5)

A second instance of the same module runs in the TXA chain.

Piece Where
TXA wiring TXA.h, TXA.c: xtxa runs it after the TX EQ and its meter, before FM pre-emphasis, the leveler, CFC, compressor, bandpass filters and ALC. The mic audio is mono in I after the panel (SetTXAPanelSelect swaps Q into I), so only I is processed
Exports SetTXAAetherVoiceRun/Mode/Body/Clarity, GetTXAAetherVoiceWetRms
C# RadioDSPTX (TXAetherVoiceOn, TXAetherVoiceMode, SetTXAetherVoiceBody/Clarity), voice modes only, re-checked on every TX mode change, included in SyncAll
Setup A Transmit group on the AetherVoice tab (chkAetherVoiceTX, udAetherVoiceTX...), applied to GetDSPTX(0)
TX profiles Eight columns (AetherVoiceTXEnabled, AetherVoiceTXMode, AetherVoiceTXBodyDrive/Tune/Mix, AetherVoiceTXClarityTune/Harmonics/Mix), hooked into updateTXProfileInDB, loadTXProfile, checkTXProfileChanged2, getTXProfileChangeReport and highlightTXProfileSaveItems by one line each
Window RX / TX buttons switch the AetherVoice window between the two sets of Setup controls. On TX the logo glows only while transmitting

Design decisions:

  • Profile columns are added when needed. database.cs is unchanged. ensureAetherVoiceTXColumns adds the columns to the TX profile table the first time a profile is saved, and a profile without them (built-in profiles, or databases from Thetis or earlier Kainos builds) loads with AetherVoice off and the default settings. Thetis only rebuilds its database when the version changes, which Kainos doesn't do, so this can't rely on the database upgrade.
  • Placement contains the bandwidth. Because the TX bandpass filters run after it, anything the exciter adds outside the TX filter is removed.
  • Verification. A real WDSP TX channel (USB, 200-2900 Hz) driven through Kainos's own RadioDSPTX: with AetherVoice off at a normal level, unwanted energy (opposite sideband plus anything more than 500 Hz beyond the filter edges) was 147 dB below the wanted signal; overdriving the mic into the ALC with AetherVoice off gave 50 dB; AetherVoice on at heavy settings (both modes), with the ALC also working, gave 57 dB. The remaining spread comes from ALC gain changes, not the exciter. Switching to CWU stopped the exciter and USB restarted it. This is a simulation: on-air checks into a dummy load are still required.

AetherTX channel strip (Phase 5b)

Users see these features as Kainos Audio (one menu item and window, with Receive and Transmit tabs). The code and these notes keep the AetherSDR-derived names (AetherTX, AetherRX, AetherStrip) so it stays clear where the processing comes from.

AetherSDR's channel strip on transmit: g...

Read more

Kainos 1.0.0

Choose a tag to compare

@PNWHam-K7JUS PNWHam-K7JUS released this 03 Oct 14:36

Kainos development notes

This file records what Kainos changes compared with Thetis, and why, so that future work and upstream merges don't have to rediscover it. For the user-facing description, see ReadMe.md. For how the Thetis code fits together, see CODEMAP.md.

The project

Kainos is a fork of Thetis maintained by Justin Cron, K7JUS. It is based on the Hermes Lite 2 edition of Thetis by Reid Campbell, MI0BOT (mi0bot/OpenHPSDR-Thetis), at release v2.10.3.15.

The goal is a Thetis-based SDR application for the HL2 that adds AetherSDR-derived audio processing (AetherVoice on RX and TX) and built-in FreeDV, while staying close enough to Thetis to keep taking its updates.

Repository layout

Item | Purpose -- | -- main on GitHub (kainos-main locally) | Kainos main line feature/* branches | One feature per branch, merged into kainos-main once it works upstream remote | MI0BOT's HL2 Thetis. git fetch upstream brings in new Thetis releases baseline-working tag | Unmodified Thetis v2.10.3.15 that builds in Visual Studio 2026 kainos-identity tag | Thetis renamed to Kainos (end of roadmap Phase 2)

Merging new Thetis releases

Read more