User Guide - N8SDR1/Lyra-SDR-cpp GitHub Wiki

Lyra User Guide β€” a mirror of the in-app guide (Help β†’ User Guide). Canonical source: docs/help/USER_GUIDE.md.

Lyra β€” User Guide

A friendly, plain-language guide to operating Lyra. Written for hams, not programmers β€” if you can click a menu, you can use this.

About this guide. It grows feature-by-feature as Lyra is built. Each section describes what a control does, where to find it, and the sensible defaults β€” so nothing ships undocumented. This file is also the source for Lyra's in-app Help section.

Maintainers: when a user-facing feature lands, add or update its section here in the same change. A feature isn't "done" until it's in this guide.


Tip β€” the "?" badge. Every panel has a small cyan ? at the far-right of its title bar (the panel's name is on the far left). Click it for a tiny menu: Help guide jumps this guide to that panel's section, Settings… opens the matching Settings tab. Quick way to learn or adjust any panel.

Current build

v0.25.21 Sheliak. See What's new in 0.25.21.

What's new in 0.25.21

  • Lyra Remote. A separate browser desk. Download it from Lyra Remote releases. How the page works is in the Lyra Remote wiki. Lyra does not host the page. Settings β†’ Remote is the password, the address lists, and the voice session. See Settings β†’ Remote.
  • Voice session. Start voice on the page proves the password once. Then MOX uses that browser's microphone and Tune sends a carrier from Lyra. The desk microphone, rack, and leveler come back when the session ends. A digital program on the radio computer is not asked for the password. End the voice session before that program transmits.
  • Brick3 first key. The first key after Lyra starts waits until PA enable is already in receive, so RF is there without a stop and start.
  • ALC on the TCI meter line. A fifth number, ALC headroom in dB, rides with the TX sensors. It is βˆ’200 while receiving.

What's new in 0.25.20

  • Diversity mixes the two converters on one frequency. Confirmed on Brick3SDR; the same path is ANAN-100D / 200D. The DIV chip opens the dock; ON arms the mix. Second RF is the RX2 jack (Ext1), not ANT2. Each band keeps its own gain and phase. The mix drops while you transmit or while PureSignal is live. Not a second VFO β€” that is SUB. See Diversity.
  • Band stack. Each band chip stores three frequencies (corner digit 1 / 2 / 3). A click from another band returns the slot you last used. A second click on the band you are already on steps to the next. SUB has its own three. Solar chips tune VFO A and do not step the stack.
  • Separate RX and TX filter lows. On the Filters dock, under the bandwidths (RX lo / TX lo, 0–500 Hz). The lock keeps them together; unlock and they stay apart. Older profiles copy the old shared low onto both sides.
  • Issue #17. Filter-board voltage follows the band you selected, including a return to a band already showing on the dial.

What's new in 0.25.19

  • HL2 analog J4 follows band hops again (Issue #17). v0.25.18 collapsed the I2C gap (delay=0) so two Pico writes rode one UDP packet and BYTE0 never latched β€” J4 stayed on leftover voltage (often 20 m) with no change on clicks. This build restores Thetis/Quisk delay=5 between every analog byte, still drops a leftover 0x1D burst, and only treats a hop as done when BYTE0 is on the wire. Recheck J4 pin 8 on 160 β†’ 80 β†’ 20 β†’ 15. Leave HL2 Band Volts on J3 off unless the amp is on the fan header. See Settings β†’ Filters / BCD.
  • PC audio. A stalled RX drain cannot grow IQ forever. Short PC-ring underruns fade instead of hard-zero. NB / AF gain cannot tear across worker threads. DIGU/DIGL below the Drive/Tune sliders toasts the status bar.

What's new in 0.25.18

  • HL2 analog band-follow (J4 pin 8). A leftover I2C write from the previous band is dropped, and the Pico only latches when BYTE0 of the new TX-Hz burst is on the wire. Fast hops (160 β†’ 80 β†’ 20 β†’ 15) should no longer leave 20 m stuck on 80 m voltage β€” if I2C delay=5 is in the build (that is 0.25.19; 0.25.18 used delay=0 and hung some Picos β€” Issue #17). See Settings β†’ Filters / BCD.
  • RX2 jack isolate on TX (two-converter radios). Default on. Grounds/disconnects the RX2 jack for the whole key-down, then restores it. ATT-on-TX still pads both ADCs; it does not open that analog path. See RX2 jack isolate on TX.
  • 11 m channel chips on the SUB pane. Same markers as the main panadapter. Click-tune mode follows Settings β†’ Hardware β†’ Region (AM vs USB/LSB), not a fixed US map.

What's new in 0.25.17

Second spectrum on two-converter radios. Brick3SDR, ANAN-100D / 200D, and other adcCount > 1 boxes get a SUB panadapter when SUB is on (own waterfall, band-plan markers, click-tune). HL2 / BrickSDR2 still draw RX2 as the green overlay on the main pane.

  • SUB RX floor / ceiling β€” Settings β†’ Visuals, two extra rows, only on dual-ADC radios. One pair drives SUB pan and SUB waterfall. Remembered per RX2 band. Drag the SUB scale edge the same way as Main. Main RX / TX dB stays independent.
  • SUB layout β€” Settings β†’ Visuals β†’ Use a saved layout when SUB is on. Off (default): SUB splits the pan in place without stretching the control docks. On: SUB recalls a named View β†’ Layouts slot (save it with SUB already on). Turning SUB off always restores the layout that was running just before SUB came on.
  • Click-tune. SUB on: a click on the SUB pane tunes RX2. SUB + SPLIT: a click on the SUB pane moves VFO B only (TX offset), not RX2.
  • Trace / palette on the SUB pane follow Settings β†’ Visuals (same look as Main). Scale is the SUB floor/ceiling pair.

Brick3 TX keys like BrickSDR2 (Enable PA + MOX + Drive β€” no dummy-load arm). Still beta testing: first RF into a dummy load.

ANAN Protocol 2 TX mapping. Pick the marketed model in Settings β†’ Hardware. ANAN-10 / 10E follow BrickSDR2 TX. ANAN-100 / 100B / 100D / 200D follow Brick3SDR TX (on-air, independent Enable PA). G2 / G2-1K still use the dummy-load arm. 7000DLE / 8000 stay locked.

PureSignal dock β€” ON, 2-tone, Voice (male-voice shaped noise + level), ATT, FB, Reset. Engine chips (st / cal / D0 / D1) live on Amp View, not the compact strip.

PC speaker volume β€” Windows per-app mixer for Lyra is remembered across Stop / Start and relaunch (separate from Vol / AF).

What's new in 0.25.16

Brick3 Beta Testing. Protocol 2 RX + TX on Brick3SDR (Angelia class). Discover MAC 02:B3, pick Brick3SDR in Settings β†’ Hardware. Dummy load first.

  • MAP β€” per-band ANT + RX jack chips. Brick3: 2 ANT; rear RX2 is Ext1 (receive jack).
  • Auto Step β€” Protocol 2 ADC pad 0–31, frozen while keyed, unwind toward 0. Overflow is gated on the selected ADC.
  • Per-band PureSignal pad β€” last ATT remembered per TX band.
  • PS Reset β€” restarts the calibrator in RX or TX. Clears st / cal / correcting and Amp View until a new collection. ATT is left as-is.
  • Plug the sampler into the Brick3 rear PS jack (the coupler path). There is no Internal / EXT1 picker.

What's new in 0.25.15

  • Auto Step 0–31 on Protocol 2. DSP+Audio Step walks the ADC pad (Thetis Auto ATT: +3 dB on confirmed clip, βˆ’1 dB toward 0 when clear). Frozen on TX. Default off. S-meter still adds ATT β€” Auto Step does not subtract LNA on P2.

  • Protocol 2 TX follows the VFO. After the first QSO, moving the dial (SSB, CW, AM, FM) now retunes the transmitter on BrickSDR2. Previously TX stayed on the frequency you started on until you restarted the stream. RIT / XIT / SPLIT were not required to see it.

  • Arrow keys from the keyboard. Left / Right = 1 kHz, Up / Down = 10 Hz, on the focused VFO. Click a digit on the LED first if you want the arrows to step that place instead.

  • Startup profiles. Lyra no longer always loads Default (SSB) on launch when you last ran FM or another mode. A per-mode binding wins; otherwise the last-used profile; Default is the first-run fallback.

  • Tuning Mem. Left-click on Mem still opens the recall list after the radio has been idle.

  • How to create a profile. Help β†’ Profiles now has a step-by-step: dial the live chain, Save As / dock Save with a new name, optional mode-family bind.

What's new in 0.25.14

  • TCI TUNE / TRX / CHRONO keying restored. TUNE keys the same path as the TX panel TUN button. TRX keys MOX the same way the MOX button does. CHRONO TX-audio frames use the rate, sample count, format, and channel count already negotiated with the client. A TCI socket flicker no longer unkeys. Bench-checked with MSHV, WSJT-X, JTDX, and SDRLogger+. TUNE/TRX still need β–Ά Start. STOP still does not drop MOX (0.25.13).

What's new in 0.25.13

  • TCI STOP no longer drops MOX. WSJT-X / JTDX send STOP when TCI RX audio goes silent during TX. 0.25.11 stopped closing the radio on that command, but still unkeyed. STOP echoes start while the session is running. TUNE/TRX still need β–Ά Start. Dropped TCI TX-audio owner still unkeys.

What's new in 0.25.12

  • Rec default folder is writable. Sessions go to %USERPROFILE%\Lyra\Recordings. A Start-Menu launch used to land Rec under Program Files (not writable) so Rec looked like it did nothing. An old empty / relative / install-folder path is migrated on load.

What's new in 0.25.11

  • First-run FFTW and companion apps no longer overlap. Hardware Startup (SDRLogger+, Apps auto-start, the two generic slots) waits until the FFT plan cache and the radio layer are up. A 0.25.10 first launch could fire Logger while FFTW was still building and then vanish. Let optimizing finish β€” Lyra stays open, then Logger starts.
  • TCI STOP does not close the radio. Handshake sends start only when the session is running; otherwise stop then ready. Dropped TCI TX audio unkeys. TUNE/TRX are refused until you press β–Ά Start.
  • HL2 analog IO skips a redundant same-Hz write on a fast return to the same band (under half a second).

What's new in 0.25.10

  • HL2 analog band-follow is independent of N2ADR OC. Protocol 1 always writes TX frequency to the IO board so analog filters follow the band. Enable N2ADR / IO board only drives OC / LPF relays. See Settings β†’ Filters.
  • NR-C keeps the panadapter rectangular. The reducer still cleans RX audio. The spectrum stays on uncleaned IQ, so a strong station does not paint a 70–90 kHz slope. The audio mask is full Wiener again (no occupied-bin mix) so the speaker floor drop matches pre-split NR-C. Floor default is βˆ’24 dB (older βˆ’12 migrates). See Captured noise profile (NR-C).
  • Session recorder β€” RX WAV on Protocol 1 and Protocol 2. Panadapter snapshots work on Vulkan (then screen, then widget). See Session recorder.

What's new in 0.25.9

  • NNR starts on Standard. A fresh install picks the lighter Standard model (the 0.25.8 installer picked Premium). A model you already saved is kept. NNR is still off until you turn it on. The Mask tooltip suggests trying βˆ’25 to βˆ’40. See Row 3 β€” Noise Reduction.
  • PWR needle tracks voice peaks. Between ticks the power meter keeps the loudest forward-power sample, so a syllable shows instead of a quiet average. Factory peak-hold for that needle is 700 ms if you have not saved your own. See Meter panel.
  • TCI CW terminal β€” a logger can hold the key line up between letters and correct the callsign while you are still sending. Prosigns (|SK|) and speed steps (< / >) work in the text. See CW keying over TCI.
  • TCI TX sensors stay live at receive β€” mic, forward power, peak power, and SWR keep updating while you are listening, so a client's TX meters do not blank between overs.

What's new in 0.25.8

  • WDSP 2.10 β€” bundled DSP engine is NR0V 2.10 (GetWDSPVersion 210). First start after the update may re-run FFT optimization once (new wisdom file). Mac / Linux engine binaries are not in this installer.
  • NNR (neural noise reduction) β€” Audio panel NNR button. Default off. While on: Model Standard (default) or Premium, and a Mask slider βˆ’10 (least) to βˆ’50 (most); default βˆ’40. Premium is the heavier model and uses more CPU; Standard is the everyday start, and Premium with a mask around βˆ’40 is the setting to try once you are listening. NNR and classic NR (EMNR Modes 1–4) cannot run together; NR-C still can. Hover the NR row for a short cheat sheet. See Row 3 β€” Noise Reduction.
  • PureSignal Amp View β€” still live on HL2 (Protocol 1) and Brick (Protocol 2). Display ABI is version-gated so the plot stays correct on 2.10.

What's new in 0.25.7

  • TCI handshake β€” Lyra sends start; then ready; and echoes the client's own start; / stop;. WSJT-X and JTDX no longer report β€œTCI SDR is not switched on.” MSHV and Open SSTV still connect. Bench: RX and key-up on MSHV, WSJT-X, and JTDX. Settings β†’ Network: keep both emulate boxes on (default). See Settings β†’ Network (TCI).
  • Apps recommended links β€” Settings β†’ Apps lists Open SSTV, MSHV / WSJT-X, VarAC, and midi2tci (install yourself, then Browse). See Tested with and recommended.

What's new in 0.25.6

  • HL2 analog band-follow β€” Protocol 1 always writes TX Hz to the IO board (I2C2 / 0x1D). That is not gated on Enable N2ADR / IO board (that box is OC / LPF relays). Protocol 2 Brick/ANAN is unchanged. See Settings β†’ Filters / BCD.

What's new in 0.25.5

  • USB encoder β€” Settings β†’ Hardware β†’ Navigation: a HID mouse-wheel knob (the usual 1-knob USB encoder) tunes the focused VFO by the Tuning Step. Windows only. See Navigation (USB encoder / HID wheel).
  • FM 1750 Hz burst β€” hold MOX / PTT, tap 1750. Default length is 2 s (was 0.5 s). Pick 0.5 / 2 / 3 / 4 s under Settings β†’ Hardware β†’ Band plan. Chip is shown for IARU Region 1 (Hardware override for other regions). See Tuning panel.
  • Extra VFO Step values 6.25 / 8.33 / 12.5 kHz. FM RPT offset can be typed in kHz; 7.6 MHz preset for 70 cm (βˆ’7600 kHz typical).
  • RX EQ dock title no longer shows as TX EQ.
  • MIDI is not native. Run a MIDIβ†’TCI sidecar from Settings β†’ Apps (Browse to the .exe, point it at Lyra's TCI port 40001). See MIDI controllers (sidecar).

What's new in 0.25.4

  • Apps β€” Settings β†’ Apps plus the header Apps chip launch named companion programs (WSJT-X, fldigi, SSTV, …). Auto-start is off unless you tick it; those launches still wait until after Hardware Startup.
  • No in-radio RTTY modem β€” RTTY / FT8 / SSTV belong in those programs (TCI or VAC). CW send and CW decode stay in Lyra (paddle, keyboard, TCI keyer, CW Dec chip). DX-cluster RTTY labels are unchanged.
  • Memory β€” click a cell in Settings β†’ Bands β†’ Memory to edit (no Save button). Repeater Offset / UL / DL / Burst columns as before.
  • Xvtr out-of-band IF clamp on the VFO was removed; keep IF inside the radio's native window yourself. Ten-digit RF from 0.25.3 still applies.

What's new in 0.25.3

  • Xvtr VFO cap β€” the frequency LED used to stop at 55.999.999 Hz. It now has ten digits so 2 m / 70 cm / 23 cm RF can sit on the dial (signed-int ceiling ~2.147 GHz). TCI vfo_limits match. See Xvtr (transverters).
  • Slot RF low/high/LO were already MHz in the editor β€” that was not the 55 MHz stop. Settings β†’ Hardware region does not rewrite Xvtr slots; set 144–146 vs 144–148 yourself.

What's new in 0.25.2

  • NR-C restore β€” the last saved profile loads on restart. NR-C itself starts on only if it was on when you quit. See Captured noise profile (NR-C).
  • TUNE and 2-tone sit on the dial (USB/LSB/DIG). CW TUNE is on the RX marker, same as keyed CW. MOX was already correct.
  • TX span matches RX β€” Zoom no longer jumps when you key (sip1 is 96 kHz; RX may be 192 kHz). At Zoom 1Γ— / 192 kHz RX, TX cannot show more than 96 kHz.

What's new in 0.25.1

  • NR-C tried an occupied-bin mix so voice/CW edges stayed brick-wall in audio. That mix also lifted the audio noise floor; 0.25.10 dropped it once the panadapter used uncleaned IQ.
  • Xvtr chips on the Band row β€” four transverter slots; VFO stays in RF; right-click the slot editor. See Band panel.
  • Anti-aliasing (MSAA) β€” Settings β†’ Visuals Off / 2Γ— / 4Γ— / 8Γ— (restart). See Graphics backend.
  • Protocol 1 Brick / ANAN still show in Discover; Open is refused. Flash Protocol 2 if you can. See Supported radios.

Contents


Start here β€” Quick Basics

Brand new to Lyra? This is the five-minute on-ramp β€” do these in order and you'll be listening, and talking, fast. Every step is covered in more depth in the sections that follow.

Currently supported: Lyra is a native Windows app β€” Windows 10 (64-bit, v1809+) or Windows 11, a DirectX 11 / OpenGL 3.3 GPU (built-in graphics are fine), and a wired Ethernet link to a Hermes Lite 2 / 2+ (Protocol 1) or a BrickSDR2 on Protocol 2. (See Supported radios and System requirements.)

Brick on Protocol 1: Discover may still list it; Open is refused. Flash P2 (Brick FPGA help: Anton (linoobs) on Discord). Details below.

  1. Wire it up πŸ”Œ β€” connect the radio to your PC with an Ethernet cable (wired, not Wi-Fi) and power it on.
  2. Launch & connect πŸ“‘ β€” open Lyra; it lists any radio it finds. Double-click your radio to open it (or use Add by IP for a fixed address). First launch spends a few minutes tuning DSP to your CPU β€” a one-time step; let it finish.
  3. Start the radio ▢️ β€” click β–Ά Start in the top header.
  4. Hear a signal πŸ”Š β€” Settings β†’ Audio β†’ Out: pick "HL2 audio jack (AK4951)" (headphones in the radio) or your PC speakers/headset, turn the Volume up, then click the panadapter/waterfall to tune and set the mode (USB above 10 MHz, LSB below, or AM/FM).
  5. Talk πŸŽ™οΈ β€” see First voice setup (SSB / AM / FM).

If something's off: no radio found β†’ check the wired cable + power; Open says Protocol 1 ANAN β†’ that row is a Brick/ANAN still on P1 β€” flash P2, then Open the Protocol 2 row (see Supported radios); no audio β†’ check the Out device and Volume; can't transmit β†’ see First voice setup.


Supported radios

Lyra opens these today:

Radio Protocol Notes
Hermes Lite 2 / 2+ Protocol 1 Full RX + TX. HL2+ adds the on-board mic / headphone jacks.
BrickSDR2 Protocol 2 only Full RX + TX, SUB / SPLIT, PureSignal.
Brick3SDR Protocol 2 only Brick3 Beta Testing. Angelia-class (2 ADC, Alex, 2 ANT, RX2 jack). Pick Brick3SDR in Settings β†’ Hardware. TX keys like BrickSDR2 (Enable PA + MOX + Drive β€” no dummy-load arm). First RF into a dummy load. With SUB on, a second panadapter opens. RX2 jack isolate on TX default on. Diversity mixes both converters on one frequency (RX2 jack, not ANT2) and turns SUB off.

A Brick (or classic ANAN) that still answers Protocol 1 can show in Discover. Lyra will not Open that row. Protocol 1 TX in Lyra is the Hermes Lite 2 layout (PA, drive, attenuator, C&C, TX I/Q). A Brick on the old P1 FPGA answers as generic Hermes, not HermesLite β€” connecting it would send the wrong bytes (no RF, wrong T/R / PA, wrong power, RX wide open while keyed, or a dirty first burst). We refuse rather than half-drive it.

What to do: flash a Protocol 2 FPGA, rediscover, Open the Protocol 2 row. For Brick flash / image help, ask Anton (linoobs) on Discord. Dummy load on the first TX after a flash.

Classic ANAN that can run P2 should do the same, then pick the marketed model in Settings β†’ Hardware (discovery Hermes still defaults to BrickSDR2). Leftover P1 rows stay refused.

Model TX posture
ANAN-10 / 10E (and HERMES) Like BrickSDR2: on-air, Enable PA + MOX + Drive, no dummy-load arm. Classic Alex. One ADC β€” SUB is overlay, not a second pane.
ANAN-100 / 100B Like Brick3SDR TX (on-air, independent Enable PA). One ADC + classic Alex β€” SUB overlay, not a second pane.
ANAN-100D / 200D Like Brick3SDR TX and two converters: SUB opens a second panadapter. Diversity is the same path as Brick3. RX2 jack isolate on TX default on.
ANAN-G2 / G2-1K Dummy-load Arm P2 TX until a tester validates RF. Two ADC.
7000DLE / 8000 Stay locked.

Why "Lyra"?

The openHPSDR naming tradition leans Greek. The radio hardware itself is Hermes (the messenger god). Thetis β€” the venerable reference PC client β€” is named after the sea-nymph mother of Achilles. New projects in this ecosystem have historically reached into the same mythology for names that share the family.

Lyra continues that tradition:

  • Apollo's lyre was the instrument that turned invisible vibrations in the air into music β€” which is essentially what an SDR does: it takes vibrations in the electromagnetic field, digitizes them, and turns them back into something you can hear.
  • The constellation Lyra contains Vega β€” a star with a long history of amateur-radio significance (Vega is the zero point of the astronomical magnitude scale, and was the first star ever photographed). That's the lyre + Vega you'll find as the faint watermark on the panadapter.
  • It's short, pronounceable in every language the HPSDR community uses, and stays well clear of any existing SDR software or hardware product name.

Lyra is built by Rick Langford (N8SDR). This version is a ground-up native C++23 / Qt 6 rebuild (Qt Quick + Vulkan/RHI) of the original Python Lyra β€” same spirit, no Python and no GIL anywhere. Licensed GPL v3 or later, to align with the wider openHPSDR / WDSP ecosystem.

73 and good DX.


System requirements

Lyra is a native 64-bit Windows application. Its panadapter and waterfall render on the GPU, so graphics capability matters more here than in a typical desktop app β€” but Lyra runs comfortably on modest hardware, and integrated graphics are fine.

Component Minimum Recommended Maxed+
Operating system Windows 10 64-bit, v1809 (build 17763) or newer; or Windows 11. (32-bit not supported.) Windows 11, or Windows 10 22H2 Windows 11, current release
CPU (Intel) 4th-gen Core (Haswell, ~2013) or newer β€” e.g. Core i3-4000 series Core i5 / i7, 10th-gen or newer Core i7 / i9, 12th-gen or newer
CPU (AMD) Any Ryzen, or an AVX-capable FX/A-series Ryzen 5 / 7, 3000-series or newer Ryzen 7 / 9, 5000-series or newer
Cores Dual-core (quad preferred) Quad-core+ with AVX2 High-core-count with AVX2
Memory 4 GB (8 GB comfortable) 16 GB 32 GB
Graphics DirectX 11 / OpenGL 3.3-capable (integrated OK) Vulkan 1.1-capable Vulkan 1.3-capable dedicated GPU with ample VRAM
  β€’ NVIDIA GeForce GT 700-series or newer GeForce GTX 10-series / RTX or newer GeForce RTX 30/40-series
  β€’ AMD Radeon HD 7000 (GCN) or newer, incl. integrated Radeon RX 400/500 / Vega / RX 5000–9000 (RDNA) Radeon RX 6000/7000/9000 (RDNA 2/3/4)
  β€’ Intel HD Graphics 4000 (Ivy Bridge) or newer / UHD / Iris UHD 620 / Iris Xe / Arc Arc A-series or newer
Storage ~300 MB free (SSD recommended) SSD, ~500 MB free NVMe Gen4 SSD
Network 100 Mbit wired Ethernet to the radio Gigabit Ethernet, ideally a dedicated NIC Dedicated Gigabit / 2.5 GbE NIC, wired straight to the radio
Display 1600 Γ— 900 1920 Γ— 1080 Dual / triple monitor; 1440p or 4K

About the display minimum β€” what you get at 1600 Γ— 900. Lyra's front panel is a set of dockable panels, and they need real estate, so it's worth being precise about what the minimum buys you rather than leaving you to find out.

At 1600 Γ— 900 Lyra ships arranged with the panels you need to operate, all of them fully reachable:

Panel What it's for
Panadapter + waterfall See the band, click to tune
Tuning The VFO, step, mode, SUB / SPLIT, RIT / XIT
Band Band switching
Filters Sample rate, RX and TX bandwidth
Audio LNA, volume, AF gain, mute, and the RX DSP row (NB / NR / ANF / LMS / SQ …)
Meter S-meter on receive, power / SWR / ALC on transmit
TX Drive, mic gain, ATT, PROT, VOX, Tune, MOX

The remaining panels are closed by default at that size and available any time from the View menu β€” but each one needs screen space you don't have to spare at 1600 Γ— 900, so opening them means giving something else up:

Panel Roughly needs
Solar / Propagation ~780 px of width on its own β€” it's a wide strip
Display Panadapter zoom, frame rate, waterfall rate, peak hold
Profiles TX/RX profile picker and Save

At 1920 Γ— 1080 you can have all of them open at once with room to spare, which is why that's the Recommended tier.

Why not 1366 Γ— 768? It's height, not width, that binds. Below about 900 px there simply isn't room for a usable panadapter and the operating panels without something being cut off the bottom β€” so 1366 Γ— 768 doesn't work even for the minimal set. Lyra will still start on a smaller screen, but the window won't be able to shrink to fit it.

About the graphics tiers. Lyra draws the spectrum and waterfall on the GPU. It works on any DirectX 11 / OpenGL-class card (the Minimum tier), but the Vulkan path is smoother, uses less CPU, and is vendor-neutral β€” it runs equally well on NVIDIA, AMD, and Intel. That's why Recommended and Maxed+ call for a Vulkan-capable GPU: it's what lets high-FPS waterfalls scale cleanly across large or multiple monitors.

What the higher tiers actually buy you. Lyra runs fine on the Recommended spec β€” the extra CPU/GPU headroom in Maxed+ isn't about whether it runs, it's about running everything at once without the machine breaking a sweat: dual receivers, the full TX speech-processing rack, spots, high-refresh spectrum and waterfall on a big screen, and comfortable margin for the heavier DSP features on the roadmap.

NNR and CPU. Neural noise reduction adds CPU in the receive audio chain. Standard is the factory default. Premium uses more and is comfortable on the Recommended tier and up. On Minimum, prefer Standard or classic NR if the machine is already busy (dual receive, a high waterfall rate).

Two things that matter on any tier:

  • On first launch Lyra tunes its FFT math to your CPU and caches it β€” a one-time step that takes a few minutes (a faster CPU finishes sooner). You can rebuild it later from Settings β†’ Backup & Restore after a CPU change.
  • A wired connection to the Hermes Lite is the single biggest factor in glitch-free audio. Wi-Fi in the radio path is the most common cause of pops and dropouts.

Getting started

1. Know your hardware

  • HL2 (plain) β€” a stock Hermes Lite 2 board. Received audio is decoded on the PC and played through whatever output you pick in Settings β†’ Audio.
  • HL2+ β€” the HL2 base plus the AK4951 audio add-in board (and the updated HL2+ gateware). Adds on-board audio routing and a microphone input. The HL2's own headphone jack is the default, lowest-latency audio path.
  • BrickSDR2 β€” Protocol 2 only. See Supported radios if Discover shows a Protocol 1 Hermes row that will not Open.

2. Network

The HL2 is a Layer-2 Ethernet device speaking HPSDR Protocol 1 over UDP port 1024. It has to be reachable on your local network:

  • Direct Ethernet PC ↔ HL2 β€” simplest, no switch needed.
  • Same LAN through any gigabit switch β€” also fine.
  • Across routers β€” not supported (discovery is broadcast-only).

The first time you run Lyra, allow it through Windows Firewall so it can talk to the radio (inbound UDP 1024 for lyra.exe).

3. First contact

Connecting to the radio lives in Settings β†’ Hardware β€” open Settings (Ctrl+, or File β†’ Settings…), pick the Hardware tab, and find the Radio section. Or just use β–Ά Start on the toolbar:

  1. Power on the HL2 / HL2+ and make sure it's on the same network.
  2. Click β–Ά Start on the toolbar (or Discover β†’ Open in Settings β†’ Hardware β†’ Radio). Lyra also auto-connects to the last radio you used, so it may already be running.
  3. You should see a live spectrum and hear the band noise floor. β–  Stop disconnects.

4. First-launch note (one-time)

The very first time Lyra runs (and after a settings reset or a DSP-engine update such as v0.25.8), it tunes its signal-processing math for your CPU β€” a one-time "FFT optimization". A setup window appears with the Lyra logo, a few tips, and a progress bar; it takes a few minutes once, then Lyra opens automatically and every launch after is fast. Please let it finish and don't close it β€” the main window opens on its own when it's done. (You can force a fresh optimization later from Settings β†’ Backup & Restore β†’ "Rebuild FFT optimization on next start", e.g. after a CPU change.)

5. Tune and listen

  • Tuning panel β€” set the RX1 frequency on the LED readout, and pick the mode (USB/LSB/CW/…) and step right under the VFO; see Tuning panel.
  • Filters panel β€” sample rate, RX/TX bandwidth on the top line, and RX lo / TX lo directly under them; see Filters panel.
  • Band panel β€” jump between bands.
  • Audio panel β€” the DSP + AUDIO strip: Vol / MUTE, the AGC cycle, and Noise Reduction (NR or NNR, plus NR-C). Choose the output device in Settings β†’ Audio.
  • Panadapter β€” click/drag/wheel to tune; drag the right edge to set the signal-strength scale. See The panadapter.

Finding your version

The version is shown in the title bar and under Help β†’ About Lyra…. Include it when reporting a problem so it can be matched to the exact build.


Multiple radios & switching rigs

Lyra can manage more than one radio β€” a Hermes Lite 2 / 2+ on Protocol 1 and a Protocol-2 radio such as a BrickSDR2 (P2 FPGA required), Brick3SDR (Angelia / ANAN-100D class β€” 2 ADC + Alex), ANAN G2, or classic ANAN-10 / 100 / 200 series on P2 (pick the marketed model) β€” and keep separate settings for each. Every saved radio is a "rig," and each rig remembers its own:

  • radio model, filter board, and antenna choice;
  • audio output path and device β€” e.g. Hermes out its own headphone jack, the Brick out your PC soundcard β€” set once per rig and remembered (see Setting up audio output);
  • band / frequency / mode memory, frequency calibration, meter and DSP settings, and profile bindings.

You still connect to one radio at a time; "rigs" are about keeping each radio's configuration in its own drawer so nothing bleeds between them. Start opens the active rig only. If an HL2 and a Brick are both on the LAN, pick the rig you want first, then Start β€” don't try to stream two radios in one Lyra window. (A Start crash when two radios were listed is fixed in current builds.)

The Rig menu

The Rig menu (in the menu bar at the top of the window) lists your rigs with the active one checked, plus:

  • Add rig… β€” create a rig by name; the MAC address is optional, so you can pre-stage a rig before its hardware is on the bench.
  • Rename active rig…
  • Manage rigs (Settings β†’ Hardware)… β€” opens the radio list.

A rig is also created automatically the first time you connect to a new radio.

Switching rigs

Pick a rig from the Rig menu. Because Lyra loads a rig's settings at startup, switching restarts the app so the new rig comes up cleanly:

  • Restart now β€” Lyra relaunches on the chosen rig and (if Auto-start radio on launch is on) connects to it.
  • Later β€” the switch takes effect on your next launch.
  • Cancel β€” stay on the current rig.

Lyra won't switch while you're transmitting β€” unkey first. Opening a radio in Settings β†’ Hardware β†’ Radio that belongs to a different rig offers to switch to that rig for you.

Because each rig keeps its own audio path, you set Hermes β†’ the radio jack and the Brick β†’ PC audio just once each, and Lyra selects the right one automatically every time you switch β€” no re-choosing the output.


The header (top toolbar)

The strip across the top, between the menu bar and the panels:

  • β–Ά Start / β–  Stop β€” connect to the radio and start streaming, or stop it. On Start, Lyra connects to your saved radio (or scans and opens the first one found). The button is green when stopped (a click starts you) and red when running (a click stops you).
  • Connection status β€” green "Connected to …" while streaming, red "Disconnected" when not, and amber "Connecting…/Scanning…" during a connect attempt.
  • DSP / Options chips β€” labelled groups of toggle chips: TX DSP: (the mic-rack panels β€” EQ / Speech / Combinator / Plating), RX DSP: (RX EQ), and Options: β€” CTUN (centre-tune lock), Tuner (the manual-ATU tuning memory), CW / CW Dec (the CW console and the RX decoder), WF-ID (arm the waterfall callsign ID), PureSignal (the compact PS dock), and Amp View (the PS transfer-curve plot). A lit chip means that panel is open, or that toggle is on. PureSignal and Amp View sit at the end of the Options row. Apps sits after Amp View β€” named companion programs (not CW; CW uses CW / CW Dec).
  • ● TCI β€” the TCI-server indicator, just after the connection status. Green ● TCI: N when one or more programs (logger, cluster, etc.) are connected, showing the client count; amber ● TCI when the server is enabled but idle. Hidden when TCI is off. See Settings β†’ Network (TCI).
  • β˜… Spotted! β€” appears just before the clocks when your own callsign is spotted on the DX cluster (if the toast/badge option is on). See DX-cluster spots.
  • ⬆ vX.Y.Z (only when present) β€” an update is available; click it to open the release page. See Updates.
  • Clocks β€” a local clock (amber) and a UTC / Zulu clock (cyan, ending in Z), centered in the header. They read straight off your PC clock. Right-click either clock to Check clock drift now… β€” Lyra asks a network time server how far off your PC clock is and tells you (under 1 sec = fine). This matters for the NCDXF beacons: their rotation is locked to UTC on 10-second slots, so a PC clock that's off by a few seconds makes the beacon markers / Follow track the wrong station. If your clock is off, a ⚠ appears on the UTC clock; use the same right-click menu's Sync time (w32tm /resync) to fix it (Windows).
  • Weather badges β€” ⚑ lightning, πŸ’¨ wind, ⚠ severe β€” appear toward the right edge when an alert is active and flash on the most serious tier. Hidden when all-clear. See Weather alerts.

The status bar (bottom β€” HL2 telemetry)

The thin strip across the bottom of the main window. While a stream is connected, it shows live HL2 telemetry read from the EP6 status rotation:

HL2:  T 24.7Β°C    V 12.3 V    PA 0.00 A
  • T β€” board temperature in Β°C, sampled every ~400 ms.
  • V β€” HL2 supply voltage in volts (a normal HL2 / HL2+ reads 12.3 – 13.0 V; well below ~11 V suggests the supply is sagging under load).
  • PA β€” combined PA drain current in amps. The key telemetry during transmit:
    • β‰ˆ 0 A at rest (PA bias disabled, gateware idle).
    • ~0.2 A at idle bias (PA Enable ON, MOX keyed, Drive = 0 %).
    • ~1.8 A at full output on a bare HL2+ on the dummy load.
    • Goes BOLD RED at β‰₯ 50 mA β€” visual confirmation that the gateware is producing RF. If you see red and your wattmeter reads zero, something in the chain (relay, BPF, antenna) is eating the RF.

n/a in any field means the gateware hasn't delivered that slot yet (briefly at startup) or the telemetry decode is mid-rotation. A persistent n/a is a stream / gateware issue worth investigating.

The PA-current readout is the single most useful TX bench instrument Lyra exposes. It's the gateware's own measurement, independent of any external watt-meter, and tells you whether the PA is actually biased + drawing current the way it should be for the drive you commanded.


Getting around the window

Lyra's window is built from dockable panels β€” like a workbench you arrange to taste. Lyra opens full screen (maximized) by default β€” the way it's meant to be run β€” in a curated default layout (panadapter on top, control panels in a row beneath).

  • Move a panel β€” drag it by its title bar. As you drag, a cyan highlight previews where it will land:
    • against an edge of the window β†’ docks along that edge;
    • over the left/right/top/bottom third of another panel β†’ splits that panel and shares the space;
    • over the centre of another panel β†’ stacks as a tab behind it;
    • out on its own (away from any panel) β†’ floats as a free window. Drop when the highlight shows the spot you want. Double-click a title bar to toggle floating.
  • Resize panels: drag the separators between them β€” they're the thin bars that brighten cyan when you hover. Drag the divider between the panadapter and waterfall the same way; the waterfall stays clean even squashed into a thin strip, and its position is remembered with your layout.
  • Show / hide panels: the View menu lists every panel; tick or untick to show or hide it.
  • Lock the layout: View β†’ Lock panels (or Ctrl+L) freezes everything β€” panels can't be moved, floated, closed, or resized β€” so you can't disturb your arrangement by accident during operating. The move cursor disappears on locked title bars as a reminder.

Undo a bad drag. Dropped a panel somewhere you didn't mean to? View β†’ Layouts β†’ Undo layout change puts it back where it came from. It remembers the last few arrangements, so you can step back a couple of times β€” and it now survives a restart, so a layout you wrecked just before closing is still recoverable the next morning. (It only tracks panel moves β€” it won't re-open a panel you closed; use the View menu for that.)

Named layouts. View β†’ Layouts gives you four save-able slots plus the built-in Lyra default β€” five arrangements you can recall in one click:

  • Save to a slot β€” snapshots the current arrangement (panels and the spectrum/waterfall divider) into that slot; name it whatever you like.
  • Recall a slot β€” snaps the window back to that arrangement.
  • Lyra default β€” returns to the built-in factory arrangement. (Use this if a layout ever gets scrambled.)

Recalling a layout restores only your main panels β€” it won't pop open the TX/RX DSP-rack or CW tool windows you reach from the header chips.

The factory arrangement is the set of panels you need to operate a radio, and it is built to fit the minimum supported display (1600 Γ— 900): the panadapter and waterfall across the top, then Tuning Β· Meter Β· Filters side by side, with Audio, Band and TX below. The optional panels β€” Solar/Propagation, Display, Profiles and the tool windows β€” start closed, because at the minimum size there is nowhere for them to go. On a bigger screen open whatever you like from the View menu; see System requirements for what fits at what size.

Your layout is remembered per monitor setup. Lyra keeps a separate arrangement for each combination of screens you use it on, so plugging into a projector, undocking a laptop, or running it on a small second machine cannot overwrite the layout you built on your main display β€” each comes back the way you left it. Window size and the spectrum/waterfall divider are remembered the same way, and survive a lock + restart. To move a layout to another PC or keep a backup, see Backing up & sharing your settings.

Share a layout with someone. Settings β†’ Backup & Restore β†’ Share a layout has Export layout… / Import layout… buttons that save just your panel arrangement to a small .lyralayout file. Post that file (and a screenshot) on Discord or email it, and the other person imports it in one click β€” their panels rearrange to match. Only the arrangement travels: no settings, no radio address, and no window size, so a shared layout drops cleanly onto any screen. (Importing applies it live; use Save current layout to a slot afterward if you want to keep it.)

Opening Settings: File β†’ Settings…, or press Ctrl+,.


The panadapter (spectrum display)

The panadapter is the live picture of the radio spectrum β€” signals show up as peaks rising out of the noise floor. Lyra draws it with a glassy, glowing look that takes advantage of your graphics card.

Tuning on the panadapter:

A TUNE A / TUNE B tag follows the cursor so you always know which VFO a click or wheel step will move. TUNE A is orange and means RX1 / VFO A. TUNE B is lime-green and means VFO B (SPLIT) or the second receiver while SUB is on and that VFO is focused.

  • Click anywhere to tune the focused VFO there (RX1 unless TUNE B is showing). Where it lands depends on the Exact / 100 Hz setting and the Panafall step on the Display panel: in Exact the click snaps to the Panafall-step grid (1 Hz = truly exact), in 100 Hz it rounds to the nearest 100 Hz.
  • Click + drag left/right to pan across the band.
  • Mouse wheel steps the frequency by the Panafall step (set on the Display panel). Ctrl + wheel zooms instead.
  • Middle-click β€” while SPLIT or SUB is on: from TUNE A, parks VFO B (or SUB) on the click and focuses it (TUNE B); from TUNE B, returns focus to VFO A. Left/right/wheel stay for tuning, notches, and zoom.
  • A small frequency readout follows your cursor (toggle in Settings β†’ Visuals).
  • These gestures work on the waterfall below, too β€” click it to tune, wheel to step, Ctrl + wheel to zoom. It shares the spectrum's frequencies, so a click lands at the same spot either way.

Second receiver on the same pane (HL2 / BrickSDR2, SUB on). The live spectrum trace is always RX1's IQ. RX2 is drawn on top of that picture:

  • Green passband box and green carrier line β€” where RX2 is listening (same idea as RX1's cyan box / orange carrier). Drag a green edge to change RX2 BW.
  • If that green box sits inside the current span, you see both receivers at once (same-band dual watch).
  • If RX2 is off this span (another band, or far up/down the same band), a chip appears mid-height at the edge it would be toward: β—€ RX2 on the left, or RX2 β–Ά on the right. Green border, green label. Click it to swap VFOs so the panadapter (RX1) lands on that parked frequency; the second receiver keeps the band you just left. Click again (or hop bands) to go back. Tooltip shows the parked MHz.

Second spectrum (two-converter radios, SUB on). Brick3SDR, ANAN-100D / 200D, and other two-ADC models open a SUB pane (default below the main panadapter) with its own waterfall, band-plan markers, and click-tune. Click on that pane: SUB tunes RX2; SUB + SPLIT moves VFO B only. Trace colour and palette follow Settings β†’ Visuals; floor / ceiling are the SUB pair (see SUB RX floor / ceiling). Hide SUB and the extra pane closes.

Full colour map and a worked example: Second receiver (SUB / RX2).

SPLIT TX marker. With SPLIT on, the TX (VFO B) frequency is a solid lime line β€” red while transmitting. If VFO B is off-span, β—€ TX / TX β–Ά appear the same way (lime idle, red keyed) so you still see the pile-up offset. Those TX chips are not the RX2 chips.

The RX filter passband is shown as a translucent box over the tuned signal. Drag either edge of the box to widen or narrow the receive bandwidth β€” the RX BW readout in the Filters panel updates to match (and is remembered per mode). The orange center line marks your tuned carrier (offset into the passband on CW, where the tone sits).

The dB scale (signal-strength scale) down each side. The numbers on the left and right edges show signal strength in dB. Adjust by dragging on the right-hand edge:

Where you drag (right edge) What it does
Top third Raises / lowers the ceiling (top of the scale)
Bottom third Raises / lowers the floor (bottom of the scale)
Middle third Pans the whole scale up or down together

Dragging up always raises that edge. (Exact numbers live in Settings β†’ Visuals β†’ dB range.)

The frequency scale runs along the bottom in MHz, centered on your receive frequency. Zoom in/out from the Display panel.

Overlays you can turn on: peak markers (held signal peaks) and a noise-floor line β€” both configured in Settings β†’ Visuals, with quick controls on the Display panel; the EiBi shortwave schedule; and DX-cluster spots (from TCI, SpotHole or a DX-cluster node).


Tuning panel

Sets the RX1 receive frequency on a big amber LED-style readout (megahertz Β· kilohertz Β· hertz), the way old Lyra showed it.

  • Click a digit to select it (a cyan underline marks it), then roll the mouse wheel over the display to tune that digit's place up/down; with the LED focused, the arrow keys also step that place (Left / Right pick the digit, Up / Down change it).
  • Arrow keys anywhere else (not typing, not in a dialog): Left / Right = 1 kHz, Up / Down = 10 Hz on the focused receiver.
  • Roll the wheel anywhere on the display to tune by the current Step (see below).
  • Double-click the display to type an exact frequency. The frequency, Step, and Mode form one bordered VFO cluster. The border is green while receiving and turns red on transmit (MOX/TUN); an amber RX/TX tag in the top-left corner marks the role (it flips RXβ†’TX on key). The Lyra logo sits centred to its right, with VFO B to the right of that (it appears when SPLIT or SUB is on). Each VFO has a small TX pip: gray = this VFO would not transmit if you keyed now; click the gray pip to assign transmit to that VFO (enters or leaves SPLIT). The pip on the TX VFO turns red while you are on the air.

SUB and SPLIT are independent β€” both can be on, one, or neither. They are not a three-way cycle. FM RPT still replaces the SPLIT button in FM (repeaters); leave RPT alone if you are not on FM.

  • Step β€” under each VFO, the click/wheel tune step: 1 Hz / 10 Hz / 100 Hz / 500 Hz / 1 kHz / 5 kHz / 6.25 kHz / 8.33 kHz / 10 kHz / 12.5 kHz (default 1 kHz). The last step is remembered per mode (FM vs USB vs …) and separately for RX2. 6.25 / 8.33 / 12.5 kHz are land-mobile and airband channel spacings.
  • Mode β€” under the VFO: LSB, USB, CWL, CWU, DSB, AM, FM, DIGU, DIGL. (Mode lives with the VFO it applies to β€” moved here from the old Mode + Filter panel.) PureSignal only runs in phone/AM-class modes; DIGU / DIGL / DRM / CWL / CWU / FM force it off β€” see Modes that force PureSignal off.
  • CW Pitch β€” on the centred row beneath the VFO, only in CW modes (CWU/CWL): your preferred sidetone / beat-note pitch, 200–1500 Hz. The receive filter centers on this pitch and the tuned-carrier marker offsets to match, so a signal you zero-beat lands at your chosen tone.

Keyboard (VFO and PTT)

When you are not typing in a box, not in Settings, and not on a dropdown, the arrow keys move the focused VFO (the LED you last clicked β€” RX2 when SUB is on and that receiver has focus):

Keys Step
Left / Right 1 kHz
Up / Down 10 Hz

Hold a key for auto-repeat. Click a digit on the frequency LED first if you want the old place-step instead (Left / Right pick the digit, Up / Down change that place).

Space is momentary PTT (same as holding MOX) when that toggle is on in Settings β†’ Hardware β†’ Transmit. It does not fire while a text field, dialog, or combo has focus.

The USB encoder / HID wheel is separate β€” see Navigation (USB encoder / HID wheel).

SUB β€” second receiver

SUB is a second receiver on DDC1 β€” Hermes Lite 2 / 2+ (Protocol 1), BrickSDR2, Brick3SDR, and Protocol-2 ANAN. One-converter radios (HL2, BrickSDR2, ANAN-10 / 10E / 100 / 100B) draw RX2 on the main panadapter. Two-converter radios (Brick3SDR, ANAN-100D / 200D) open a second pane when SUB is on. How the colours, β—€ RX2 / RX2 β–Ά, audio, and band chips fit together is in Second receiver (SUB / RX2).

  • SUB (button green when on) β€” turns RX2 on. Off keeps DDC1 mirroring RX1. On: RX2 has its own frequency, mode, and last-band memory. Stereo: RX1 left, RX2 right (Audio Bal). Vol2 / MUTE2 ride RX2 without changing RX1 Vol / MUTE.
  • Click the VFO B cluster (or Ctrl+2) to focus RX2 β€” the panadapter tag reads lime TUNE B. Ctrl+1 or click VFO A returns orange TUNE A. Band-chip click stays VFO A unless TUNE B is already focused β€” use Shift+click / right-click to hop SUB without stealing focus.
  • SUB can run with or without SPLIT. With both on: two receivers, transmit still on VFO B.

SPLIT β€” receive A, transmit B

SPLIT β€” receive on VFO A, transmit on VFO B (typically the same band, a pile-up offset). The action row beneath the VFOs has:

  • SPLIT β€” toggles split on/off. Transmit moves to VFO B; VFO A keeps receiving. On key, VFO B's border + tag go red while VFO A stays green. VFO B transmits in the same mode as VFO A.
  • Right-click SPLIT β€” per-mode pile-up shift: up/down 1 / 5 / 10 kHz, plus Last used for that mode. Sets VFO B relative to VFO A and remembers the offset per mode.
  • 1β†’2 / 2β†’1 / ⇄ β€” copy VFO A β†’ B, copy B β†’ A, or swap them. With SUB on this copies full RX2 state; with SUB off it is frequency (VFO B shadow).

In FM, Dev / Emph / RPT / Offset / CTCSS / 1750 stay on the same action row as SPLIT / SUB / Mem (fields are compact so a second row is not needed):

  • Dev β€” FM deviation (same control as Settings β†’ TX β†’ FM). Changing it auto-sizes the RX bandwidth to the matching FM channel width (Β±2.5 kHz β†’ 12 kHz, Β±5 kHz β†’ 16 kHz).
  • Emph β€” FM pre-emphasis, Comm (6 dB/oct voice) / Off (flat, for data). Same control as Settings β†’ TX β†’ FM; leave it on Comm for voice.
  • RPT β€” the FM split toggle. Turn it on, then pick Offset direction (βˆ’ / +) and the shift in one field (type kHz / MHz, or pick 100 kHz / 500 kHz / 600 kHz / 1 MHz / 5 MHz / 7.6 MHz). 70 cm IARU Region 1 repeaters are typically βˆ’7600 kHz. Band defaults when you first arm RPT: 10 m 100 kHz, 2 m 600 kHz, 6 m 1 MHz, 70 cm 7.6 MHz (all shift down). VFO B = VFO A Β± offset, split armed. As you tune VFO A, VFO B tracks the offset (duplex). CTCSS is a lit button β†’ enable it and pick UL (TX encode) and DL (RX recipe). Either combo may be β€” (no tone). Hold FM MOX / PTT, then tap 1750: a 1750 Hz tone is mixed into TX audio for the duration set in Settings β†’ Hardware β†’ Band plan (default 2 s; the chip lights for that window). Memory Burst=1750 stores the recipe. Shown by default only for IARU Region 1; Region 2/3 hide it (CTCSS is the usual access). Toggle visibility under Settings β†’ Hardware β†’ Band plan β†’ Show 1750 Hz tone burst.

On the panadapter (centred on your RX, VFO A) the RX carrier is a solid orange line at centre and the TX (VFO B) freq is a solid lime line β€” red while transmitting β€” so you can see exactly where you'll transmit before you key. (Split is the same mechanism FM repeater offsets use; PureSignal tracks VFO B automatically.)

To jump between bands, use the Band panel; to change the filter width, the Filters panel.

RIT / XIT β€” incremental tuning. Two lit toggle buttons on the action row, each revealing a small Β± offset spin (Β±9.99 kHz, 10 Hz steps) when engaged:

  • RIT (Receiver Incremental Tuning) shifts only the receiver by the offset β€” chase a station that's drifted or zero-beat a CW signal without moving your VFO. The panadapter re-centres on where you're actually listening, and a pale-blue DIAL marker shows where your VFO still reads. Your transmit frequency is unaffected.
  • XIT (Transmitter Incremental Tuning) shifts only the transmit frequency by the offset β€” RX stays put. In simplex a lime TX marker (red on key) shows where you'll transmit. PureSignal tracks the shifted TX automatically.

Both persist across sessions. The Β± arrows step 1 Hz, the wheel steps 10 Hz (Shift = 100 Hz), and the 0 button clears the offset (or just toggle off). Tip: RIT/XIT are session-style fine offsets β€” for a fixed transmit split (a repeater, or working a DX pile-up up/down), use SPLIT (or the FM RPT button) instead.

Zero-beat markers β€” dead-tune a carrier

A tiny Kenwood-style Β± needle that appears under the frequency readout and shows how far the strongest carrier in the passband sits from where you're dialed β€” so you can dead-tune ("zero-beat") onto a CW, AM, SAM, or FM signal by eye instead of by ear.

  • Turn it on in Settings β†’ Visuals β†’ Show zero-beat markers (off by default). It then shows only in the carrier modes where it makes sense β€” CWU, CWL, AM, SAM, FM β€” and stays hidden in SSB / digital.
  • Read it β€” the needle rides left/right of a centre detent over a Β±500 Hz span, with the offset printed beside it. Tune until the needle centres and the readout snaps to a green ● 0 Hz β€” you're zero-beat. The colour cues how close you are: amber (far) β†’ cyan (within ~45 Hz) β†’ green lock (within 8 Hz). A grey β€” means no carrier is strong enough to trust yet (it briefly holds the last lock through CW keying gaps, then greys out).
  • It sits in the gap just above the SPLIT button, so switching into a CW mode with it enabled never grows the Tuning panel nor nudges the frequency readout β€” the layout stays put.

Also handy for the CW decoder. In CW the needle reads the carrier's offset from your CW Pitch, so centring it lands the beat note exactly on the pitch the RX CW decoder listens at. The decoder has no AFC, so a needle-centred signal is the quickest way to put a station right on frequency for clean copy.

CTUN β€” centre-tune lock

The CTUN chip (top toolbar, in the Options group) freezes the panadapter / waterfall on its current centre so you can tune the VFO within the displayed span without the waterfall scrolling. Click it (it lights green) and the band stays put while the dial marker slides to where you're listening β€” ideal for watching a fixed slice of spectrum (a pile-up, a net, an FT8 window) and clicking signals across it. Tune past the edge of the span and it re-centres on the new dial automatically. Click again to release and return to normal scroll-tuning. RX1; works in any receive mode. When you transmit with CTUN engaged, your transmit signal shows on the VFO marker where you're tuned β€” not the frozen display centre.


Second receiver (SUB / RX2) β€” how it works

SUB opens the second DDC (DDC1). SPLIT is separate β€” that only moves transmit to VFO B. You can run SUB, SPLIT, both, or neither.

One converter (HL2, BrickSDR2, ANAN-10 / 10E / 100 / 100B): one ADC and one analog filter. Same-band SUB is full strength. Cross-band SUB is allowed on the wire, but with an N2ADR / filter board the relays follow RX1 β€” RX2 on the other ham band will be much weaker. The status log notes that once when the two amateur bands differ. RX2 is the green overlay on the main panadapter.

Two converters (Brick3SDR, ANAN-100D / 200D, G2): RX1 and RX2 sit on separate ADCs. SUB opens a second panadapter (own waterfall, band-plan, click-tune). MAP RX2 is that converter's antenna jack, not the PureSignal coupler. Diversity is a different mode: both converters on the same frequency. Turning it on turns SUB off. See Diversity.

RX2 has its own frequency, mode, last-band memory, passband, and audio ear. Click-tune on the SUB pane: SUB β†’ RX2; SUB + SPLIT β†’ VFO B only.

What you see (colour coding)

Use this map on the air. Green = second receiver. Lime on the spectrum is SPLIT TX, not RX2.

Colour Where Meaning
Orange Carrier line, TUNE A tag RX1 / VFO A β€” click and wheel tune this
Cyan / blue Translucent passband box RX1 filter (drag edges = RX BW)
Green (button, passband box, carrier line) SUB, RX2 overlay Second receiver is on and listening here
Lime TUNE B Panadapter cursor tag Focus is on VFO B / RX2 β€” a click moves that VFO
Red glow Ham / BC / 11m band chip RX1 is on that band
Green glow Band chip (with SUB on) RX2 is parked on that band (can be the same chip as red if both VFOs share a band)
Green VFO border Tuning cluster That VFO is receiving
Red VFO border / TX pip Tuning cluster On the air (transmit VFO)
Gray TX pip Next to a VFO This VFO would not transmit if you keyed; click it to assign TX (SPLIT)
Lime TX line Spectrum SPLIT VFO B (idle). Turns red while keyed
β—€ TX / TX β–Ά Spectrum edge SPLIT TX is off this span (lime / red). Not the RX2 chips

RX1 and RX2 on the same span: cyan box + green box together. Different bands: only RX1's slice is the waterfall; RX2 is the green overlay if it fits, otherwise the edge chips below.

β—€ RX2 and RX2 β–Ά

When SUB is on and RX2's passband is not in the current span, a chip sits halfway up the left or right edge:

  • β—€ RX2 β€” RX2 is lower in frequency than this picture (left of the span).
  • RX2 β–Ά β€” RX2 is higher (right of the span), including "on another ham band."

Green border, light-green label. Hover shows the parked frequency in MHz.

Click the chip to swap so the panadapter (RX1) shows that parked spot. RX2 keeps the frequency you just left. Mode and RX bandwidth swap with the VFOs. Focus returns to TUNE A. Click the matching chip again (now pointing at the other band) to swap back. This is the same swap as ⇄ on the Tuning row, aimed at "show me the other receiver on this pane."

The waterfall does not magically display two bands at once β€” one IQ slice at a time. The chips exist so you never lose the second VFO when it walks off the picture.

Typical operating

  1. Light SUB (green). Hear RX1 in the left ear / left of Bal, RX2 in the right. Ride Vol2 / MUTE2 if one side is loud.
  2. Shift+click or right-click a band chip to park SUB there without moving VFO A (chip goes green; RX1's chip stays red).
  3. Watch TUNE A (orange) vs TUNE B (lime) before you click the panadapter. Middle-click from TUNE A parks SUB on the click and focuses B; middle-click from TUNE B returns focus to A.
  4. Filters RX BW becomes RX2 BW while TUNE B / SUB is focused; drag the green passband edges the same way as the cyan box.
  5. Filters, NR, and the main S-meter stay the focused receiver's story unless a control is labelled Vol2 / MUTE2 / RX2.

DSP+Audio NR / AGC / notches follow the focused RX (the one TUNE A / TUNE B names). GEN / TIME / Mem do not hop SUB.


Diversity

Diversity mixes the two converters on one frequency so a fading signal can be filled in from a second antenna. It is not a second VFO. SUB is the second VFO. They do not run together: pressing ON turns SUB off.

HL2 and BrickSDR2 have one converter. The DIV chip stays hidden on those radios. It shows on Brick3SDR and on ANAN-100D / 200D. Confirmed on Brick3SDR.

Where it is

The DIV chip sits with PureSignal and Amp View on the Options row. It only opens and closes the dock. The dock remembers its size and place the next time you open it.

ON inside the dock arms the mix. Opening the dock does not. While the mix is armed the button reads ON and lights green.

The second antenna

Put the second antenna on the RX2 jack. On the MAP chips that jack is Ext1, not ANT2, and not the PureSignal coupler. RX1 stays on the ANT jack you already selected.

Gain and phase

The polar dot and the Gain / Phase steppers are the same two numbers.

  • Gain is βˆ’27 to +27 dB (0.05 dB steps). Distance from the centre of the disc.
  • Phase is βˆ’180 to +180 degrees (0.1Β° steps). The angle of the dot.

Each band keeps the last pair you used. Change bands and the dot moves back to that band's pair. A band you have never set starts at 0 dB / 0Β°. The ON / OFF switch is global β€” it does not change when you change bands.

While you transmit

The mix drops for the whole key, including Tune, MOX, footswitch, two-tone, and while PureSignal is live. The steppers grey out. It comes back when you unkey. RX2 jack isolate on TX (default on) still grounds that jack for the key, which is what you want: the second antenna is not left connected while RF is up.


Filters panel

Sets the sample rate, how wide the RX/TX filters are, and where each sideband opens at the low end. Bandwidths are the top line. The low-edge spins sit in the same columns underneath, so the dock stays short. (The mode picker moved to the Tuning panel, under the VFO.)

  • Rate β€” the IQ sample rate / panadapter span: 96 k / 192 k / 384 k. Higher shows more spectrum at once (wider waterfall) for a bit more CPU/network.
  • RX BW β€” the receive filter bandwidth. The list is per-mode (sensible presets for SSB, CW, AM, FM, digital, with SSB running up to 10 kHz and AM up to 12 kHz for ESSB-style wide audio), and Lyra remembers the width you last used for each mode. If you drag a passband edge on the panadapter to a width that isn't a preset, the combo shows it as "(custom)" at the top of the list so the readout always matches what you're actually hearing; pick a preset to snap back. With SUB focused (TUNE B), this control reads RX2 BW and drives the green passband; RX1's width stays on the cyan box.
  • πŸ”— (Lock) β€” links RX and TX bandwidths and low edges so a change on either side mirrors the other for the current mode. Click to toggle. Toggling it ON pulls the RX bandwidth and the RX low into TX. With the lock OFF, RX and TX widths and lows are independent. (Disabled in FM β€” there's no separate TX width or low to lock to; see TX BW below.)
  • TX BW β€” the transmit filter bandwidth. Per-mode just like RX BW. For SSB / digital it's the high edge: the TX passband runs from TX lo up to this high edge β€” e.g. TX lo = 50 Hz and TX BW = 4 kHz gives a 50–4000 Hz single sideband, even if RX lo stays at 150 Hz. For the double-sideband modes (AM, DSB, SAM) the value is the total occupied width: the TX filter is symmetric around the carrier at Β±(TX BW / 2), so AM at TX BW = 6 kHz transmits Β±3 kHz = 6 kHz total and lands exactly inside the on-screen filter markers (matching RX). Sign-codes correctly per mode (USB positive, LSB negative-and-swapped, double-sideband symmetric) inside the WDSP TXA chain. In FM the TX BW is not editable β€” it shows the auto-derived occupied width 2 Γ— (deviation + 3 kHz) (e.g. "16 k (auto)" at Β±5 kHz), which updates live as you change the FM Deviation. The RX BW presets in FM are FM channel widths (8 / 10 / 12 / 16 kHz) and follow the deviation too (see the FM section).
  • RX lo β€” under RX BW. Receive low cutoff, 0–500 Hz, step 10 Hz, default 100 Hz. SSB and digital only. Dragging the RX passband's low edge on the panadapter writes this same value.
  • TX lo β€” under TX BW. Transmit low cutoff, same range. Greyed out in FM. With the lock on it follows RX lo. With the lock off it stays where you set it. The same two spins live on Settings β†’ Audio.

SSB and digital filters open at those lows. CW filters are centered on your CW Pitch. AM/DSB/FM are symmetric around the carrier (the low spins don't apply to those modes). An older profile that stored one shared low loads that number on both sides until you pull them apart.


Band panel

Quick band switching, in four rows:

  • Ham β€” the HF/6m amateur bands (160m … 6m). Click one and Lyra returns the focused receiver to a stored frequency on that band (the band's default the first time). Each chip keeps three frequencies. A small 1, 2, or 3 in the corner is the slot you are on. The first click, arriving from another band, lands on the slot you last used and does not skip ahead. Click that same chip again and it steps to the next slot. An empty slot starts as a copy of the frequency you just left, so the first extra click changes the digit without jumping the dial; tune from there and that slot keeps what you set. The digit and the three frequencies survive a restart. Shift+click and right-click still open SUB and do not use this cycle. The Solar heat-map chips tune VFO A to the current slot and do not cycle it either. The click tunes VFO A / RX1 unless the panadapter already shows TUNE B (SPLIT VFO B, or SUB focused). VFO B shares RX1's three slots for that band. Colour: RX1's band chip has a red glow; SUB's band (when SUB is on) has a green glow. Same band on both VFOs β†’ one chip can carry both stories (red + green treatment). Full map: Second receiver. An optional 11m button (the Citizens Band, 26.965–27.405 MHz AM) appears at the end of this row, right after 6m, when you enable it in Settings β†’ Hardware β†’ Band panel. When you're tuned on it, the panadapter marks all 40 CB channels (Ch1…Ch40) across the top β€” click a channel marker to jump to it. Click-tune mode follows Settings β†’ Hardware β†’ Band plan β†’ Region (same picker as the ham overlay), not a fixed US map: US / IARU Region 2 uses AM on 1–35, USB on 36–40 except Ch38 LSB (27.385 calling); IARU Region 1 uses USB on 36–40; IARU Region 3 uses LSB on 36–40; None stays AM on every channel. Same click on the SUB pan tunes RX2.

  • BC β€” the shortwave broadcast meter bands (120m … 13m, all AM). Like the Ham bands, BC and the 11m band remember their last frequency and mode and return to it when you click them (band default the first time). The active band lights the same way.

  • Gen β€” the GEN1/2/3 general-coverage slots (below).

  • Xvtr β€” four transverter chips (defaults 2m / 70cm / 23cm plus a spare). Click a chip to tune RX1 to that slot’s last RF. Full detail: Xvtr (transverters).

  • Ant β€” Protocol 2 radios with an Alex-style front-end (ANAN-100D class, Brick3SDR, G2 / Saturn β€” not Hermes-class BrickSDR and not HL2). ANT chips pick the shared TX/RX jack (Brick3SDR: 1 / 2 only; 7000 / 8000 / G2: 1 / 2 / 3). RX chips pick the receive input: TRX (the selected ANT jack) plus any extra RX-only jacks the box actually has. Brick3SDR rear RX2 is that extra jack (Alex Ext1). MAP opens a per-band grid of the same ANT + RX choices (DeskHPSDR-style all-bands assignment). Remembered per band. Same live ANT/RX as Settings β†’ Hardware. The row stays hidden when the radio has no antenna ladder. Not on the TX dock β€” that strip is already full.

    Diversity is the phase/gain mix of both converters on one frequency. It is not SUB, not MAP, and not the Settings ADC combo. The second antenna is the RX2 chip (Ext1). See Diversity. Brick2 and HL2 have one ADC and do not show the DIV chip.

SUB hops (HL2 / BrickSDR2). Shift+click or right-click a Ham / BC / 11m chip to park SUB on that band (turns SUB on if it was off, keeps VFO A focused). SUB remembers its own three frequencies and mode per band β€” independent of RX1. A second Shift+click or right-click on the band SUB is already on steps SUB's next slot. A SUB hop does not apply RX1's band memory (LNA, TX drive, panadapter range). GEN / TIME / Mem stay RX1-only (not SUB hops). Xvtr Shift+click is a SUB hop; right-click opens the slot editor.

Xvtr (transverters)

Use the Xvtr row when an external transverter sits in front of the radio. Lyra shows RF on the VFO LED, panadapter, TCI, and memories. The radio NCO still runs at IF = RF βˆ’ LO βˆ’ error (Hz).

VFO LED. Ten digits, MMMM.kkk.hhh, so 144 MHz / 432 MHz / 1296 MHz fit. The old eight-digit ceiling (55.999.999 Hz) was the display cap, not the slot editor. ~2.147 GHz is the signed-int ceiling (13 cm / 2.3 GHz is above that).

Slot editor (right-click a chip). On/off, name, RF low/high (MHz), LO (MHz), error (Hz), Disable PA, RX-only. Disable PA defaults on so the Hermes Lite onboard PA stays off with a transverter in circuit. PA-gain and USB-BCD follow displayed RF. The N2ADR / OC filter map uses the IF of that slot’s RF-low (not the live IF as you QSY). Otherwise a 2 m hop such as 145.675 ↔ 145.775 with a 116 MHz LO would cross the 10 m amateur edge at 29.7 MHz IF and chatter the HL2 filter-board relays. USB-BCD does not do that (it keys on RF).

IF window. The HL2 ADC/NCO is HF (~DC–30.72 MHz). Example: RF 144–146 MHz with LO 116 MHz β†’ IF 28–30 MHz (inside). RF 148 MHz at the same LO β†’ IF 32 MHz (outside that window). Tighten RF high or raise LO so IF stays in the radio’s native range.

Region. Settings β†’ Hardware band-plan region (US / IARU R1 / IARU R3 / none) does not rewrite Xvtr slots. Factory defaults are US-style (2 m 144–148). IARU R1 2 m is often 144–146 β€” type that in the editor.

SUB. Shift+click an Xvtr chip parks SUB on that slot.

Out-of-band TX banner. The HF amateur table does not include VHF/UHF, so Lyra does not flash β€œtransmitting out of band” merely because you are on an enabled Xvtr slot. It still warns if your occupied bandwidth walks past that slot’s RF low / RF high.

GEN1 / GEN2 / GEN3 (to the right of the band buttons) are general-coverage slots for listening outside the ham bands β€” shortwave, MW, time stations, utility. Each works like a band button but for any frequency: click it to jump to that slot's last freq + mode, and while it's the active slot (highlighted) tuning around updates it, so it always remembers where you left off. Defaults are WWV 10 MHz, WWV 15 MHz, and 1 MHz (MW), all AM. Right-click a GEN button to reset it to its default. Clicking an amateur band button leaves general-coverage.

TIME β€” HF time stations. Between GEN3 and Mem, the TIME button hops through the world's shortwave time-and-frequency stations β€” handy for checking propagation or setting your clock by ear:

  • Left-click TIME to tune the next station/frequency. It cycles through the whole list β€” WWV (2.5/5/10/15/20/25 MHz), WWVH, CHU, BPM, RWM, and others β€” advancing one step each click, and picks up where you left off next time. The mode is set for you (AM, or USB for CHU).
  • Right-click TIME for the full list grouped by station β€” pick any station and frequency directly, or Reset cycle to first entry.
  • The stations are ordered to put the most useful ones first based on your callsign (a US operator leads with WWV, etc. β€” set your callsign in Settings β†’ Hardware).

Mem β€” frequency memory bank. At the end of the GEN row, the Mem button holds up to 20 saved frequencies, each remembering its name, frequency, mode, and (optionally) RX filter bandwidth. Optionally put the same chip on the Tuning dock: Settings β†’ Bands β†’ Band panel β†’ Show memory recall on the Tuning panel.

  • Left-click Mem to open the recall list β€” pick a preset and Lyra tunes straight to it (mode first, then frequency). Works on both the Tuning dock and Band β†’ Mem, including after the radio has been idle.
  • Right-click Mem to Save current frequency (the VFO is stored with an auto-name like "14.074 USB") or open Manage presets….
  • Full editing lives in Settings β†’ Bands β†’ Memory: click a cell to type (or Edit cell / F2). There is no Save button β€” leave the cell or press Enter to keep the change. You can rename, retype the frequency/mode/bandwidth, add notes, delete, clear all, and import/export CSV (columns: Name, Freq_Hz, Mode, RX_BW_Hz, Notes, Offset_Hz, CTCSS_Hz, CTCSS_DL_Hz, Burst_Hz) to back up or share your list. Older 7-column CSVs still import.
  • Repeaters: set Offset (TX shift in kHz β€” e.g. βˆ’100 for 10 m, βˆ’1000 = βˆ’1 MHz for 6 m, βˆ’7600 for 70 cm IARU R1), UL (TX CTCSS Hz), optional DL (RX tone if different from UL), and Burst (1750 for a 1750 Hz burst recipe). Store the output frequency in Freq, Mode = FM. Recall tunes the output, arms SPLIT to the input, and sets UL. DL appears on Tuning whenever CTCSS is on (pick β€” if unused; RX decode is stored, not yet squelched). Blank Offset/UL/DL = simplex (recall clears split + tone). "Store current" captures offset, UL, DL, and Burst. The Mem recall list and the Settings table both scroll when you have more than a handful of presets.

Pick the mode under the VFO (Tuning panel) and the filter width in the Filters panel.

Per-band memory. Lyra remembers each band's settings independently and restores them when you move to that band: the three stored frequencies (the band-chip stack; the current slot is the one a click from another band recalls), the demod mode, the panadapter dB min/max (reference-level range), and the waterfall dB min/max. Set 40m to LSB with a tight waterfall range and 20m to a wider one, and each comes back the way you left it as you hop between them β€” no need to re-adjust every time. (Auto-scale on/off is global; RX filter bandwidth is remembered per mode, as before.) Memory is saved live as you adjust, and persists across sessions.


Audio panel

The DSP + AUDIO panel β€” what you hear and how it's cleaned up. It's laid out in old Lyra's three-row arrangement:

Row 1 β€” Levels

  • Vol β€” RX1 output volume, shown in dB beside the slider (βˆ’βˆž when fully down). The mouse wheel nudges it in fine steps.
  • MUTE β€” silences or restores RX1 without disturbing the Vol slider; the button reads MUTED while engaged. (Lyra starts unmuted.) MUTE only cuts the speaker / HL2-jack path. VAC Output and MON TX can still play. If VAC Output is the same speakers (or a loop back into the mic), unmute sounds like an echo or a second copy. Point VAC at a dedicated cable (or turn it off), and turn MON TX off, so only one path hits the speakers.
  • Vol2 / MUTE2 β€” same pair for RX2 when SUB is on (HL2 / BrickSDR2). MUTE2 does not change Vol2.
  • LNA β€” RF input gain on the HL2's AD9866 PGA (βˆ’12…+31 dB; slider or mouse-wheel). Higher = more sensitivity; back off on strong bands to avoid ADC overload. The S-meter compensates for it automatically, so changing LNA doesn't shift the signal reading.
  • ATT (Protocol 2) β€” ADC step pad 0…31 dB on ANAN / Brick / G2 class. Higher = more pad (less ADC gain). Remembered per band. This is not Auto-LNA: Hermes Lite 2 uses a PGA; Protocol 2 uses the LTC pad. The S-meter adds ATT (loss) so walking the pad does not move the reported signal β€” the previous Auto attempt subtracted LNA on P2 and that is what broke the meter.
  • AF β€” audio makeup gain (0…+40 dB), applied before Vol. Use it to set a comfortable working level for your headphones/speakers once, then ride Vol on top of it for moment-to-moment changes. The value shows in dB beside the slider.
  • Bal β€” stereo balance. With SUB off, pans RX1 left/right. With SUB on, it pans RX1 vs RX2 (left vs right); centre = both equal and snaps to dead-centre so it's easy to recentre.
  • MON TX Β· Monitor β€” hear yourself transmit. With MON TX on, while you're keyed up Lyra plays your own post-rack TX audio (Speech β†’ EQ β†’ Combinator β†’ Plating) in place of the auto-muted receiver. The Monitor slider rides its level (dB beside it). It's your voice through the DSP rack but before the radio's corrective ALC and TX bandpass β€” so it shows what your processing is doing, not the exact transmitted envelope. MON TX does nothing on receive, and in DIGU / DIGL / CW (rack bypassed / no mic audio) there's nothing to monitor. The monitor follows wherever your RX audio goes β€” the HL2 jack or selected output device (the Out picker), and, when enabled, a VAC PC device and your TCI clients β€” all from the single MON TX toggle (matching the reference's monitor routing).
  • Auto / Step Β· Out β€” on Hermes Lite 2, Auto is Auto-LNA (PGA). On Protocol 2 the same slot is Step (Auto Step 0–31): confirmed ADC clip β†’ ATT +3 dB (cap 31); when the band clears, ATT βˆ’1 dB toward 0, frozen while transmitting. Turning it off leaves the pad where it settled. Hold / Undo knobs in Settings β†’ Hardware are shared. Out is a live output-device quick switch: click it for a pop-up list of the HL2 audio jack + your PC output devices (the current one marked), and pick one to move RX audio β€” and the monitor β€” there live. The full audio setup (host API, exclusive mode, VAC) still lives in Settings β†’ Audio.

Row 2 β€” DSP toggles + AGC

  • A row of effect buttons NB Β· BIN Β· NR Β· ANF Β· LMS Β· SQ Β· APF Β· NF. NR (Noise Reduction), ANF (Auto Notch β€” nulls carriers/ heterodynes automatically), LMS (Line Enhancer β€” lifts CW/tones out of the noise), NF (manual Notch Filter), SQ (all-mode squelch), NB (Noise Blanker), APF (Audio Peak Filter), and BIN (Binaural) are all live. NR and LMS are complementary β€” NR subtracts broadband noise, LMS predicts the periodic signal, so both can run together on weak CW.

  • BIN β€” binaural pseudo-stereo: widens the soundstage on headphones by sending the signal to one ear and a 90Β°-phase-shifted copy to the other, so weak CW/SSB seems to lift out of the noise and voices gain a sense of space. A depth slider appears in the bottom row while BIN is on (0 = mono β†’ 100 = full); loudness stays constant as you sweep it. (Headphones only β€” on speakers the effect collapses.)

  • APF β€” CW peaking: a narrow peak parked on your CW pitch that lifts a CW tone out of the surrounding hiss. It engages only in CWU/CWL (no effect in SSB/AM/FM) and re-centres automatically when you change the CW pitch. A gain slider appears in the bottom row while APF is on β€” pick how hard it lifts (3–18 dB in 3 dB steps; default 12). Stacks well with LMS for weak-signal CW.

  • NB β€” noise blanker: suppresses impulse noise (ignition, power-line arcing, lightning crashes) by gating it out of the raw IQ before demod. A strength slider appears in the bottom row while NB is on β€” higher = more aggressive blanking; back it off if it starts chewing CW/SSB transients. (For a steady carrier-type interferer use a manual notch or ANF instead β€” NB is for clicks/pops, not tones.)

  • SQ β€” all-mode squelch: mutes the audio between transmissions and unmutes when a signal opens it. It routes automatically by mode β€” a voice-presence detector (SSQL) on SSB/CW/DIG, the FM noise squelch on FM, and the carrier squelch on AM/SAM/DSB. A threshold slider appears in the bottom row while SQ is on: higher = tighter (only stronger signals open it); the usual sweet spot is ~10–30.

  • NF β€” manual notches (right-click the panadapter to use):

    • Right-click empty spectrum drops a notch at that frequency (200 Hz wide) and turns NF on.
    • Drag a red band to slide it onto the offending carrier.
    • Mouse-wheel over a band: down = wider, up = narrower.
    • Right-click a band to remove it.

    Each notch visibly cuts the spectrum trace and the waterfall in that region β€” the trace drops to the noise floor and the waterfall shows a dark stripe across the notch width, so you can see exactly what's being removed instead of guessing. The notches are deep and sharp by design β€” Lyra uses WDSP's NBP filter in a deep rectangular-window, 2048-tap configuration, so a carrier drops into the noise rather than just dipping. The NF button toggles all notches at once without losing their positions; the count shows beside the button. ANF (the auto-notch) likewise runs deep adaptive settings β€” a marked step up from the softer notching in the Python build.

  • AGC β€” click anywhere on the AGC cell (it highlights on hover) to cycle Off β†’ Fast β†’ Med β†’ Slow. Med is the everyday default; Fast for fast-changing signals, Slow for steady ones, Off for fixed gain (digital modes / measurement). The three modes are genuinely distinct β€” Fast recovers in ~50 ms with no hang, Med in ~250 ms, Slow holds ~1 s then decays over ~500 ms (industry-standard time constants). The cell shows the AGC threshold and the live gain action (dB) beside the mode.

Row 3 β€” Noise Reduction character

Use either classic NR (EMNR) or NNR (neural). They are exclusive. NR-C (captured profile) is independent of both.

  • NNR β€” WDSP 2.10 neural denoiser. Default off. While on, Row 3 shows Model and Mask instead of Mode / AEPF / NPE:
    • Standard (default) vs Premium. Premium is the heavier model and uses more CPU. Standard is the start; switch to Premium when you want to hear the stronger model (a mask around βˆ’40 is the amount to try while listening). On a Minimum-tier PC, stay on Standard β€” or classic NR β€” if the machine is already busy.
    • Mask βˆ’10 dB (least suppression) … βˆ’50 dB (most). Default βˆ’40. More negative = more noise cut (and more chance of watery artifacts). This is the main NNR amount control. NNR adds a small extra delay (~50 ms class). Hover the NR / NNR controls for the same cheat sheet.
  • NR Mode (1–4) β€” only while classic NR is on (NNR off). Picks the WDSP EMNR gain function: 1 Wiener + speech-presence, 2 plain Wiener (edgier), 3 MMSE-LSA (the smoothest, default), 4 trained-adaptive (most aggressive). Turn NR on in Row 2, then sweep modes to find the best sound for the band.
  • AEPF β€” anti-musical-noise smoother (classic NR only). On (default) engages both of WDSP's cleanup stages β€” artifact elimination and the post-filter that stock WDSP leaves off by default β€” so the "musical twinkle" is knocked down hard while MMSE-LSA (Mode 3) keeps the voice natural rather than robotic. Turn it off to hear raw EMNR on already-quiet bands. If you still want the most natural voice, stay on Mode 3 (Mode 4 trades smoothness for aggression and brings musical noise back).
  • NPE β€” classic NR only. How the denoiser tracks the noise floor: OSMS (smooth, best for steady atmospheric hiss) or MCRA (faster-tracking, better for changing/intermittent QRM).
  • LMS strength β€” appears in this row only while LMS is on: 0 is subtle, 50 is the WDSP-class default, 100 is full prediction (more taps, harder pull). Most useful digging weak CW out of band hiss.

Classic NR Mode + AEPF + NPE stay operator knobs when NNR is off. All of the above persist across restarts.

Captured noise profile (NR-C) β€” Lyra's signature noise reduction

This is the one that's genuinely different. Instead of a generic denoiser, NR-C learns your band's actual noise spectrum and subtracts it β€” in the IQ domain, before WDSP's chain β€” so it's mode-independent and doesn't fight the AGC. Used well it drops the noise floor several dB and the signal pretty much sits where it was.

The workflow (left to right on Row 3):

  1. Tune to a quiet, signal-free spot on the band you're working β€” NR-C subtracts whatever it captures, so don't capture on top of a signal.
  2. Pick a capture length (3 / 5 / 10 s) next to the πŸ“· Cap button.
  3. Press πŸ“· Cap. The button shows a percentage while it averages the noise; press it again to cancel.
  4. Press Save, give the profile a name (e.g. 40m-night, 20m-ESSB) in the box that pops up. It's now in the picker.
  5. Flip NR-C on. The captured noise is subtracted from RX audio. The panadapter stays on the uncleaned IQ so strong stations keep a sharp rectangular shape (the reducer STFT would otherwise slope 70–90 kHz around a loud signal). You hear the floor drop; the display does not follow the mask.
  6. Fine-tune with the βš™ button (appears next to NR-C while it's on):
    • Strength (1–5Γ—) β€” how hard to subtract. Higher = more cut.
    • Floor (βˆ’3 to βˆ’30 dB, default βˆ’24) β€” the deepest any bin is allowed to drop before WDSP AGC. More negative = more audible hiss cut. βˆ’12 is too gentle once the panadapter no longer follows the mask.
    • Smoothing (0–95%) β€” steadies the gain so it doesn't "twinkle." Raise it if deeper Strength/Floor starts to sound watery.

FFT size (2048 / 4096 / 8192) sets the resolution β€” 8192 resolves wide ESSB noise finest (a touch more latency), 2048 is lowest latency. Changing it clears the current profile (a profile is tied to the size it was captured at).

Profiles are files you own. Each saved profile is a small .lnp file in %LOCALAPPDATA%\N8SDR\Lyra-cpp\profiles\ β€” browsable, backup-able, and shareable between rigs (drop a friend's .lnp in there and it shows up in your picker). Profiles are tagged with their capture rate + FFT size and won't load against a mismatched rate (you'll get a recapture hint).

Manage them in Settings β†’ Noise: the full list with rate/size/date, plus Rename, multi-select Delete, and Open folder.

Auto-load on startup (Settings β†’ Noise). Pick a saved profile to load automatically each launch, so NR-C comes up ready instead of an empty field. If you left NR-C on last session it re-enables too β€” unless the chosen profile no longer matches your sample rate, in which case it stays off with a recapture hint. CTUN is remembered the same way (it comes back on if it was on). Set the picker to None, or turn the toggles off before closing, for a clean start.

Notes: NR-C adds about one FFT window of RX latency (β‰ˆ21 ms at 4096) only while it's on; off, the path is unchanged. The panadapter does not take that delay β€” it stays on the uncleaned IQ so the trace stays rectangular. It's independent of the WDSP NR denoiser β€” you can run either, both, or neither.


Setting up audio output

RX listening β€” the HL2 jack vs a PC device, plus feeding digital apps.

Lyra can send received audio out two ways β€” pick the one that matches how your station is wired:

  • HL2 audio jack β€” the headphone/speaker jack on the Hermes Lite 2 itself (its onboard codec, the AK4951 on HL2+). Recommended for most operators.
  • PC sound device β€” your computer's speakers, headset, or USB audio interface (or a virtual cable to another program).

You can switch any time; Lyra remembers your choice per rig β€” each radio keeps its own output path and device, so a Hermes set to its jack and a Brick set to your PC soundcard each come back correctly when you switch between them (see Multiple radios & switching rigs).

Which one:

  • Headphones/speakers straight into the HL2 β†’ HL2 audio jack.
  • Listen on the PC's speakers / a USB headset β†’ PC sound device.
  • Feed RX audio to WSJT-X / FLDigi / a recorder β†’ PC sound device via VAC, or TCI if the app speaks it (see Digital modes below).

The HL2 jack is the easy button: the radio and its codec share one clock, so there's no drift to correct β€” glitch-free audio, lowest latency, zero setup. The PC path bridges two clocks (the HL2's and your sound card's), which Lyra handles with an adaptive resampler, but it's a little more to get right.

Where the controls are

On the Audio panel, top "LEVELS" row: Out is the output-device quick-switch β€” click it for a drop-down of every output (the HL2 jack is always first; the active one is marked). Vol is listening volume, AF is pre-volume makeup gain (0…+40 dB, for when everything is too quiet even at full Vol), MUTE silences without touching Vol, and Bal is left/right balance. Settings β†’ Audio has the same chooser plus the Virtual Audio Cable (VAC1) options.

HL2 audio jack (onboard codec / AK4951)

  1. Plug headphones or powered speakers into the PHONES jack on the Hermes Lite 2.
  2. Click Out on the Audio panel and choose HL2 audio jack (the first entry). (Or Settings β†’ Audio β†’ output device.)
  3. Bring Vol up; if it's still quiet, add a few dB on AF.

No device matching, no sample-rate fiddling β€” this is the default and the path we recommend unless you specifically need PC audio.

PC sound device

  1. Click Out (or open Settings β†’ Audio).
  2. Pick your PC output β€” speakers, USB headset, or interface.
  3. Set Vol to taste.

Lyra resamples between the radio and your sound card automatically. If your device name appears more than once (different Windows audio backends), just try one; pick another only if you hit dropouts.

Windows mixer. The Windows per-app volume for Lyra (the slider in the system volume mixer, not Lyra Vol / AF) is saved when you Stop and restored on Start and relaunch. If audio comes back full blast after a restart, check that mixer β€” it used to reset to 100 % each session.

Digital modes β€” getting RX audio to another program

A digital program (WSJT-X, JTDX, MSHV, FLDigi…) needs to hear the receiver. Add the program under Settings β†’ Apps so you can launch it from the header chip. Lyra offers two audio routes β€” pick the one your program supports:

  • TCI β€” if your program speaks TCI (e.g. MSHV, SDRLogger+), it connects over the network and the RX audio rides that link directly. No virtual audio cable needed, and the same link carries transmit audio back the other way.
  • VAC β€” for programs that expect a sound-card input (e.g. WSJT-X, JTDX classic, FLDigi). Lyra plays RX audio into a virtual audio cable and the program records from it.

Which? If the app has a "TCI" radio/transport option, use TCI β€” least setup. If it only offers sound-card in/out, use VAC.

TCI route: Settings β†’ Network β€” enable Lyra's TCI server, note the port. In the program, choose TCI and point it at Lyra's address + port. RX audio now streams over TCI (transmit goes back the same way β€” set the mic source to TCI; see Setting up your mic input).

VAC route: install a virtual audio cable on Windows first (e.g. VB-CABLE) β€” it appears as both a playback and a recording device.

  1. Settings β†’ Audio β†’ Virtual Audio Cable (VAC1).
  2. Tick Enable VAC1 (RX→PC and PC→TX).
  3. Driver β€” the audio backend for the cable (default usually works).
  4. Output device β€” the cable's input side (e.g. "CABLE Input"): where Lyra sends RX audio.
  5. Set RX gain so the program's level meter sits in its happy range.
  6. In the program, set its audio input to the cable's output side (e.g. "CABLE Output").

There's an option to auto-enable VAC1 when you switch to a digital mode. VAC1 also carries PC β†’ TX (covered in Setting up your mic input).

Both ends, or neither. VAC1 is one two-way stream carrying both RX→PC and PC→TX. It opens both directions together, so if the Input device (PC→TX side) is missing or held by another app, the whole cable fails to open — you lose RX→PC audio too, not just transmit. If digital RX suddenly goes silent, check that both the VAC Input and Output devices in Settings → Audio are set to real, free devices (Lyra logs "VAC off this session" when the open fails). Close any app holding the cable and re-enable VAC1.

Latency (for fast ARQ modes like VarAC). Two controls tune how much buffering the cable carries:

  • Buffer size β€” the audio block (smaller = lower latency, more CPU, less dropout margin). 2048 is the safe default for SSB/voice.
  • Latency β€” the ring‑buffer depth in each direction.

For a quick‑turnaround digital mode (VarAC and other ARQ modes), a smaller buffer + lower latency shaves the TX↔RX turnaround. Keep the latency above roughly 2Γ— the buffer‑block time or the ring underflows. Use the live Monitor line below the controls β€” it shows ring fill % plus overflow/underflow per direction; drop the latency until the over/underflow counters just start to climb, then back off one step.

Both values are saved with the profile (schema v5), so a tight VarAC profile and a fat, safe SSB profile each keep their own latency posture β€” switching profiles switches the whole VAC setup with them.

Hearing your own transmit

On the Audio panel, MON TX monitors your own processed TX audio (set the level with the Monitor slider) so you can hear exactly what you're sending; it routes to the HL2 jack. For CW, CW MON sets the gateware sidetone level (separate from MON TX).

If something's wrong

  • No audio: check MUTE is off and Vol is up; confirm the right device under Out (the marked entry is active); on the HL2 jack make sure the plug is in the radio's jack.
  • Too quiet at full Vol: add gain on AF.
  • Clicks/dropouts on a PC device: that's the two-clock bridge under load β€” try a different backend of the same device under Out, close heavy audio apps, or switch to the HL2 jack (which avoids it entirely).
  • One side only: centre the Bal slider.
  • A digital app can't hear the radio: TCI β€” confirm the TCI server is on and the app is set to TCI on the right port; VAC β€” Lyra's Output device must be the cable's input side and the app's input the cable's output side (a matched pair); nudge RX gain.

Setting up your mic input

TX audio source β€” the radio's codec mic, a PC mic, or digital-mode audio.

Lyra lets you choose what drives the transmit chain, at Settings β†’ TX β†’ Mic source:

  • Mic In β€” a microphone in the Hermes Lite 2's mic jack (its onboard codec, AK4951 on HL2+). The default for voice.
  • PC Soundcard (VAC1) β€” audio from your PC (a USB/headset mic, or a program) via a virtual audio cable.
  • PC Soundcard (VAC2) β€” the second cable (RX2 audio; enable SUB).
  • TCI (digital modes) β€” audio streamed from a digital-mode program (MSHV, JTDX, WSJT-X, FLDigi…) over Lyra's TCI link; the mic is bypassed. A browser voice session is separate. It does not use this picker, and it does not leave the desk microphone on TCI. See Settings β†’ Remote.

Only one source is live at a time β€” whatever's selected goes on the air.

Remembered per radio. The mic source is saved per rig, so a Hermes Lite on its codec mic and a Brick on a PC mic each keep their own setting when you switch rigs β€” set it once per radio.

No usable mic jack? (some Brick / ANAN setups) Not every rig has a mic jack you can use β€” for example a Brick whose RX audio already runs over the network to your PC. For those, transmit with a PC Soundcard (VAC1) mic for voice, or TCI (digital modes) for FT8/etc. β€” both work on any rig, including the Brick. The "Mic In" default only applies to a radio with an onboard codec mic (e.g. the Hermes Lite 2's jack).

Which one:

  • Voice with a mic on the radio β†’ Mic In.
  • Voice with a PC/USB mic or headset β†’ PC Soundcard (VAC1).
  • FT8 / FT4 / RTTY / digital β†’ TCI (digital modes).

Watch the ALC meter while setting any source. A little ALC action on peaks is good; ALC slamming hard the whole time means too much input β€” back the gain off.

Mic In (radio's codec mic, AK4951)

  1. Plug your mic into the MIC jack on the Hermes Lite 2.
  2. Settings β†’ TX β†’ Mic source β†’ Mic In.
  3. Key into a dummy load, speak at your normal level, and raise Mic Gain until the ALC meter just flicks on voice peaks.
  4. If your mic is genuinely weak, tick Mic Boost (+20 dB hardware, codec mic only) β€” the HL2 codec's analog preamp β€” then fine-trim with Mic Gain. (Mic Boost only affects the codec mic; it does nothing for PC or TCI sources.)

PC Soundcard (VAC1) β€” a PC/USB mic

Use this when your microphone is on the computer. It rides the same virtual-cable bridge as digital modes (install one, e.g. VB-CABLE, if you're routing from another program; for a plain PC/USB mic, point VAC1's input straight at the mic).

  1. Settings β†’ TX β†’ Mic source β†’ PC Soundcard (VAC1).
  2. Settings β†’ Audio β†’ Virtual Audio Cable (VAC1): tick Enable, set Input device to your PC mic (or the cable's output side if feeding from another program), and set TX gain so the ALC sits right when you talk. Combine input mixes a two-channel source to mono if it comes through one-sided.
  3. Key up and check the ALC as above.

TCI (digital modes)

For FT8/FT4/RTTY/etc., the digital program sends transmit audio to Lyra over TCI β€” no microphone involved.

  1. Settings β†’ TX β†’ Mic source β†’ TCI (digital modes).
  2. Settings β†’ Network β€” make sure the TCI server is enabled.
  3. In the program (MSHV / JTDX / WSJT-X / FLDigi…), select TCI and point it at Lyra's address + TCI port.
  4. Set levels in the program so Lyra's ALC shows only light action β€” digital wants clean, just-below-ALC drive. If it's hot, Lyra also has a TCI input-gain trim to tame an over-driven client.

Setting levels (any source)

Aim for voice peaks (or digital drive) to push the ALC into a little action, not pinned. Too hot (ALC slammed) = distortion/splatter β€” reduce the gain (Mic Gain, VAC1 TX gain, or the digital app's level). Too cold (no ALC, low power) = raise it. For voice, start on a dummy load and use MON TX to hear your own processed audio while you dial it in.

If something's wrong

  • No transmit audio: confirm Mic source matches what you're using (a PC mic won't work if the source is still Mic In), you're keyed, and PA + Drive are set for real RF.
  • Mic In weak even at high Mic Gain: tick Mic Boost (+20 dB), then trim with Mic Gain.
  • Distorted, ALC pinned: back off the gain for the active source.
  • PC mic silent: source must be PC Soundcard (VAC1) and VAC1 enabled with the right Input device; enable Combine input if a stereo source is one-sided.
  • Digital app keys but nothing goes out: source must be TCI, the app set to TCI on the right port, and the app's output level up.

First voice setup (SSB / AM / FM)

New to the radio and just want to talk? This is the short, no-jargon path to your first voice contact. It covers the phone modes β€” SSB (USB/LSB), AM, and FM. The audio wiring is the same for all three β€” you just pick the mode you're operating. (Digital modes like FT8 use a different path β€” see Digital modes over TCI / VAC.)

Start with one question β€” where are your microphone and headphones/speaker plugged in?

  • Into the radio (it has a MIC jack and a PHONES jack on the box) β†’ Path A.
  • Into your computer (USB headset, a PC mic, PC speakers) β†’ Path B.

Follow only your path.

Path A β€” mic & headphones plugged into the radio βœ… simplest

This needs an HL2+ / AK4951 β€” the version with audio jacks on the box. Nothing touches Windows sound settings.

  1. Plug your headphones or speaker into the radio's PHONES jack.
  2. Plug your microphone into the radio's MIC jack.
  3. Settings β†’ Audio β†’ Out = "HL2 audio jack (AK4951)".
  4. Settings β†’ TX β†’ Mic source = "Mic In". If people say you're quiet, tick Mic Boost (+20 dB).
  5. Pick your mode and frequency β€” SSB (USB above 10 MHz, LSB below), or AM / FM as the band or net calls for.
  6. Hold your mic PTT (or a foot switch, or click MOX) and talk β€” watch the MIC meter move as you speak. That means it's hearing you.

Path B β€” mic & headphones plugged into the computer

Works on any HL2 or HL2+.

Hearing the radio (RX):

  1. Settings β†’ Audio β†’ Out = your PC speakers/headset (pick your Windows playback device from the list).

Talking (TX) β€” through a computer microphone:

  1. Know which kind of mic you have β€” both appear in Windows as an input device:
    • a USB microphone or USB headset shows up as its own device;
    • an analog mic in the PC's pink MIC jack, or into a sound-card / USB interface input, shows up as that card's Microphone / line-in.
  2. Set the mic up in Windows first β€” Lyra can't fix a mic Windows can't hear. In Windows β†’ Settings β†’ Sound β†’ Input, choose that microphone and set its mic level to a usable value (not muted, not maxed). Many mics ship muted or at 0; some USB mics/headsets also have their own manufacturer app or a hardware volume/mute β€” check it. Speak and confirm the Windows input bar moves.
  3. Point Lyra at it β€” Settings β†’ TX β†’ Mic source = "PC Soundcard (VAC1)", then Settings β†’ Audio β†’ VAC1 and set the Input device to that same Windows microphone.
  4. Pick your mode and frequency (as in Path A step 5), hold MOX (or your PTT), and talk β€” watch Lyra's MIC meter move. No movement β†’ go back to step 3 (Windows).

Display panel

The handful of spectrum/waterfall controls you reach for most often, one click away instead of buried in Settings. These mirror Settings β†’ Visuals β€” change them in either place and both stay in sync. The panel is laid out in old Lyra's three-row arrangement:

  • Zoom β€” magnify the panadapter around center: a preset combo (1Γ— / 2Γ— / 4Γ— / 8Γ— / 16Γ—) plus a fine slider and a live "N.Nx" readout. Zooming in narrows the displayed span so you can pull a single signal apart.

  • Panafall β€” the step the mouse wheel tunes by when you scroll over the panadapter/waterfall (1 Hz … 100 kHz). This is your coarse band-skim step, separate from the fine VFO step on the Tuning panel.

  • Exact / 100 Hz β€” how a panadapter click/drag/wheel tune lands:

    • Exact β€” go to where you clicked, snapped to the Panafall step above. With Panafall = 1 Hz that's truly exact; set it to 10/50 Hz (or higher) and clicks snap to that grid. The RX1 readout shows the full resolved frequency.
    • 100 Hz β€” quantize every click/drag/wheel tune to the nearest 100 Hz, regardless of the Panafall step.

    (At low zoom the panadapter is pixel-limited β€” each pixel can be tens of Hz wide β€” so to actually land on a 1 Hz boundary, zoom in or use the Tuning panel's fine step.)

  • Spec β€” spectrum frame rate (how many times per second the panadapter redraws).

  • WF β€” waterfall scroll rate (history rows per second).

  • Peak Hold β€” how the peak markers behave:

    • Off β€” no peak markers.
    • Live β€” markers ride the current spectrum.
    • 1 / 2 / 5 / 10 / 30 s β€” hold each peak for that long, then fade.
    • Hold β€” peaks never fade until you press Clear.
  • Decay β€” how fast held peaks fade once their hold time is up: Fast / Med / Slow (only matters in the timed modes).

  • Clear β€” wipe the held peaks and start fresh (handy in Hold mode).

The look-and-feel settings β€” palettes, smoothing, glow, gridline, peak style/color, noise floor β€” live in Settings β†’ Visuals. Those apply to both panes on a two-converter radio. SUB RX floor / ceiling is the extra Visuals pair for the second pane.


Meter panel

A GPU-drawn RX signal-strength meter with three looks β€” pick whichever you like with the small Arc | Bar | Ladder toggle in the panel's top-right corner (your choice is remembered):

  • Horizon Arc (default) β€” a sweep dial against a fixed, calibrated S-scale. The fill climbs through colour zones (cyan β†’ green β†’ amber β†’ red over S9) with a glowing "comet head" at the current level, a thin peak-hold pip that holds then fades, and a faint history trail in the dial's belly showing the last few seconds (handy for watching QSB / a station rising). Big S-unit readout in the centre with the dBm and SNR lines beneath.
  • Plasma Bar β€” a continuous level bar through the same colour zones, with a bright leading edge, peak-hold cap, a glass reflection beneath, and the readout (S-units / dBm / SNR) along the top.
  • Vertical Ladder β€” a compact multi-source column that shows several readouts at once as labelled bars (e.g. PWR / SWR / ALC together on transmit) instead of one big primary readout β€” handy when you want to watch the whole picture at a glance.

Both styles also carry an optional max-peak marker β€” a second, red "high-water mark" that latches the highest level reached and falls back gently, so a fleeting DX or QSB crest stays readable long after the fast yellow peak pip has dropped. The fast pip tracks recent activity; the red max marker remembers the loudest moment.

In Meter panel you can tune both timings: peak-hold (how long the fast pip hangs before falling, default 800 ms) and the max-peak marker (on/off + its own hold time, default 3 s) before its gentle decay.

Separate RX / TX style (optional). By default one style is used for both receive and transmit. Tick Separate RX / TX meter style in Settings β†’ Meter to use a different look on each β€” for example Horizon Arc while receiving and Vertical Ladder for a clean PWR/SWR read on transmit. Just like the source swap below, the style then changes automatically the instant you key up and back on unkey. The header Arc | Bar | Ladder buttons stay a live override for whichever state is showing at that moment.

What the meter shows:

  • S-units β€” standard scale (S1…S9, then +20/+40/+60 dB over S9). The scale follows the band: S9 = βˆ’73 dBm below 30 MHz, βˆ’93 dBm above, the same convention major HF SDR software uses.
  • dBm β€” the calibrated signal level.
  • SNR β€” signal above the noise floor in dB (shows β€” when there's nothing above the floor). The faint band/marker on the meter is the current noise floor, so you can see at a glance how far a signal stands out β€” i.e. how readable it is, not just how strong.

The meter reads the in-passband signal level from the DSP engine (the same source professional SDR software uses) and only moves while you're receiving (press β–Ά Start first; it rests at S0 when idle).

Calibration: the meter taps WDSP's in-passband RXA_S_PK level β€” the standard in-passband signal-strength point β€” and maps it through the HF/VHF S-unit scale (S9 = βˆ’73 dBm below 30 MHz, βˆ’93 dBm above). To make the absolute dBm/S reading exact, trim it once in Meter panel: tune to a known reference (WWV, or a signal generator at a known level) and adjust the S-meter calibration offset until it matches. With this tap the trim is only a few dB. On Hermes Lite 2 the meter subtracts LNA gain. On Protocol 2 it adds ATT plus the model's meter offset β€” never LNA, which is inert on P2. Either way the reading stays true-to-source as you (or Auto) move the front end; you can calibrate at any setting. The relative movement, peak-hold, SNR, and noise-floor behaviour are all live regardless.

PWR peaks. The forward-power needle keeps the loudest coupler sample between ticks, so a voice peak shows instead of the quiet sample that happened to land on the tick. Factory peak-hold for that needle is 700 ms if you have not saved your own (Settings β†’ Meter).

Transmit meters are fully wired. The wire / safety / telemetry set β€” PWR (forward power, watts), SWR (antenna match), ID (PA bias current), VDD (PA supply), Temp (HL2 board) β€” plus the full TX-chain dynamics set that taps every stage of the modulator chain in signal-flow order:

Picker entry What it shows Unit
MIC mic peak into the modulator dBFS
LEV leveler output level dBFS
LVL G leveler gain (how much it's boosting weak passages) dB (typically positive)
ALC ALC output level β€” what the wire sees dBFS
ALC G ALC gain reduction (how hard the limiter is working) dB (typically negative or 0)
ALC Ξ£ ALC_PK + ALC_GAIN β€” what the wire would see if the ALC weren't acting dBFS

All read live from the running TX chain the moment MOX engages, and show "β€”" on RX. Each meter uses the reference's ballistic exactly: the DSP engine smooths internally over ~100 ms, and the peak marker decays exponentially over ~500 ms (no UI-side over-smoothing β€” needles respond crisply to voice attack so transients show their true peak). Set the active TX source (and an optional secondary readout line, or a third line under that) in Meter panel. The panel auto-swaps from your RX source to your TX source on every MOX edge and back, so you can watch what you need without manual switching.

On CW the meter swaps to your TX set and shows forward power too β€” for keyboard/macro (console) sending and for a paddle, straight key, or external keyer into the radio. CW keys the PA at the radio's gateware (so the wire doesn't go through the normal MOX path), but Lyra still flips the meter for the duration of the over, then back to the S-meter when you stop.

Tip for dialing in the chain: pick MIC as primary + ALC G as secondary, key the mic, and adjust Mic Gain until MIC peaks land near βˆ’6 dBFS with ALC G staying under 3 dB. Want to see the leveler doing its work? Pick LVL G β€” a positive reading means the leveler is boosting a quiet passage to keep your modulator level consistent.

What's coming with v0.2.1: the Combinator (5-band multiband compressor + speech enhancements + parametric EQ + tube plating) lands as a Lyra-native processor before the WDSP TXA chain. Its per-band activity and total gain reduction will arrive as additional Meter Panel sources at that time β€” picker values 10/11/12 are reserved for them now.


TX panel

The operating-time TX controls β€” a single strip across one of the docks. Layout (left β†’ right):

[TX]  Drive ──●── 25 %  Mic ──●── +10 dB     [ VOX ] [ Tune ] [ MOX ]

(The full button cluster also carries ATT and Prot lamps β€” see ATT on TX and SWR protection. All five buttons share one tidy size, and each lamp always reflects the true on/off state no matter where you changed it β€” front panel or Settings.)

  • TX Drive (slider, 0–100 %, default 0) β€” how hard the HL2 drives its on-board PA. 0 % = no carrier even with PA enabled and MOX keyed. Start LOW (5–10 %) on a dummy load; raise gradually while watching the watt-meter. Mouse-wheel adjusts (Shift + wheel = 5 % steps). Live readback to the right shows the current %.
  • Mic Gain (slider, βˆ’90 dB to +40 dB, default 0 dB) β€” input gain into the WDSP TXA modulator (PanelGain1 β€” the only operator-tunable software gain stage in the TX chain, before the bandpass / leveler / ALC / everything downstream). 0 dB is WDSP unity = no boost vs the raw mic signal. Typical SSB voice runs +10 to +20 dB; ESSB with headroom +25 to +35 dB. The range matches the reference's Default TX profile (βˆ’90 deep-attenuate floor, +40 ceiling), so the full operating travel is preserved. Mouse-wheel adjusts (Shift + wheel = 5 dB steps). Bidirectionally bound with the spin-box in Settings β†’ TX β†’ Mic + ALC β€” moving either updates both, so you can adjust on the fly here or type a precise value in Settings. Watch the ALC meter as you raise β€” back off when ALC engages hard (more than ~3 dB of gain reduction means you're driving past the limiter ceiling and creating splatter risk).
  • VOX button (labelled VOX off / VOX / VOX ●) β€” arms voice-operated transmit: when armed, speaking into the mic keys TX and TX drops after your voice stops (see Settings β†’ VOX for the threshold / timing / anti-VOX knobs). Gray = off; green = armed (listening to your mic); red ● = keying right now on your voice. Click to arm / disarm β€” bidirectional with the Settings β†’ VOX tab. VOX keys voice modes only (never CW), and never overrides a manual or foot-switch key. Clicking it off is an instant kill: it drops a VOX-held transmission immediately. Default OFF.
  • Tune button (labelled Tune) β€” single-click gesture: arms a 1 kHz tune carrier AND keys MOX in one click. Click again to release MOX; the carrier auto-disarms on the next MOX-off edge for any reason (your click, the safety timeout, the FSM unwinding). When armed the button border glows amber. Carrier power follows the Tune drive mode you pick in Settings β†’ TX (your TX Drive slider, a separate tune slider, or a fixed value β€” see there), and is always held to your Max TX drive ceiling.
  • MOX button β€” the keying button. Funnels through Lyra's TR- sequenced FSM (the same one your space-bar momentary uses when no text widget has focus). Goes bold red the instant the wire- MOX bit settles after the TR-delay window. A short tap shorter than the TR-delay (β‰ˆ 65 ms by default) still flashes the button orange for ~220 ms so you get visual feedback that your press registered β€” even if the FSM cancelled mid-keydown.

What the button colours mean, at a glance:

MOX button colour Meaning
Gray Idle (RX)
Orange flash (~220 ms) You just pressed; wire-MOX hasn't settled yet
Bold red Wire-MOX bit is high β€” radio is keyed, RF flowing if PA + Drive permit

TUN is a strict superset of MOX for tune-up: it does what MOX does PLUS injects the 1 kHz tune carrier. Use MOX when you want the relay to switch (CW key-down testing, mic feed-through, or with future SSB modulator); use TUN when you want a steady carrier on your dial frequency to set drive level / read an SWR / cal an external watt-meter / bias-tune an external amp.

Both buttons honour the safety knobs. They route through the same FSM that respects the TR-sequencing delays (see Settings β†’ TX) and the PA Enable safety gate (see Settings β†’ Hardware β†’ Transmit). Carrier amplitude follows the cosΒ² fade envelope on every keydown and keyup β€” no hard step, no click.

PA Enable is separate from MOX. With PA disabled, keying MOX or TUN gives you the relay click + the wire-MOX state but zero RF (the gateware PA bias never engages). This is the safe state for first-time bench work β€” leave PA off until you're confident in your Drive setting, fade defaults, and amp configuration.

Foot switch / hand-mic PTT β€” the HL2's hardware PTT-input pin is supported via an opt-in checkbox in Settings β†’ Hardware β†’ Transmit. Default OFF for safety; tick it after a quick bench check on your specific HL2 unit.


Waterfall ID (TX callsign courtesy ID)

Lyra can paint your callsign as a small image in the top of your transmitted SSB waterfall β€” a courtesy ID the receiving station can read on their own waterfall. It's a visual nicety, not a substitute for identifying by voice.

  • Arm it with the WF-ID chip (top toolbar, Options group). Armed (amber) = it sends one ID now and then repeats every N minutes.
  • Set it up on the TX panel β†’ Waterfall ID section: the repeat interval, the Level (how strong the image is in the passband β€” keep it low so it doesn't dominate your audio), and a manual Send button for a one-shot ID.
  • USB/LSB voice only. In digital modes your call is already in the payload, so WF-ID is disabled there.
  • Ham bands only. The chip is dead β€” and the ID can never fire, from any tune source β€” anywhere outside an amateur allocation for your band plan (Settings β†’ Hardware region). So 11m / CB and, say, a US ham who spins onto 7.310 (the 41m broadcast band) can't raster a callsign where it doesn't belong. The check follows your region (US / IARU-R1 / R3), so it uses the right band edges.
  • Safe by design. It re-arms OFF every session (so it can never auto-key on a fresh launch), and any band-edge crossing or mode change disarms it β€” a courtesy ID can't carry over into a context you didn't intend.

Right-click the WF-ID chip for this help; the same goes for CTUN.


PureSignal

PureSignal is adaptive predistortion: while you transmit, Lyra watches a coupler sample of the PA output and trains a correction so the on-air signal is cleaner (less IMD). It is not a power booster.

Hardware. Hermes Lite 2 / 2+ needs the PureSignal coupler mod on that radio. BrickSDR2 uses the radio's Protocol-2 feedback path (ADC0 pad). Do not turn this on unless that hardware is actually installed β€” without a coupler you get garbage feedback and a worse signal.

PS jack vs MAP RX2. Plug the sampler return into the Brick3 rear PS jack. Lyra already uses that port when PureSignal is on. There is no Internal/EXT1 switch (Thetis does not have one either). MAP RX2 is a receive jack, not the PS coupler. Do not retune MAP to β€œfix” PureSignal.

Dummy load first. Bring PS up into a dummy load, not the antenna. You need enough RF for the coupler to see (on a bare HL2 that is often more than 2–3 W β€” typically closer to 5–8 W / high drive).

Kill-test (before any antenna). While keyed with PS armed into the dummy, force-kill Lyra (taskkill /F on lyra.exe / python is not the app β€” kill lyra.exe). Confirm PA current / wattmeter drops within a few seconds. That proves the radio will not sit keyed if the PC dies.

Where the controls live

Surface What it is
Settings β†’ TX Attestation checkbox (default off). Tick only if this radio has the coupler. Until then Arm stays inert.
Header Options β†’ PureSignal Opens the compact PURESIGNAL dock
Header Options β†’ Amp View Opens the AMP VIEW plot (last two chips on the Options row)
PureSignal dock 2-tone Two equal tones that key MOX. Same generator as the TX dock. Average power reads about half of TUN.
PureSignal dock Voice Male-voice shaped noise that keys MOX. The level spin next to it is βˆ’12 to +3 dB.

Modes that force PureSignal off

The ON / Arm chip follows the focused Mode combo (the VFO you last clicked), not only RX1. SUB on RX2 in DIGU with RX1 still USB still turns PS off.

Your Arm tick is remembered. Lyra just holds the calibrator off in the modes below; leave those modes and Arm comes back if it was on.

Mode PureSignal
USB, LSB Available β€” this is the usual phone / ESSB path
AM, SAM, DSB Available
DIGU, DIGL, DRM Forced off β€” data / AFSK (PS can raise IMD)
CWL, CWU Forced off β€” keyed CW; HL2 also uses CW state bits, not a voice envelope
FM Forced off β€” constant-envelope; nothing for the coupler to linearize

FM RPT is still FM β€” PS stays off. This list is not the same as TX-rack auto-bypass: the rack greys out in DIGU / DIGL / CW; FM still uses the mic rack, but PureSignal stays off.

Compact PureSignal dock

  • ON / Arm β€” arms the calibrator. The coupler path is live only while MOX is also on and the focused mode is not on the lock-out list above. The chip goes off in those modes even if Arm is still ticked in Settings.
  • 2-tone β€” two equal tones into the transmit chain, and it keys MOX. Peak power matches TUN; the wattmeter reads average, so expect about half the TUN reading (18–20 W TUN is often 8–11 W of 2-tone). Click again to unkey. The same button is on the TX dock.
  • Voice β€” continuous noise shaped like a male voice: most of the energy from about 300 Hz to 1 kHz, consonants falling off through 3 kHz. The transmit filter still sets the occupied width. It keys MOX. Click again to unkey. Voice is only on this dock. Only one of TUN, 2-tone, and Voice runs at a time; clicking another switches the generator without you having to unkey first. All three drop when MOX drops. Voice does not stay armed across restarts.
  • Voice level β€” the spin beside Voice, βˆ’12 to +3 dB. 0 is a normal loud level. +3 is the top. βˆ’12 is quiet. The number is remembered. A continuous noise has no speech pauses, so average PA power is higher than talking β€” keep key-downs short, and use a dummy load. The wattmeter still stays under a full TUN carrier, because TUN is one full-scale tone and Voice is a shaped band. If the reading is only a couple of watts, turn the spin up.
  • SUB β€” if Dual-RX was on, Lyra pauses SUB for the keyed PS window so DDC0/DDC1 can carry TX + feedback. Your saved SUB preference is not flipped off in Settings; SUB comes back when you unkey / disarm.
  • Diversity β€” the mix drops for the same keyed window and comes back when you unkey. The ON switch stays where you left it.
  • FB chip β€” glance feedback level (0–255-class count). Colour while armed and keyed:
    • Teal β€” too low (below 129): raise drive / coupler coupling, or the auto-att is still hunting down.
    • Green β€” the working window 129–181 (aim near ~152).
    • Red β€” too hot (above 181): auto-att should pad down; if it stays red, drop drive.
    • Muted β€” not armed+keyed (idle).
  • ATT chip β€” the auto-att pad Lyra last used (dB). On HL2 this is the TX step attenuator (same writer as ATT-on-TX). On Brick this is the ADC0 receive pad (0–31), not the ATT-31 PROT lamp. Lyra keeps the last pad across PTT and per TX band (20 m can sit at 8 dB while 40 m stays 0) so the next key on that band does not re-hunt from the seed.
  • Reset β€” restart the calibrator. Use after a stuck state, not as a daily ritual. Engine chips (st / cal / D0 / D1) live on Amp View, not this strip. D0/D1 both ~0 with drive up usually means not enough RF into the coupler.

Auto-att only steps when the engine says a new calibration attempt happened and FB is outside 129–181. It should not slam ATT on every keyup.

Amp View

Same PS engine, bigger picture β€” modeled on the usual HPSDR AmpView plot (live GetPSDisp curve).

  • The plot keeps moving while you transmit (plasma-style trace).
  • Snap β€” captures the peak marker (GetPk). It is not a retune of SetPk. SetPk follows the radio (HL2 0.233, Hermes-class P2 / 100D / Brick3 0.2899, G2 0.6121) and is stored per-rig; Amp View can still nudge it. Use Snap to mark where the peaks sat; the plot still runs.
  • Hold β€” freezes the plot only. Telemetry chips still update.
  • Extra chips (same GetPSInfo words as the compact dock, plus more): txrx, mag, phc, phs, sln.chk, rxs, dg.cnt, plus FB (same colour rules) and ATT. sln.chk / dg.cnt go amber when non-zero (worth a look, not an automatic panic).

Typical dummy-load session

  1. Settings β†’ TX β†’ tick attestation for this radio.
  2. Dummy load, PA on, drive low, then raise until the wattmeter is in the 5–8 W class on a bare HL2 (Brick often wants similar or a bit more until ADC0 auto-att settles).
  3. Stay in USB / LSB / AM / SAM / DSB. Open PureSignal, Arm ON. (FM, CW, and DIG force Arm off β€” you will not see a live coupler.)
  4. Key Voice or 2-tone (or TUN / MOX + speech). Voice fills the voice band and is the easier stimulus when 2-tone is light on the coupler. Watch FB go teal β†’ green. ATT may step a few times, then hold.
  5. Open Amp View if you want the curve. Snap / Hold as needed.
  6. Unkey β€” FB goes idle/muted; ATT stays at the last pad.
  7. Next keyup should land near the previous FB, not a full hunt.
  8. Kill-test once, then antenna when you are ready.

ANAN-7000 / 8000 TX stays locked; do not expect PS there yet. Classic ANAN P2 TX is dummy-load / not on-air validated.


TX DSP rack (EQ + Speech + Combinator + Plating)

Lyra ships four native, operator-tunable DSP stages that sit on the mic audio before the WDSP TXA modulator β€” your own EQ, speech-conditioning, multiband-compressor and plate-reverb rack, done Lyra-native. They run in chain order Speech β†’ EQ β†’ Combinator β†’ Plating. Each lives in its own dockable / collapsible panel (show/hide from the window's dock menu; drag, float and resize like any Lyra panel), and your layout is saved with the rest of your window state.

How bypass works (read this first)

Every item in the rack is independently bypassable, and bypass means exactly what you'd hope:

When an item is OFF it leaves the mic audio untouched β€” that stage's processing is skipped entirely (a true pass-through), bit-for-bit.

This matches the reference's behaviour β€” its TX EQ and compressor are manual on/off, and off means "not applied." Three things to keep in mind so you're never surprised:

  • The EQ ships ON. Its default layout includes a gentle high-pass and a high-shelf that shape the audio even at 0 dB gain. For a genuinely flat, unprocessed mic path, turn the EQ's ON button off β€” don't just zero the gains.
  • The rack is pre-modulator. Turning rack items off does not bypass the radio's transmit DSP: the always-on ALC limiter (splatter protection) and your selected TX bandwidth filter always run downstream β€” plus the Leveler / PHROT if you've enabled them in Settings β†’ TX. "Item off" means clean through that item, not clean to the antenna.
  • Default states differ. The EQ ships ON; TX Speech, the Combinator and Plating ship OFF (they materially process the audio, so they wait for you to enable them).
  • Digital modes auto-bypass the whole rack. In DIGU / DIGL Lyra automatically skips the entire native rack (EQ + Speech + Combinator + Plating) so FT8 / JS8 / etc. transmit unshaped β€” you don't have to switch anything off. (This auto-gate is a Lyra convenience; the reference leaves it to you to untick manually or load a digital profile.) The panels show this at a glance: in DIGU / DIGL β€” and in CW, where there's no mic audio to shape β€” each rack panel's ON lamp greys out, its controls dim, and an amber "bypassed (MODE)" hint appears in the header. It's purely cosmetic: your settings are untouched and the panels re-light the instant you return to a voice mode (USB / LSB / AM / FM).

TX EQ β€” 10-band parametric

A draggable response curve over a live spectrum analyzer.

  • Bands β€” drag a node to set its frequency + gain; mouse-wheel over the selected node sets Q (width). Each band has a Type chip that cycles Peak / Low-shelf / High-shelf / Low-pass / High-pass / Bandpass / Notch. The default layout opens with a 60 Hz high-pass and a high-shelf; that high-pass β€” like any band β€” can be dragged down to the 20 Hz frequency floor or up.
  • Tile row under the curve shows each band's #, type, freq and gain/Q. Right-click a tile to reset just that one band.
  • Top bar β€” ON (bypass; see above) Β· Makeup output trim (Β± dB) Β· Reset (flatten all bands back to their defaults) Β· collapse β–Ό.
  • Analyzer behind the curve β€” the Spec button cycles Off β†’ Spectrum β†’ RTA (a line/fill spectrum, or log-spaced 1/N-octave band bars). Acc adds a red peak-hold overlay; right-click Acc for the hang preset: Live (tracks the instantaneous signal, no hold) / Fast / Medium / Slow / Hold (never decays). B/A overlays the pre-EQ ("before") trace in white against the post-EQ cyan so you can see exactly what the EQ did. On an HL2+ the mic codec free- runs, so the analyzer animates on receive too β€” you can shape your EQ while just listening, no need to key up (it's analysed, not transmitted, until you actually key).

RX EQ β€” receive parametric EQ

The receive-side twin of the TX EQ β€” the same 10-band panel and the same controls (drag a node for frequency + gain, wheel for Q, Type chips, the tile row, Makeup, Reset, and the analyzer behind the curve), applied to what you hear instead of to your mic. Open it from the RX DSP β†’ RX EQ chip on the header strip; it pops as a movable window and your layout is remembered, exactly like the TX DSP panels.

  • What it shapes β€” the receive audio after WDSP, so it colours the headphone/speaker output and anything bridged out (recording, VAC, a digital-mode app).
  • Graph width tracks the RX bandwidth β€” the curve spans the receive passband actually in use, so the bands sit where the audio is. Change your RX filter width and the EQ rescales to match.
  • ON / bypass β€” the top-bar ON button bypasses the RX EQ in any mode. It additionally auto-bypasses in the digital data modes (DIGU / DIGL) so decoders always get flat audio; it stays available in CW and SSB.
  • Separate from TX β€” the RX EQ is a standalone listening setting (its own bands + bypass + makeup, remembered across sessions). It is not part of a TX profile β€” switching TX profiles never touches your receive EQ.

TX Speech β€” Noise Gate β†’ Auto-AGC β†’ De-esser

Three independent stages, processed in that order, each with its own ON toggle. All three default OFF, so the panel changes nothing until you enable a stage.

  • Noise Gate (first) β€” gates shack background noise between words. Threshold (default βˆ’45 dBFS), Range/Depth (how far it attenuates when closed, default 60 dB) and Hold (default 120 ms). It freezes the Auto-AGC gain while closed so pauses don't "breathe."
  • Auto-AGC β€” an input leveller that rides quiet and loud passages toward a target level (Target, Max-gain cap). This is distinct from the WDSP output Leveler in Settings β†’ TX.
  • De-esser β€” a frequency-selective compressor that tames harsh sibilance ("s" / "sh"). Frequency (where it listens), Threshold and Range (maximum ducking).

TX Combinator β€” 5-band multiband compressor

The last native stage (after the EQ). It splits the mic into five bands with 24 dB/oct crossovers, compresses each independently, sums them, and optionally auto-balances the bands β€” the classic "broadcast / ESSB" multiband sound. Default OFF. Lyra does not expose a separate WDSP CFC control β€” the Combinator is the multiband compressor.

  • ON β€” engages the stage (top-bar button). Off = true pass-through.
  • Global controls: Mix (wet/dry β€” 100 % = fully processed), Attack / Release, Ratio (one ratio, all bands), X-Over (shifts the whole band split), and global Thresh / Makeup that every band rides on top of.
  • SBC (Spectral Balance Control) β€” when engaged, automatically balances the level between the bands; Speed sets how aggressively it works.
  • Per-band β€” pick a band (LOW / LO-MID / MID / HI-MID / HIGH) and set its Thresh offset and Gain (makeup), or switch the band off. The five colour-matched meters show each band's gain reduction live while you transmit.

The panel mirrors a hardware multiband processor's layout; the shipped default is N8SDR's own preset. It auto-bypasses in DIGU/DIGL with the rest of the rack.

TX Plating β€” plate reverb (ESSB air)

The last native stage (after the Combinator). A plate-class reverb for the ESSB "broadcast air" sound β€” a subtle wet tail that adds space without washing out the voice. Default OFF. Bandplan-constrained operators (contest, crowded DX) just leave it off.

  • ON β€” engages the stage. Off = true pass-through.
  • Preset picker β€” W5UDX and N8SDR load the two ship presets (the eight reverb params); your Mix is left untouched (it's a personal wet-level).
  • Controls: Pre-Delay (gap before the tail), Decay (tail length / RT60), Damp (how fast the tail's highs roll off), Size (plate size), Density + Diffusion (echo smoothness), Bass / Treble (wet-tail tone), and Mix β€” the reverb amount, capped at 15 % (the useful ESSB range) and shipped at 7 %.

It sits before the always-on ALC limiter, so the reverb tail is caught by the limiter; it auto-bypasses in DIGU/DIGL with the rest of the rack.


Voice keyer & recording

The voice keyer is the phone-mode counterpart to the CW macro bank: record your standard messages once β€” a CQ call, a contest exchange, a "please stand by" β€” and send them on the air from a labelled button or an F-key. It also doubles as a recorder for what you hear (RX), so you can grab a weak signal or an odd bit of traffic to a WAV file.

Open it from the Voice Keyer chip in the header Options group β€” it's a floating panel you can dock or leave floating, laid out like the CW console's macro chips.

Recording a message

  1. Pick the source with the Mic / RX toggle β€” Mic records your voice through the mic (for a keyer clip), RX records the receiver audio you're listening to.
  2. Press REC. If you set a record countdown (see Settings below), the button shows ⏱ 5… ⏱ 4… so you can get set before capture starts β€” click it again to cancel.
  3. Press Stop. The clip is saved, auto-named ("Message 1"…), and appears as a labelled row.

Managing clips β€” each row has an edit mode (rename, assign an F-key, set a per-clip gain trim, or delete with the trash-can). Import WAV pulls in a clip you recorded elsewhere; the footer shows the storage folder (clips live as 48 kHz WAV in %APPDATA%\Lyra\clips\).

Playing a clip two ways

  • β–Ά Review plays the clip locally through your speakers β€” it does not transmit. Use it to check a recording before you send it.
  • β–Ά OTA (or the clip's F-key in a voice mode) transmits the clip.

Transmitting on the air (opt-in) β€” OTA transmit is gated behind the amber Enable TX toggle at the top of the panel, off by default. Until you arm it, the keyer can only Review locally β€” so you can build and audition your clips with no risk of keying up. With it armed, a clip is injected at the mic input with MOX, so it runs your full TX DSP chain (EQ, speech, compression, ALC) and is PureSignal-safe exactly like your live voice. The Bypass DSP toggle sends the clip as-recorded instead. The keyer keys with its own priority and never overrides a manual, foot-switch, or VOX key.

Gain is adjustable three ways β€” a global keyer level, the per-clip trim, and the input level while recording β€” and the OTA level is live while you're transmitting, so you can ride it up or down mid-message.

Recording options (Settings β†’ Audio β†’ "Voice keyer recording")

  • Maximum length β€” caps any single recording (default 5 minutes).
  • Record countdown β€” Off / 5 s / 10 s, the "get set" timer shown on the REC button.

Session recorder (RX audio + snapshots + MP4)

Where the voice keyer grabs short clips, the session recorder captures a whole listening session β€” the receive audio to a WAV, plus timed snapshots of the panadapter/waterfall β€” into one timestamped folder. You can later turn that folder into a single MP4 where the snapshots play as a slideshow over the audio, handy for sharing a band opening or an unusual signal.

Open it from the ⏺ Recorder chip in the header, between the RX DSP and Options groups. Click it to pop out the Recorder panel (a floating tool window). While a recording is running, that same chip turns into a red ● REC hh:mm:ss timer so you always know at a glance that it's rolling β€” click it to reopen the panel, where Stop lives.

The Recorder panel

  • ● Rec / β–  Stop β€” start or stop a session.
  • The timer shows elapsed time.
  • Snapshots β€” a checkbox plus a /min rate. Off = audio-only (no images). The rate also lives in Settings and stays in sync.
  • βš™ β€” jumps to Settings β†’ Recording for the folder, limits, and the saved-sessions list.

You have to be on the air to record. Recording needs live receive audio, so Record does nothing while the radio stream is stopped β€” press β–Ά Start in the header first. (Otherwise you'd just capture silence.) RX WAV works on Protocol 1 and Protocol 2. Snapshots try a Vulkan framebuffer grab first, then a screen grab, then a widget grab.

Settings β†’ Recording

  • Recordings folder β€” where sessions are saved (default %USERPROFILE%\Lyra\Recordings, never the install folder under Program Files). Browse to pick your own, Default to go back.
  • Snapshots β€” master on/off and the capture rate (per minute).
  • Auto-split β€” start a fresh audio file every N minutes and/or every N MB (both default off). Useful for very long sessions.
  • Hard stop after β€” an automatic stop (default 10 min). This is the "did I walk away and leave it running?" guard β€” set it to off only if you really mean to record unattended.
  • Storage cap β€” a ceiling on the whole recordings folder (default 5 GB). When you're over it, Lyra refuses to start a new recording rather than silently deleting anything; tick Auto-delete oldest if you'd prefer a rolling "keep the newest" behaviour instead.
  • Recorded sessions β€” a radio-button list of what you've saved (name + size), with Convert to MP4, Open folder, Rename, and Delete. The line underneath shows how many sessions you have and how much of the cap they use (it turns red when you're over).

What's in a session folder β€” the raw pieces, always kept: audio_001.wav (and _002… if it split), snap_0001.png, snap_0002.png… and a small session.json that records when each snapshot was taken. The MP4 (if you make one) lands here too as session.mp4.

Making an MP4 (the Convert button)

Convert to MP4 builds one playable video from a session: the snapshots become a slideshow, each shown at the moment it was actually captured (so it lines up with the audio), with the receive audio underneath. An audio-only session (snapshots off) exports as a session.m4a instead.

The conversion runs in the background at low priority as a separate program, so it never interrupts your receive audio β€” you can keep operating while it works; a progress bar tracks it.

  • It needs ffmpeg. Lyra doesn't bundle it. Put ffmpeg.exe next to Lyra (or anywhere on your system PATH), or use the Browse button in the Video encoder (ffmpeg) box on this page to point at it. It's a free download from ffmpeg.org/download. Until Lyra finds it, that box shows "not found" and Convert is disabled.
  • Transmit is locked out while converting, and Convert won't start while you're transmitting β€” the encoder and the radio don't fight over the moment.

Is it legal to record?

For most operators, yes β€” but you own the local details. Amateur radio is an open service (there's no expectation of privacy on the ham bands the way there is on a phone call), so recording the traffic you receive for your own use β€” a QSO, a band opening, a contest run β€” is normal and generally fine. Two common-sense cautions: some regions have their own rules about recording, and before you publish a recording (post a video, share a clip) it's courteous β€” and in some places required β€” to have the consent of the other operators you recorded. This isn't legal advice; when in doubt, check your own country's amateur regulations.


CW operating (paddle, keyboard, TCI)

Set the mode to CWU or CWL and your tuned carrier sits on the marker, offset into the passband by your CW Pitch (the single pitch shared by the RX beat note, the marker, the keyed carrier, and the sidetone β€” set it on the Tuning panel or the CW console). The HL2's gateware makes the carrier envelope and the hardware sidetone; Lyra just tells it when to key. There are three ways to key:

1 β€” Paddle / straight key (into the HL2 KEY jack). The radio's built-in iambic keyer reads your paddle and keys the carrier + sidetone on its own β€” the host stays out of the timing, so it's crisp regardless of PC load. Speed, weight, iambic A/B, and reverse are in Settings β†’ CW. This is also where an external keyer or Winkeyer goes: plug its KEY output into the HL2 KEY jack and turn Iambic OFF in Settings β†’ CW β€” the keyer already does its own timing, so the radio passes the key straight through (leaving Iambic ON would re-key it as a paddle). A Winkeyer's USB/COM port is for its own config app (WK3tools, your logger), not Lyra.

1b β€” CW key over a COM port. If your straight key, bug, or external keyer's key line is wired to a serial port pin instead of the KEY jack, turn on Settings β†’ CW β†’ "CW key over COM port", pick the port and the key line (CTS or DSR), and it keys Lyra's CW. It's off by default. Because a host-polled serial line adds a little timing jitter, the KEY jack above is the better route for a paddle or high-speed sending β€” this option is best for a straight key or a keyer that times itself.

2 β€” Keyboard + macros (the CW console). Click the CW chip on the top toolbar to pop open the floating CW Console (it floats by default and remembers where you put it β€” only open it when you want it). It works only in CWU/CWL; outside CW the send controls dim, so switch to CW first. The WPM slider sets the speed; Esc or the red Stop Β· Esc button aborts whatever is sending. The bottom type-and-send line keys a line live β€” type and press Enter. Lyra also has a separate RX CW decoder panel (the CW Dec toolbar chip) that reads the other station and can drop their call straight into your macros β€” see Reading CW β€” the RX decoder.

The console's centerpiece is the macro bank β€” named, click-to-send CW memories:

  • Send a macro β€” click its chip, or press its F-key (F1–F12). The F-keys work anywhere in Lyra while you're in CW (you don't have to click into the console first), like a contest keyer. The chip lights and shows "sending…" until the keyed text finishes; Esc/Stop kills it.
  • Defaults ship for the common calls (CQ, CQ contest, His call, Reply, Exchange, TU 73, AGN?, QRZ?). Below the ── My macros ── divider is your space: click + Add macro to build your own; they save automatically and survive restarts.
  • Repeat (the toggle + seconds box) re-sends the last macro you fired every N seconds β€” handy for calling CQ. Stop also clears Repeat.
  • Edit (top-right) flips every chip into editable name + text fields with a delete (βœ•); click Done when finished.

Tokens β€” fill-in-the-blanks for your macros. Instead of fixed text, a macro can contain tokens in {BRACES} that expand when you send:

  • About the contact (from the console's contact row β€” His call / Name / RST / #): {CALL} {NAME} {RST} {#}. Copy the other station's call into His call β€” type it, or grab it straight from the CW decoder β€” set RST/serial, and one "Reply" macro works for every QSO. {MYCALL} is your own call from Settings β†’ Hardware.
  • Your personal tokens β€” reusable facts about you that you set once. In Edit mode, under My tokens, add a name + value (e.g. {ME} = Rick, {PWR} = 25 watts, {QTH} = Hamilton OH, {RIG}, {ANT}). Then any macro using {ME} / {PWR} / {QTH} fills in automatically. (The five built-in names above are reserved.)
  • {LOG} β€” an action token, not text. Drop {LOG} into a macro and it is stripped from the keyed Morse (never sent on the air) β€” instead it logs the current QSO to a linked SDRLogger+ when the macro is sent. Put it on the end of your sign-off (TU 73 {MYCALL} ee {LOG}) to log as you say 73, or make a macro that is only {LOG} for a one-click "log it" button that keys nothing. It does something only when the SDRLogger+ Combo link is on; otherwise it's harmlessly ignored.
  • Click to insert β€” the token palette sits just above the send line. Click into a macro's text field (in Edit mode) or the send line, then click a token chip to drop it in at the cursor β€” no need to type the braces. Built-in tokens are amber, your personal ones cyan, and the {LOG} action token is yellow (it lights up only when your cursor is in a macro's text field β€” it doesn't belong on the live send line).

3 β€” From a logger over TCI. A TCI logging/contest program can key CW through Lyra β€” see CW keying over TCI.

Break-in (Settings β†’ CW):

  • QSK (default) β€” full break-in: the gateware keys the carrier and you stay on receive between elements, so you hear the band right up to the next dit. The panadapter stays on the RX waterfall and you can watch your own dits/dahs land on the marker.
  • Semi β€” the radio holds transmit through the character and drops back to RX after a short hang.
  • Manual β€” you hold a foot switch (PTT) to put the radio in transmit and key with your paddle inside it; release the foot switch to return to RX.

Sidetone level β€” the CW MON slider on the Audio panel (it appears only in CW) sets how loud you hear your own keying. It's the hardware-generated CW sidetone and is independent of the MON monitor used for SSB.

Reading CW β€” the RX decoder

Lyra has a built-in CW reader β€” this stays in Lyra (it is not an Apps companion). Click the CW Dec chip on the top toolbar to pop open the floating CW Decoder (it floats and remembers where you put it). It reads only in CWU/CWL β€” outside CW the detector controls dim and a "switch to CW to decode" note shows.

The decoder is a faithful port of fldigi's CW receiver (the W1HKJ open-source Morse engine), so if you know fldigi's CW behaviour, this is it.

Quick copy β€” the 60-second recipe. The one thing that matters is putting the signal on your pitch; the rest is defaults.

  1. CW Dec chip β†’ set mode CWU/CWL.
  2. Land the note on your CW pitch β€” by ear, or turn on the zero-beat needle and centre it. There's no AFC, so this is the whole game β€” a signal on pitch copies, off-pitch doesn't.
  3. Set Speed near the fist (β‰ˆ18 rag-chew, 30+ contest) and leave Tracking on β€” it learns and follows the real speed from there.
  4. Only if copy is rough: narrow Bandwidth to ~80–100 Hz to shake a close neighbour; flip Matched filter on for a steady signal in QRM; turn Squelch on and set it (watch the Signal bar) just under the signal peaks to kill * noise between stations.
  5. Answer in one move β€” double-click their call in the text β†’ His call, and a {CALL} "Reply" macro is ready. Turn on Match TX speed to RX WPM to send back at their pace.

Tune the signal onto your CW pitch. The decoder listens at the same single CW Pitch the rest of the radio uses, so just put the signal's beat note where you normally hear it and the decoder is on it. There is no AFC (same as fldigi) β€” you tune the signal to your pitch and it copies at that pitch; the Bandwidth control gives you the tolerance for small drift.

The text pane. Decoded characters scroll live, and the pane auto-scrolls to keep the newest text in view. The WPM readout (top right) shows the speed it's tracking (it seeds from your Speed setting and, with Tracking on, follows the sender's real fist). Decoding toggles the reader; Clear wipes the pane. Under Display you can set the font size and pick a text colour. An unrecognised element string prints as * (fldigi's "noise" character) rather than a wrong guess.

Grab a call or name into your macros. Worked a station you want to answer? Pull their call straight out of the decoded text:

  • Double-click a word β†’ it goes to His call.
  • Right-click a word β†’ a menu offers β†’ His Call or β†’ Name.
  • Or drag-select and click the β†’ His Call / β†’ Name chips.

That fills the CW console's contact row, so a "Reply" macro built from {CALL} / {NAME} instantly addresses that station β€” no typing. And if the SDRLogger+ Combo link is on, that same grab is pushed to SDRLogger+: the call drops into its log entry, its callbook lookup fires, and the operator's first name comes back to fill your {NAME} token β€” so one double-click on the decoded call sets up both the reply and the log.

Match TX speed to RX WPM (under Keyer) β€” turn this on and your keyer's send speed follows the speed you're copying, so you answer at the other operator's pace automatically. The current keyer speed shows beside it.

The detector knobs. These are exactly fldigi's CW controls β€” nothing more, nothing less. The shipped defaults (Speed 18, Tracking on, Matched filter off, Bandwidth 150 Hz, Squelch off) are fldigi's own defaults and copy well on typical signals; reach for the rest only when copy is rough:

  • Speed β€” the WPM the decoder starts from, set with the Β± chips (or type a value). It's a seed, not a lock: with Tracking on the decoder learns the sender's real speed from the first few characters and the header WPM follows. Set it near the signal you're working (say 18 for a rag-chew, 30+ for contest CW) so it locks in faster.
  • Tracking β€” the adaptive speed follower. On (default) the decoder measures dot/dash lengths from validated element pairs and tracks a drifting or uneven fist automatically β€” the right setting for hand-sent CW. Turn it off to pin the decoder to your Speed value when you want it to ignore a ragged or interfering fist.
  • Matched filter β€” swaps the decoder's front-end low-pass for a tighter matched filter whose bandwidth follows the speed (fldigi sizes it at 5 Γ— WPM). On gives cleaner element edges and better copy on a single steady signal in QRM; off (default) uses the plain Bandwidth filter, which is more forgiving of drift and speed changes. When it's on, the Bandwidth slider reads "auto" because the filter width is derived from the speed.
  • Bandwidth β€” the width of the detection low-pass, in Hz (default 150). Narrow it toward ~80–100 Hz to reject a close neighbour and tighten the spacing between letters; widen it for fast CW or a drifting signal. Disabled while Matched filter is on.
  • Squelch β€” an on/off chip plus a level slider. Off (default) the decoder always tries to copy. On, it gates on fldigi's own signal metric (an SNR-style 0–100 reading): raise the level to stop it printing * noise between stations, lower it if a weak signal isn't being read. The slider is greyed while the chip is off (no squelching β€” the decoder runs wide open). Because that metric is measured against the noise floor, one setting holds across bands β€” it's already "auto-levelling," so a value that works stays working when the band noise rises or falls.
  • Signal bar. Just under the slider is a live Signal meter β€” the cyan fill is the decoder's current SNR reading, and (when Squelch is on) the amber tick marks your threshold. This is the tool for setting the level: watch the bar while a signal comes and goes, then set the threshold just under the signal peaks so it clears the between-station noise without choking the copy. (Keep it a touch low β€” the same signal that feeds the print also feeds the speed tracking, so too-high a squelch starves both.)

Tip. There's no AFC β€” tune the signal onto your CW pitch on the panadapter and leave it there; Tracking handles fist and speed, and Bandwidth gives you the tolerance for small drift.


Tuner (manual ATU memory)

If you run a manual antenna tuner (the kind you set by hand with Input / Output / Inductor controls), the Tuner panel remembers your settings so you can return to a known-good match without starting from scratch. Open it from the header β€” Options: β†’ Tuner. It's a floating panel; drag it anywhere. (Pure tuning memory β€” it doesn't drive or read your tuner, it just remembers what you dialled in.)

Pick your antenna. Three antenna slots across the top β€” Beam / Dipole / Vertical by default; rename any of them (Settings β†’ Tuner) to match your station. Pick the one you're using; each antenna keeps its own set of saved points.

Live SWR. The pill in the header shows your real SWR while you transmit, colour-coded β€” green ≀ 1.5, amber 1.6–2.4, red β‰₯ 2.5 β€” so you can watch the match as you adjust the tuner. It reads "β€”" until you key up. The Meter panel also shows SWR on transmit (larger needle / bar) if the Tuner pill is hard to read.

Reading the panel. The big tiles show the Input / Output / Inductor settings for the nearest stored point to where you're tuned:

  • Green "exact match" β€” you're sitting on a saved frequency; the tiles are exactly what you set last time. Dial in those three numbers and you're matched.
  • Amber "nearest …" β€” you're between saved points; the tiles show the closest one, with a Β±x.x kHz badge telling you how far off it is (+ = the saved point is above you on the band, βˆ’ = below). It's a starting position β€” set those numbers, then fine-tune to your SWR.
  • The list below shows just the points that bracket your dial β€” the one just below and the one just above (and the exact one if you're on it). No endless scrolling: the complete table lives in Settings β†’ Tuner.

Saving a point. When the amber banner says nothing's stored near you (or you've improved a match), click Store this freq (or Add current freq), type your Input / Output / Inductor numbers (whatever your tuner shows β€” they're free text), and Save. Storing on a frequency you already have overwrites that point.

Editing / deleting. Click ✎ to edit. Then click a single row to make just that row editable (so you can't fat-finger a neighbour); change a cell and click away to save. The βˆ’ button on that row asks βœ“ / βœ— before it deletes. For bulk maintenance β€” add, rename antennas, delete, clear, or set the "nearest match" window (how close counts as exact) β€” use Settings β†’ Tuner.

Collapse (β–Έ / β–Ύ) tucks the panel down to just the SWR pill and the match tiles for a compact at-a-glance reminder.

The match is by dial (carrier) frequency β€” it reads the same in USB or LSB, which is correct: an antenna tuner matches the RF frequency, not the sideband.


Frequency calibration (WWV / time station)

Your radio's reference oscillator (the HL2's TCXO) is a hair off, so a signal on a known frequency lands a few hertz from where the dial says. Frequency calibration measures that error against a rock-solid reference β€” a time station like WWV, WWVH or CHU β€” and nudges every RX and TX frequency by a tiny factor so the dial reads true.

1.00000000 = no correction β€” exactly how the radio tunes out of the box. You can always get back there, so you can't paint yourself into a corner. Most HL2 boards are within a hertz or two on the HF bands and never need this; it's here for the operator who wants the dial spot-on, or who works a mode where a few Hz matters.

There are two ways in, and they run the same measurement β€” pick whichever you like:

The guided panel (Freq Cal chip)

Open Options: β†’ Freq Cal in the header. A floating instrument appears:

  1. Tap a time station chip (only the ones your region can actually hear are shown β€” see Band plan (Region)). Lyra saves your current dial and mode, switches to USB, and tunes about 1 kHz below the carrier so you hear it as a steady ~1 kHz tone.
  2. Watch the hero readout: the carrier marker walks across a centre-null scale and the big "Hz off" number colours green as the error nulls toward zero. SNR βœ“ means the carrier is strong enough to trust.
  3. Press Apply to take the suggested correction. Stop (or closing the panel) puts your dial and mode back exactly where they were.

Settings β†’ Calibration (no visual)

Same flow without the moving dial, plus the manual controls:

  • Time station dropdown β€” pick one and Lyra auto-tunes USB and starts measuring, just like the panel. Or type an exact frequency by hand for a station that isn't listed.
  • Measure arms/disarms; Apply suggested correction takes the reading.
  • Set correction β€” type a factor by hand (e.g. copy a known-good value from another app as a starting point).
  • Reset to 1.0 β€” always returns to how the radio tunes today.
  • Restore previous β€” one-level undo of the last change.

Good to know

  • USB on every band. Use USB even on 2.5 / 5 MHz where you'd normally run LSB. WWV is AM, and calibrating in USB on every band keeps the sign of the correction consistent.
  • Filter and sample rate. Use a normal SSB filter (RX BW β‰ˆ 2.4–4 kHz) so the ~1 kHz carrier sits well inside the passband β€” a tight CW filter can clip it. Sample rate makes no difference: the measurement reads the demodulated audio, not the raw spectrum.
  • No Reset needed to re-calibrate. Apply composes onto whatever correction is already in effect, so measuring again from a non-1.0 factor is exact in one shot β€” it won't push you back toward 1.0.
  • Restore previous holds one level. It remembers the single value in effect before your last change. Reset moves your current correction into that slot (it doesn't erase it), so Reset then Restore-previous brings it back β€” but a Reset followed by a fresh Apply overwrites the slot with 1.0.
  • The correction is stored per install and applied inside the one frequency choke point every tune path funnels through, so RIT/XIT, CTUN, split and PureSignal all track it automatically.

Right-click the Freq Cal chip for this help.


Profiles (TX/RX chain presets)

A profile is a named snapshot of your operator TX/RX signal chain β€” recalled as a single unit so you can flip between, say, an SSB-voice setup and an FT8/digital setup without re-touching a dozen controls. This is the openHPSDR "TX profile" idea, done Lyra-native.

What a profile stores: RX bandwidth, TX bandwidth + the BW-lock, RX filter low and TX filter low (separate; the lock keeps them equal while it is on); mic source, mic gain, 20 dB mic boost; the Tune-drive toggle + tune-drive %, and the TX drive level (your power knob); the TCI RX and TX gains; the VAC source (VAC1 enable, auto-enable-for-digital, and the VAC RX/TX gains); AGC mode; auto-mute-on-TX; and the TX safety-timeout (minutes + bypass). Because mic source and VAC enable are both stored, one profile can flip you from a TCI/voice setup to a VAC/digital setup as a unit β€” see Digital modes over VAC.

What a profile deliberately does NOT store:

  • The operating mode / sideband. A profile is a pure signal chain β€” recalling one (manually, at startup, or via auto-recall) never changes your mode or which sideband you're on. It applies the chain and leaves you exactly where you were tuned.
  • Safety / input-method settings that are global by design: PA enable, hardware-PTT-input enable, and the space-bar-PTT toggle all live in Settings β†’ Hardware and are never swept by a profile (you don't want a recalled preset silently arming your PA or changing how you key).
  • EQ, Speech, the Combinator and Plating now ship as live TX DSP panels (see TX DSP rack), but their settings are not yet swept into profiles β€” that field lands with a future profile update, and older saved profiles migrate forward automatically. A separate monitor output remains reserved for the same reason. (VAC1 and VAC2 enable, auto-digital, gains, and latency are stored in the profile. Audio device names stay global station setup, not per-profile, since they're machine-specific.)

The Profiles dock (front panel β€” quick recall)

A small dockable bar (show/hide it from the window's dock menu, like the TX or Display panels). It has just three things:

  • Profile dropdown β€” pick a saved profile to recall it instantly.
  • ● modified dot β€” lights orange when your live chain differs from the active profile (i.e. you've changed something worth saving); grey when they match. Hover it for which profile it's comparing against.
  • Save β€” opens the Save Profile dialog: either overwrite the active profile with your current settings, or give it a new name β€” and (optionally) tick which mode family should auto-recall it. That last part means you can set up a chain for the mode you're on and save it as a brand-new bound profile without ever opening Settings.

Settings β†’ Profiles (the full editor)

The complete manager lives in Settings β†’ Profiles:

  • A list of your profiles β€” each with a radio button; click one to select it. The active (on-air) profile shows a green ACTIVE badge; the startup default is tagged [default].
  • Save (overwrite active), Save As… (capture current settings to a new name), Load (recall the selected profile), Rename…, Delete, and Set Default. Bind FM / CW / … in the table below if you want that family's chain every launch. Set Default is only the last fallback β€” see What happens at startup.
  • A status line showing the active profile and a ● modified flag.
  • View & quick edit β€” under the list, a panel shows the selected profile's core chain (RX/TX bandwidth, RX low, TX low, Lock TX/RX BW, mic source / gain / boost, AGC, Leveler, PHROT, auto-mute on TX). Change any of them and click Apply changes to save them back into that profile; Revert discards your edits. A ● You have unsaved changes notice appears while edits are pending. This edits the saved profile only β€” it does not change what's on the air; click Load to apply it live. RX low and TX low are stored separately. With the lock checked they stay equal, and turning the lock on copies the RX low into the TX low. With the lock off a profile can hold different lows (TX at 50 Hz, RX at 150 Hz). An older profile that only stored one low loads that value on both sides.
  • Auto-recall by mode family β€” one dropdown per family: CW, SSB, Digital, AM, SAM, DSB, FM. Bind a profile to a family and it's recalled automatically whenever you switch into a mode in that family. Sidebands collapse on purpose β€” USB and LSB both map to SSB, CWU/CWL β†’ CW, DIGU/DIGL β†’ Digital (the chain is identical regardless of sideband), while AM / SAM / DSB / FM each stand alone. Set a family to (none) to disable auto-recall for it.
  • Companion app β€” optionally launch a digital-mode program (VarAC, MSHV, WSJT-X, …) when you explicitly select this profile from the front dock or the Load button. Tick Launch a program when this profile is selected, set a friendly name, Browse to the .exe/.bat/.cmd, add any command-line arguments, and a start delay (a couple of seconds lets Lyra's CAT server and VAC come up first). Test launch tries it now. It fires only on an explicit pick β€” never on the mode-family auto-recall above, and never at startup β€” and it never closes the app for you when you switch away (close it yourself). This binding is per-PC only: it lives on your machine, is never written into the profile, and is never exported in a shared .lyra β€” a shared profile carries the DSP chain only, never "run this program."

How to create a profile

A profile is a snapshot of the chain that is on the air right now. Set Lyra the way you want to operate, then save that snapshot under a name. Mode is not in the snapshot β€” pick USB / FM / DIGU first if you care which family you bind to.

  1. Show the Profiles dock (window dock menu β€” same place as TX / Display) or open Settings β†’ Profiles.
  2. Dial the live chain β€” mic source and gain, RX/TX bandwidth and lock, AGC, VAC on/off and gains, Tune-drive, TX drive, auto-mute on TX, safety timeout. Use a dummy load if you need to hear TX. EQ / Speech / Combinator / Plating are not in the profile yet; leave those as panel settings.
  3. Give it a name:
    • Dock Save β†’ type a new name (do not overwrite unless you mean to replace the active profile). Optionally tick a mode family so that family auto-recalls this chain.
    • Or Settings β†’ Profiles β†’ Save As… (same capture, from the full editor).
  4. Bind it (if you skipped the tick in step 3): in Settings β†’ Profiles, use Auto-recall by mode family β€” e.g. map SSB to your Voice profile and Digital to your FT8 profile.
  5. Optional: Set Default only if this should be the first-run fallback when nothing else applies. Day-to-day startup prefers a family binding, then last-used β€” see below.
  6. Check it: change something on the air (the dock ● goes orange), then pick the profile from the dropdown or Load. The chain should snap back. Do not Load while keyed.

To copy an existing profile, Load it, tweak, Save As… under a new name. To update one you already use, Load it, tweak, dock Save β†’ overwrite the active name (or Settings Save).

First-time Voice vs Digital pair: build Voice on USB with your mic, save as "Voice" bound to SSB; switch to DIGU, set TCI/VAC and a wider filter, save as "Digital" bound to Digital. After that, USB ↔ DIGU swaps the whole chain and leaves your frequency alone.

What happens at startup

Mode is restored from prefs first (USB, FM, …). Then Lyra loads one profile, in this order:

  1. Mode-family binding β€” if last session left you in FM and FM is bound to an FM profile, that profile loads (Default can stay an SSB chain; it does not override the binding).
  2. Last used β€” the profile you last loaded, if it still exists.
  3. Set Default β€” only when there is no binding and no last-used name (typical first run).

A mode-family binding also fires when you change mode during the session. It does not re-fire just because startup already restored that same mode.

Good to know

  • Recall is blocked while transmitting. Loading a profile is a no-op while you're keyed β€” Lyra never switches mic source or bandwidth mid-TX (the same safety rule that governs every chain change). Drop PTT, then recall.
  • Switching is always operator-driven β€” you Load from the dock, change mode into a bound family, or get the startup pick above. Lyra never picks a profile based on who you're working.
  • A typical setup: a "Voice" profile bound to SSB (your mic, mic gain, speech bandwidth) and a "Digital" profile bound to Digital (TCI mic source, flat gain, wide filter) β€” then changing mode from USB to DIGU flips the whole chain for you, but leaves you on the frequency and sideband you chose.

Auto-starting apps at launch

Settings β†’ Hardware β†’ "Startup β€” launch apps when Lyra opens" lets you have companion programs open automatically after Lyra is ready (FFTW cache loaded, radio layer up, CAT / TCI listening). They do not launch during the first-run "optimizing" splash.

  • SDRLogger+ β€” Lyra's companion logger. If it's installed, the status reads installed and you can tick Auto-start with Lyra; the button launches it now. If it isn't installed, the button opens the download page so you can grab it.
  • Two generic slots β€” tick the box, Browse to any program (.exe/.bat/.cmd), and it starts with Lyra too.

These are per-PC settings, kept on your machine and never written into an exported profile. Launches are fire-and-forget β€” closing Lyra never closes the apps; close them yourself. (This is separate from the per-profile Companion app above, which fires only when you select that profile, and from Settings β†’ Apps, which is the named list behind the header Apps chip.)


Solar / Propagation panel

A compact strip showing current HF propagation conditions from HamQSL (N0NBH's solar data):

  • SFI (Solar Flux Index), A (A-index), K (K-index) β€” each colour-coded green / amber / red so you can read conditions at a glance (higher SFI is better; lower A and K are better). Hover the SFI box for the full picture β€” sunspot number, X-ray level, solar wind, and when HamQSL last updated.
  • A 10-band heat-map β€” 160 through 6 m, each tinted green (Good), amber (Fair), red (Poor), or gray (no prediction). Hover a band for its rating. Click a chip to tune VFO A to that band's current stored frequency (the slot the Band panel would land on). It does not step the 1 / 2 / 3 stack.

The ratings are shown for your current day or night β€” Lyra works out whether it's daylight at your location and picks HamQSL's day or night figures accordingly. For that to be right, set your grid square (or manual lat/lon) in Settings β†’ Hardware β†’ Operator / Station; without a location it assumes daytime. HamQSL doesn't predict 160 m or 6 m, so those two always show gray.

The data is fetched when Lyra starts and refreshed about every 15 minutes (the day/night split updates on its own as the sun rises and sets). It's read-only and needs no account or key β€” just an internet connection. If the feed can't be reached, the last-known figures stay on screen and the SFI tooltip notes the error.

NCDXF beacon auto-follow. The Follow button on the right of the panel lets you chase a single NCDXF beacon station through the rotation. Pick a station (e.g. 4U1UN) from the dropdown and Lyra automatically tunes (in CW) to whichever of the five beacon bands that station is transmitting on right now β€” 20 β†’ 17 β†’ 15 β†’ 12 β†’ 10 m β€” re-checking every second and hopping with it through the 3-minute cycle. It's a quick way to hear how one station is propagating across the bands. Set it to Off to stop; your choice is remembered between sessions. (While following, Lyra re-tunes on its own, so manual tuning won't "stick" until you turn Follow off.)

If you don't want the panel, close it like any other (the View menu re-opens it). It's a dock β€” drag, float, or tab it wherever you like.


Weather alerts

Lyra can watch for nearby lightning, high wind, and severe-storm warnings, and show flashing badges in the header so you know to think about your antennas. Turn it on and configure it in Settings β†’ Weather.

⚠ Advisory only. These alerts are a convenience, not a substitute for official warnings or your own judgment. You must accept a short disclaimer before enabling them.

What you'll see β€” badges appear toward the right of the header when an alert is active, and flash on the most serious tier:

  • ⚑ Lightning β€” shows the closest strike distance + compass bearing. Yellow β‰ˆ far, orange β‰ˆ mid, red = close (flashing).
  • πŸ’¨ Wind β€” shows gust (or sustained) speed. The badge appears only once wind reaches the thresholds you set (Settings β†’ Weather): orange when sustained or gust crosses your value, red = extreme (your value + 15, flashing). In calm air below your thresholds there's no wind badge at all.
  • ⚠ Severe β€” an NWS thunderstorm/severe warning is active (red, flashing). Hover for the headline.

Where the data comes from depends on which sources you enable (Settings β†’ Weather): Blitzortung (global lightning, free), NWS / weather.gov (wind + severe + live station wind, free, US), and your own Ambient Weather or Ecowitt station (needs that account's keys). Lyra needs your location to know what's "nearby" β€” set your grid square in Settings β†’ Hardware β†’ Operator / Station.

Notifications β€” optionally a desktop pop-up and an audible chime when an alert first crosses a tier (with a cool-down so it doesn't nag). Lyra's own weather pop-ups are titled "Lyra β€” …" so you can tell them apart from other notifiers (your Ambient app, a Windows weather widget, etc.). The wind pop-up only fires when your local readings cross your thresholds; an area NWS High/Extreme Wind Warning pops a toast only if you opt in ("Pop NWS High/Extreme Wind Warnings", off by default β€” the badge still reflects it either way). Toggle the desktop/chime options in Settings β†’ Weather, and use Send test alert there to see the badges light up.


Updates

Lyra checks GitHub for new releases so you don't miss one.

  • A quiet check runs a few seconds after launch. If a newer version exists, you get a one-time pop-up (Open release page / Remind me later / Skip this version) and an ⬆ indicator stays in the toolbar.
  • Check whenever you like: Help β†’ Check for Updates….
  • Downloads are on the project's GitHub Releases page; grab the new installer and run it over the top.

Backing up & sharing your settings

Everything lives on the Settings β†’ Backup & Restore tab (the File menu's Export settings… / Import settings… do the same jobs).

Lyra can save your entire configuration β€” panel layout, saved layouts, and every preference (visuals, mode/bandwidths, TX chain, CW, spots, weather…) β€” to a single portable .lyra file, and it keeps automatic dated snapshots so you always have a known-good setup to fall back to.

Export β€” Export to a file… writes a .lyra you choose. Keep it as a backup, or hand it to another operator for your exact setup.

Snapshots β€” Lyra drops an automatic snapshot every N launches (set the cadence and how many to keep on the tab; 0 launches turns auto off). Save snapshot now… takes one on demand and lets you name it β€” named snapshots are kept until you delete them; automatic ones roll over. Pick one from the list and Restore selected…, Export selected… (copy it out to a USB stick or cloud folder), or Restore from file… for a .lyra you saved earlier.

Snapshots live in your Windows app-data folder β€” the tab shows the exact path and an Open folder button. Crucially, that folder survives an uninstall / reinstall (and the registry reset), so if Lyra ever gets wiped, do a fresh install, go to Backup & Restore β†’ Restore from file…, and pick your last snapshot out of that folder to get your setup back. (Copying that folder somewhere safe now is a good habit.)

Selective restore β€” the important part. Restoring doesn't have to be all-or-nothing. When you restore, Lyra shows a checklist of sections (Audio & VAC, TX audio chain, CW, Calibration & meters, Spots, Display, Panel layout, and so on). Tick only the groups you want back; everything unticked stays exactly as it is now. So if a change to one subsystem went sideways, you can roll back just that part without disturbing the rest. (Panel layout is unticked by default, since restoring it rearranges your window.)

Safe to share. A backup never includes your radio's address or the graphics backend β€” those are per-machine, so a file is always safe to move to another PC or send to a friend.

Share just a layout. The same tab has a Share a layout group for when you only want to pass along your screen arrangement β€” where the panadapter, meters, tuning, and other panels sit β€” not your settings. Export layout… saves it to a small .lyralayout file (post it with a screenshot on Discord, or email a friend your setup); Import layout… drops a .lyralayout someone sent you straight onto your screen. Only the layout travels β€” never your settings, radio address, or window size β€” so a shared layout lands cleanly on any display. Importing applies it live; use View β†’ Layouts β†’ Save current layout to a slot afterward if you want to keep it.


Operating with an external amplifier (hot-switch protection)

If you're driving an external solid-state HF linear amplifier from the HL2, read this section first. Hot-switching β€” applying RF into a T/R relay that hasn't finished switching β€” can destroy a SS linear's PA. Lyra has two layers of protection against this; they're load-bearing, not cosmetic, and the defaults are chosen for typical 1 kW SS HF linears.

How the two layers compose

Layer Knob What it does
1. Scheduling RF Delay (default 50 ms) After the wire-MOX bit goes hot, Lyra waits 50 ms before allowing any RF onto the antenna. Gives the external amp's T/R relay time to fully close.
2. Amplitude shape Fade-In Duration (default 50 ms) Even WITHIN the RF Delay window, the host-side I/Q amplitude rises smoothly from zero via a cosΒ² envelope. Redundant protection against any residual MOX-bit / relay timing skew.

Both knobs live on Settings β†’ TX.

Workflow before the first on-air keying

The discipline that's saved more amps than anyone wants to admit:

  1. Dummy load on the antenna port. Until you've confirmed the full chain works the way you expect, the HL2 talks to a 50 Ξ© resistor, not your antenna. A dummy load tolerates hot-switching; a relay-bypassed antenna won't.
  2. External amp OFF / bypassed. First-RF goes to the dummy load straight from the HL2's on-board PA (a few watts). Confirm wattmeter behaviour, panadapter trace, and that TUN / MOX both ramp cleanly.
  3. PA Enable OFF in Settings β†’ Hardware β†’ Transmit. Run through your keying ergonomics first β€” TUN button, MOX button, space-bar, drive-slider movement β€” with no actual RF. You should hear the HL2 relays click and see the wire-MOX state flip; the wattmeter should read zero.
  4. PA Enable ON, Drive low (5–10 %). Key TUN once. Watch the wattmeter trace ramp up smoothly over ~50 ms, hold steady, then ramp down smoothly. No clicks, no spikes at either edge.
  5. Verify your Settings β†’ TX values match your amp. The defaults are bench-safe for typical 1 kW SS linears. If your amp's documentation specifies a T/R relay settle time greater than 30 ms, leave RF Delay and Fade-In Duration at their defaults or HIGHER. Only consider lowering them if your amp's spec explicitly says it can handle a faster onset (e.g. QSK-rated amps with vacuum relays).
  6. External amp ON / inline. Re-do the TUN test with the amp in line, still on the dummy load. Confirm the amp keys and reads the right output for your drive level. Watch for any sign of relay arcing or other distress.
  7. Antenna connected. Final step. By the time you reach this, the chain has been verified end-to-end.

What to tune (and what NOT to tune)

If you're seeing… Tune this NOT this
Amp T/R relay arcing on key-up Space MOX Delay (and Fade-Out Duration must stay ≀ Space MOX Delay) Don't touch RF Delay β€” keyup arcing is a different problem from keydown hot-switching
Amp shows symptoms of hot-switching on key-DOWN RF Delay (raise it) β€” match your amp's T/R relay settle spec Don't reduce Fade-In Duration as a "fix" β€” it's the second protective layer
Audible click in your monitor at keydown Fade-In Duration β€” should be β‰₯ ~30 ms for clean SSB-band sound Don't extend RF Delay just to remove a click β€” that's the amplitude envelope's job
Audible click in your monitor at keyup Fade-Out Duration (raise it up to Space MOX Delay) Don't extend Space MOX Delay just for a click β€” that lengthens the re-key window too

When Lyra is killed mid-transmit (process crash, power glitch)

The HL2 gateware has its own watchdog: no EP2 keepalive frames for N seconds (gateware-specific, typically ~1 sec) β†’ gateware drops PA bias. This is your last-resort safety if Lyra dies while keyed.

But it's slow. A second of stuck carrier into an antenna is enough to embarrass yourself or worse. The discipline above β€” dummy-load β†’ external-amp-off β†’ progressively widen β€” exists because the gateware watchdog isn't fast enough to substitute for operator-side discipline.


Settings β†’ Hardware

The Hardware tab (Settings β€” Ctrl+,) holds your station identity and connects to the radio + optional station hardware.

Operator / Station

Your identity and location, used by the weather alerts (and, in time, the solar panel and logging):

  • Callsign β€” your call (stored uppercase).
  • Grid square β€” your Maidenhead locator (e.g. EN82, EN82dk). When it's valid, Lyra computes your latitude/longitude from it β€” shown live in Computed lat/lon.
  • Manual lat / lon (Β°) β€” a fallback if you'd rather not use a grid (or don't have one). Used only when the grid is blank/invalid.

Grid wins when it's valid; otherwise the manual lat/lon is used. Either way that's the location the weather sources use for "nearby."

Band plan (Region)

Region β€” your IARU region (US / IARU Region 2, IARU Region 1, IARU Region 3, or None). This selects which amateur band-plan the panadapter overlay draws. Set it to None to turn the whole overlay off.

Country β€” an optional refinement under Region, for the bands where a country's allocation differs from its IARU region (today this is 60 m). Leave it on Auto (use region) and you get the region default; pick your country to override just the bands that differ:

  • Auto β€” US gets the five fixed 60 m channels; IARU R1 / R3 get the contiguous WRC-15 band (5351.5–5366.5 kHz).
  • United Kingdom β€” replaces 60 m with the UK's own set of permitted segments (per the RSGB / Ofcom band plan), which differ from the plain WRC-15 band.
  • Canada β€” full 160 m–6 m Canadian mode boundaries (per RAC), including Canada's own five fixed 60 m channels (Canada is in IARU Region 2 but channelizes 60 m rather than using the WRC-15 band).

The overlay paints a thin strip across the top of the panadapter:

  • Sub-band segments β€” a coloured bar showing the mode allocations in view: CW (blue), digital (magenta), SSB (green), FM (orange). The label (CW / DIG / SSB / FM) shows when the segment is wide enough on screen.
  • 60 m channel markers β€” on the US 60 m band the five channels show as labelled CH1–CH5 bars. The labels are always visible (the channels are narrow), and you can click a channel to QSY straight to its USB dial frequency.
  • Digital landmarks β€” small β–Ό markers at the common calling frequencies (FT8 / FT4 / WSPR / PSK), gold. Click a marker to tune straight to it (and Lyra switches to the suggested mode).
  • NCDXF beacon markers β€” the five International Beacon Project frequencies, in cyan. Hover one and the tooltip shows the station that's transmitting right now (the 18 worldwide beacons rotate every 10 seconds) β€” e.g. "Now: 4U1UN β€” United Nations, NY". Click to QSY there in CW.
  • Band-edge warning lines β€” red dashed lines at each band's edges, so you can see at a glance when you're tuning toward the edge of an allocation.
  • License-class edges (US) β€” (optional, off by default) amber dashed markers at the US phone sub-band boundaries where each license class (Extra / Advanced / General / Tech) gains privileges β€” e.g. the 20 m phone edges at 14.150 (Extra) / 14.175 (Advanced) / 14.225 (General). A passive reference so you can see where your class's limits fall; it's US-only (nothing draws for other regions). You are responsible for knowing your own class limits.

Each layer has its own checkbox here so you can show only what you want (all on by default except the license-class edges). Segment colors β€” the four swatch buttons (CW / DIG / SSB / FM) let you recolor each mode category; click a swatch to pick a color, or choose the original color to clear the override.

Warn on transmit out of band (on by default) β€” a separate safety option, independent of the visual layers above, so turning the overlay lines off to declutter never disables it. When you key up, if any part of your transmit signal falls outside your region's amateur allocation, Lyra shows a large, pulsing warning banner across the panadapter:

  • It checks your occupied bandwidth, not just the dial frequency β€” Lyra works out where your signal actually reaches from your mode and TX filter. So a wide signal that spills past a band edge warns even when the carrier reads in band (e.g. a 6 kHz USB signal at 14.345 reaches 14.351, 1 kHz over the 20 m edge, and warns β€” while 4 kHz at the same dial does not).
  • It re-checks live while you're transmitting β€” if you roll the dial or change bandwidth mid-transmit and cross the edge, the banner appears immediately, and clears the moment you're back in band or un-key.
  • It uses your actual transmit frequency β€” VFO B when you're in split.
  • On 60 m (channel-only in the US and Canada) it also warns when you're off channel (parked between the five channels) or when your signal is too wide for the 2.8 kHz channel β€” so set TX bandwidth to 2.8 kHz or narrower on 60 m.
  • If you enable the 11 m / CB band and tune within it, the banner stays silent there β€” you're deliberately on a non-amateur band, so Lyra doesn't nag you about the amateur allocations.
  • On an enabled Xvtr slot (2 m / 70 cm / 23 cm, …) the HF amateur table is skipped β€” that table never listed VHF/UHF, so it used to false-alarm on every transverter key-up. The banner still fires if your signal walks past the slot’s RF low/high.

The band plan is advisory only β€” the HL2 is unlocked and Lyra will transmit anywhere you tune; nothing here inhibits transmit. Sub-band boundaries vary by license class and country and change over time; verify against your own regulator. The overlay and the warning are aids, not a legal reference.

Shortwave broadcasters (EiBi)

Lyra can overlay the EiBi shortwave-broadcast schedule on the panadapter so you can see who's on the air across the SW broadcast and utility ranges. Each station shows as a small tick + name:

  • Cyan = broadcasting right now (the current UTC time falls inside the station's scheduled window for today).
  • Grey = scheduled on this frequency but off-air at the moment (only shown if you turn off "Hide off-air").
  • Hover a station for its frequency, language, target area, and on-air status; click it to tune there in AM.

Turn it on in Settings β†’ Bands β†’ SW Database:

  • Enable EiBi shortwave overlay β€” master on/off (off by default).
  • Update database now β€” downloads the current season's schedule (~3 MB) from eibispace.de. You must do this once before anything appears β€” the data isn't bundled (EiBi's licence is free but no-redistribution). Re-run it when the season changes (roughly April and October).
  • Load CSV file… β€” the fallback if the download fails. eibispace.de's security certificate expires periodically, which can block the in-app download; when that happens, download the sked-<season>.csv from the EiBi website in your browser, then point Lyra at it with this button. (Lyra copies it into its own folder, so you can delete the download afterward.)
  • Hide off-air β€” show only stations broadcasting now (on by default).
  • Show in all bands β€” by default the overlay is hidden inside the amateur bands (so it doesn't clutter ham operating); tick this to show it everywhere.
  • Minimum transmitter power β€” hide the weak stations; show only β‰₯50/100/250 kW transmitters to cut clutter.

EiBi schedules are a planning aid β€” actual broadcasts vary with propagation, season, and last-minute changes. A cyan station may be inaudible (wrong band conditions) and you may hear stations the database doesn't list. Data Β© the EiBi project (eibispace.de).

Radio

Find and connect to your radio β€” an HL2 / HL2+ (Protocol 1) or a Protocol-2 radio (BrickSDR2 / Brick3SDR / ANAN G2 / ANAN-10–200D P2). Discover scans the LAN, Open connects to the selected radio (or just double-click it), Close disconnects, and the status line shows what you're connected to. The connected radio is shown green and bold in the list, so with several radios it's obvious which one is live. Lyra remembers the last radio and shows it here on launch. (The toolbar β–Ά Start / β–  Stop does the same thing.)

One radio at a time. If the HL2 (or any other row) is already open, Open will not start Brick3 until you Close the live radio first. That is not a Brick3 limitation β€” Lyra has a single RX/TX path. Hover Open while another radio is live: the tooltip says so; clicking Open repeats it in the status line.

Protocol 1 Hermes (not HermesLite) is a Brick or classic ANAN still on the old FPGA. Open is refused β€” that is not a bug. Flash Protocol 2 and Open the P2 row. Brick FPGA help: Anton (linoobs) on Discord. See Supported radios.

Multiple radios. Keep as many radios in the list as you like and switch between them: select one (or double-click) β†’ Open; to change radios, Close the current one first, then Open another. Lyra connects to one radio at a time. To keep separate settings per radio (model, filter, audio path, band memory, calibration…) use the Rig menu β€” see Multiple radios & switching rigs.

  • Add by IP β€” type a radio's address (e.g. 192.168.1.50) and click Add for a radio Discover can't reach: a fixed-IP HL2, one on a different subnet, or a network where broadcast is blocked. Lyra sends a direct probe to that address and fills in the real board / gateware / RX count if it answers; either way the entry is added so you can Open it.

  • Discover now broadcasts two ways (the limited and the subnet-directed broadcast), so it finds radios on networks where one form is blocked.

  • Auto-start radio on launch (checkbox, default ON) β€” when on, Lyra connects to the last radio automatically at startup (the historical behaviour). Untick it to have Lyra open without connecting; you then click β–Ά Start when you're ready.

  • P2 radio model β€” pick the marketed model for the selected Protocol 2 row. Brick3SDR is the ANAN-100D / Angelia class (2 ADC, classic Alex ANT 1/2/3). BrickSDR is Hermes-class (one ADC, fixed jack β€” hide the Alex row). ANAN-100D in the list is the same wire class as Brick3SDR if you prefer the Apache name.

  • Antenna / RX ADC / RX input / HPF bypass β€” live on an open Protocol 2 radio that actually has those jacks. RX input (TRX / BYPS / EXT 1 / XVTR) is selectable on Brick3SDR and ANAN-100D once that radio is Open; it stays grey while an HL2 session is still running or on Hermes-class BrickSDR. RX ADC 1 / 2 is the same: two converters on Brick3 / 100D / G2, one on BrickSDR. Antenna 1/2/3 can be saved before Open. Same ANT / RX chips live on the Band panel after Open.

Transmit (PA enable + safety timeout + hardware PTT)

The deliberate-arm safety gates for getting on the air. Both are intentionally OUT of the operating-time TX panel β€” they're set-and- forget config you arm once when you're ready to transmit, not knobs you touch between QSOs.

  • Enable PA (checkbox, default OFF) β€” toggles the HL2 gateware's PA bias. With this OFF, keying MOX or TUN gives you the relay click and the wire-MOX state but zero RF (the gateware never biases the PA). With this ON, MOX + non-zero Drive % produces real RF. The safest first-time-on-the-air bench gate: leave OFF for relay / panadapter / wattmeter wiring checks; turn ON only after you're confident in your Drive setting, fade defaults, and amp configuration. Lyra defensively clears PA on every stream close and open β€” restart Lyra and PA is OFF again, no matter where you left it.
  • TX safety timeout (spin box, default 600 s = 10 min, range 60 – 1200 s) β€” if the radio stays continuously keyed past this duration, the FSM auto-releases MOX through the normal keyup sequence (no shortcut on the wire β€” full TR-delay unwind, ATT-on-TX restore, the works). A pop-up toast notes the auto-release.
  • Bypass safety timeout (checkbox, default OFF) β€” for long-form AM ragchews or slow CW beacons where the 10-minute default is genuinely too short. Bypass disables the timer entirely. Use with intent β€” a stuck PTT or a software fault now has no host- side rescue (the HL2 gateware watchdog is still in play, but treats EP2 keepalive as the only liveness signal).
  • Enable hardware PTT input (foot switch / hand mic) (checkbox, default OFF) β€” when ticked, the HL2's hardware PTT-input pin is read on every status frame and an edge (press / release) is forwarded to MOX, so a foot switch, hand-mic PTT, or external mic-button keys Lyra just like the on-screen MOX button. ⚠ Bench-verify before enabling. Some HL2 units (notably most observed HL2+ / AK4951 units) carry a non-zero PTT-input level at RX rest, so an always-on forwarder would mis-read it as a press and produce a phantom-TX surge the moment you launch Lyra. Default OFF lets you control when the read goes live: confirm with a scope or with the foot-switch unplugged that the pin reads stable 0 at rest, then tick this box. If your foot-switch press doesn't key after enabling, the issue is upstream of Lyra (HL2 connector / switch / cable / wiring) β€” Lyra can't paper over a dirty level at rest.
  • RX resume delay after unkey (spin box, default 50 ms, range 0 – 500 ms) β€” how long RX audio stays muted after you unkey, so the transmit tail still working through the receiver's DSP pipeline drains out as silence and the T/R relay settles before you hear RX again. Removes the "thud" and the quick echo of your own voice on unkey. Raise it if you still hear a bump or echo; lower it for snappier break-in. 0 resumes RX instantly (the old behaviour). Works with the Auto-mute RX while transmitting option above β€” the auto-mute holds RX silent during TX, this delays the return to RX after.

Why these are in Hardware, not in TX: Settings β†’ TX is for timing knobs you might tune to match an external amp's switching spec. Settings β†’ Hardware β†’ Transmit is the arm/disarm surface for "ready to actually radiate" β€” different operational gesture, different cognitive bucket. Both honour each other: PA off β‡’ no RF regardless of timing, and the timing knobs are inert when PA is off.

External band-following (filter board / USB-BCD)

The external filter board (OC) and the USB-BCD amp band-code output now live on their own tab β€” see Settings β†’ Filters / BCD.

Navigation (USB encoder / HID wheel)

Windows only. For a USB knob that shows up as a HID mouse (the same class as Setup β†’ Navigation Raw Input in other HPSDR apps). This is not MIDI β€” a MIDI surface uses a sidecar.

  • USB encoder / HID mouse wheel tunes the VFO β€” master enable (off until you pick a device).
  • Device list β€” every attached HID mouse. Pick the knob, not your pointing mouse. Refresh re-scans if you plugged it in after opening Settings.
  • Wheel test β€” the idle box flashes red on each notch from the selected device even if the master enable is still off, so you can identify the right row first.
  • Listen when Lyra is not focused β€” keep the encoder live while you work in a logger. Only that HID device; the desktop mouse is unchanged.
  • Wheel only adjusts VFO (default on) β€” the encoder does not also scroll the panadapter.

Each notch moves the focused VFO by the Tuning-panel Step (CW carrier convention matches the LED). It does not use the panadapter scroll step.

Diagnostics (debug log)

Lyra runs without a console window, so if something misbehaves there's no black terminal to copy errors from. Instead, Lyra keeps a diagnostic log you can read, copy, and send to us.

  • Help β†’ Show Log… opens the log viewer β€” a scrolling view of this session's diagnostic messages with Copy all, Save…, and Open log folder buttons. It updates live while open.
  • Enable verbose debug logging (here in Diagnostics, also a checkbox in the log viewer) turns on detailed capture. Leave it off for normal use β€” the log then keeps only warnings and errors and stays small. Turn it on when you're chasing a problem: enable it, reproduce the issue, then Copy or Save the log.
  • A copy of the log is always written to a file on disk (…/N8SDR/Lyra-cpp/logs/lyra-log.txt, reachable via Open log folder), refreshed each launch β€” so even a crash leaves a trace.

To capture a log for a bug report:

  1. Open Help β†’ Show Log….
  2. Tick Verbose debug logging (bottom-left of the viewer). Leave the window open.
  3. Reproduce the problem β€” make it happen, and let it run for 30–60 seconds so it's well captured.
  4. Click Save… (pick a filename like lyra-log.txt) β€” or Copy all and paste it into your message.
  5. Send the log with a one-line note of what it was doing and what you expected instead.

Lyra won't start / hangs at launch β€” Safe Boot

Almost all "it just spins and never shows a window" cases are a wedged audio device β€” most often a virtual audio cable (VoiceMeeter, VB-Cable) that Windows has left in a bad state. Lyra enumerates audio devices before the window appears, and a stuck device can fault right there, so you never see anything. Lyra now guards that step and leaves a breadcrumb in the log. There are two layers to get you back in β€” the first is automatic:

  • Automatic recovery (no action needed). If a launch doesn't finish, the next one steps the graphics backend down to a safer one; and if startup still fails once it's reached the software renderer β€” meaning the fault isn't graphics at all β€” Lyra resets just your panel layout to the default and tries again. Every other setting (callsign, radio, DSP, profiles) is kept, and you'll see a one-time notice explaining what happened. This clears the most common "won't launch after an upgrade" case on its own; your real graphics backend is restored on the next launch.
  • Launch with --safe (or set the environment variable LYRA_SAFE=1). Safe Boot uses software graphics, skips audio-device enumeration, doesn't auto-connect, and comes up in the default panel layout β€” so a wedged audio device, GPU driver, or a bad remembered layout can't block startup. It's fully non-destructive: your saved layout is left untouched and returns on your next normal launch. Change the offending setting, then restart normally.
  • If it still won't start, the log at …/N8SDR/Lyra-cpp/logs/lyra-log.txt shows how far startup got β€” attach it to a bug report (see below).
  • Last resort β€” clear Lyra's saved settings (rarely needed now that recovery is automatic; this forgets your layout/preferences but always un-sticks a bad remembered state). In a Command Prompt: reg delete "HKCU\Software\N8SDR\Lyra-cpp" /f, then launch Lyra again for a clean first-run. Your backup snapshots survive this β€” restore one afterward to get your settings back (the layout section stays off, so the bad layout won't come back with them).

The most common real fix once you're in: change your default audio device, or restart/reset the virtual audio cable, then launch Lyra normally.

Getting help / reporting a bug

Testers and bug reports are welcome β€” Lyra is in active development.

  • Discord (preferred for questions & quick help): discord.gg/BwjsQvjcSc β€” questions, feature ideas, and getting unstuck.
  • Bug reports: file a GitHub issue (or post in Discord). Attach the log as a text file (use Save… in the log viewer β€” don't worry about the on-disk copy, the saved .txt is easiest to attach).

To make a report actionable, please include:

  • The diagnostic log β€” saved as a .txt and attached (see the capture steps above).
  • Lyra version β€” Help β†’ About, or the installer filename.
  • Windows version (e.g. Windows 11 23H2) and your PC basics (CPU, RAM) if it's a performance or audio-glitch issue.
  • Your radio β€” HL2 or HL2+, and your gateware version if you know it.
  • What you did and what happened β€” the steps to reproduce, and what you expected instead.

Settings β†’ Filters / BCD

Everything that makes an external band-following accessory follow your tuning lives here. On an HL2 / HL2+ there are two analog-voltage paths plus OC filters β€” they are not the same pin. Protocol 2 radios (Brick SDR, ANAN) do not use the Pico I2C analog path.

Path Pin How Lyra turns it on Same as
Gateware Band Volts J3 (fan PWM / GPIO04_Fan) HL2 Band Volts on J3 checkbox DeskHPSDR RX β†’ HL2 Band Volts / Dither Bit; MI0BOT Thetis HL2 Band Volts
Pico analog (stock n2adr_basic) J4 pin 8 Always on Protocol 1 β€” Lyra writes TX Hz over I2C 0x1D (I2C2) Thetis / Quisk / SparkSDR (same Pico TX-freq writes; OC is filters only)
N2ADR LPF relays J16 β†’ I2C 0x20 Enable N2ADR / IO board DeskHPSDR filter_board = N2ADR

USB-BCD stays off until you pick a cable. Turn N2ADR off if you have no filter board (analog still follows).

Band hops. The Pico latches analog when BYTE0 of the five-byte TX-Hz write lands. Lyra spaces those I2C steals with delay=5 (same as Thetis/Quisk) so two writes do not share one UDP datagram, drops any analog burst still queued from the previous band, and only coalesces a hop after BYTE0 is on the wire. A leftover 80 m write cannot leave J4 pin 8 on the 80 m voltage after you hop to 20 m.

Filter board β€” OC Control (J16 pins)

The HL2's J16 open-collector (OC) pins drive an external band-pass filter board (N2ADR or compatible) so its filters follow the band you're on β€” front-end protection against strong out-of-band signals (a nearby AM broadcaster, say). Gateware relays those bits over I2C (addr 0x20). Stock Jim Ahlstrom Pico firmware (n2adr_basic) PWM on J4 pin 8 follows TX frequency written over I2C 0x1D β€” not the OC bits. Analog on J3 is the separate Band Volts checkbox.

  • Enable N2ADR / IO board (OC / LPF relays, not analog) β€” turns OC band-switching on (HL2 / HL2+ only; default on). Off = OC idle. Pico TX-Hz analog still runs on Protocol 1. Harmless with no board. J3 analog is Band Volts, further down.
  • Live pins (top-right) β€” the seven cells light to show which J16 pins are being driven right now, on the wire. They follow the band as you tune and flip to the transmit pattern while you're keyed.
  • The per-band grid β€” one row per band, with a J16 Receive pins block (green) and a J16 Transmit pins block (red), pins 1–7 each. Tick a pin to drive it on that band for RX and/or TX. Edits apply and save immediately. This is the heart of it: the grid is what tells the board which filter to select on each band.
  • N2ADR preset β€” loads the standard N2ADR filter-board pin map (the default). Clear all β€” blanks every band (start from scratch).
  • Allow hot switching β€” lets transmit-pin edits take effect while you're transmitting. Off (default) is safer β€” edits apply on the next key.

⚠ Pre-antenna gate. Before you key RF into a filter board, verify the pins in the grid match your board's physical wiring, at low power, on every band. Wrong pins = wrong filter for the band = out-of-band emissions or a blown LPF relay.

Transmit pin action + external-PA gating

For each of the seven pins you can choose when its transmit pattern engages, and whether it also gates an external PA:

  • Transmit action β€” the condition that counts as "transmit" for that pin: Mox, Tune, 2-Tone, or any combination (default Mox / Tune / 2-Tone = engage on all three).
  • PAΒ·RX / PAΒ·TX β€” mark a pin as feeding an external power amplifier's enable on receive and/or transmit.

Split pins (per-VFO) is reserved β€” it activates with the second receiver (RX2).

USB-BCD (linear-amp band switching)

Drives a Yaesu-style BCD band code out an FTDI cable so an external linear amp's auto-bandswitch follows Lyra's band. Tick Enable USB-BCD, choose your BCD cable, and the BCD output readout shows the current code. Two bands have no standard BCD code of their own, with an option to borrow the adjacent band's filter:

  • 60 m uses the 40 m filter (BCD 3) β€” sends the 40 m code on 60 m instead of bypassing.
  • 11 m uses the 10 m filter (BCD 9) β€” sends the 10 m code on the 11 m / CB band (the appropriate adjacent filter) instead of bypassing.

⚠ Operate only within the maximum power and band limits permitted by your country / region's regulations. This control selects an amp filter; it does not change what you are licensed to transmit.

⚠ Verify before you key. Confirm the wiring and do a low-power test on each band before transmitting at full power β€” the wrong code can route TX through the wrong filter.

(If the FTDI driver, ftd2xx.dll, isn't installed, this section says so instead β€” install the FTDI D2XX driver to use USB-BCD.)

Band Volts on J3 (fan PWM) β€” leave off for Pico / J4

Do not tick this for stock Pico analog, M0AWS DB9 BAND, or a GP100/GPA100 on J4 pin 8. That path is Protocol 1 TX-Hz on I2C 0x1D (always sent) β€” matching Thetis/Quisk. The N2ADR checkbox is OC/LPF only.

Use this checkbox only if the amp is jumpered to IO-board J3 (the fan header / GPIO04_Fan). Tick HL2 Band Volts on J3 / fan-PWM pin (dither bit). That is Protocol-1 C0=0x00 C3 bit 3 β€” the same bit DeskHPSDR and MI0BOT Thetis use. Off (default) leaves J3 as a cooling fan.

⚠ Trade-off: while this is on, J3 outputs band voltage instead of fan-speed control. Gateware must include the fan/band-volts block (HL2 wiki Band-Volts, typically β‰₯72p5). Stock ak4951 builds without that block hold the pin low, so the checkbox does nothing.

Stop and Start the radio after you enable it so the dither bit is seeded on the first C&C frame. This is independent of N2ADR OC/LPFs and of HL2+ AK4951 serial band-follow (HardRock-50 / AH-4 β€” no setting needed here).

Settings β†’ Audio

Where Lyra sends received audio:

  • HL2 audio jack (AK4951) β€” the default on HL2+ hardware. Audio is decoded on the PC, sent back to the radio, and played from the HL2's own headphone jack. Single-crystal, lowest latency, bypasses the PC sound card.
  • PC sound device β€” pick any output Windows offers (sound card, headphones, a virtual audio cable to WSJT-X / FLDigi, etc.).

Pick your output device here; everyday Mute and Vol stay on the Audio panel. This choice is saved per rig β€” each radio remembers its own output path and device across rig switches (see Multiple radios & switching rigs).

RX filter low and TX filter low β€” the low cutoff for the SSB / DIG audio bandpass, one spin each. Range 0–500 Hz, default 100 Hz. The same controls sit on the Filters panel, under the bandwidth combos. With Lock TX/RX BW on, the two lows track and turning the lock on copies the RX low into the TX low. With the lock off they stay apart.

  • 100–200 Hz suppresses 50/60 Hz mains coupling on the mic path and reduces low-end rumble on receive β€” safe choice for narrow comms.
  • 50–70 Hz preserves chest-resonance / low-end body for ESSB-style wide audio β€” verify your station isn't picking up mains hum at very low cuts.
  • 0 Hz opens the filter all the way down to the carrier (no low cut) β€” some operators want this for ultra-wide ESSB into a clean RF environment.

Applies to SSB and DIG modes only (USB / LSB / DIGU / DIGL β€” the asymmetric passband case). CW is pitch-centred and AM / DSB / FM are symmetric around DC; those modes ignore this setting.

You can also drag the low edge of the RX passband on the panadapter (left edge on USB / right edge on LSB) to set RX filter low in real time. Dragging below 0 just pins at 0. TX filter low is the spin, not that drag.

Profiles carry their own bandwidth. A saved profile stores its own RX + TX bandwidth + filter-low edge and applies them on recall (manual or per-mode-family auto-recall). This control is the live value used when no profile is active β€” save it into a profile to make it stick per setup.

Virtual Audio Cable (VAC1)

VAC1 bridges audio between Lyra and a PC sound device β€” typically a virtual audio cable (VB-Audio CABLE, VAC, etc.) β€” so a digital-mode or soundcard program can hear Lyra's receive audio and feed Lyra its transmit audio. As of v0.3.0 both directions run on one full-duplex audio stream, and receive audio is automatically muted out of the cable while you transmit (no open-mic monitor feedback into the cable). For the end-to-end digital-mode wiring see Digital modes over VAC; the controls here are:

  • Enable VAC1 (RXβ†’PC and PCβ†’TX) β€” master switch; powers the VAC engine (receive into the cable, and the input path if you also arm it as the mic). Enable is not the same as β€œTX from VAC.”
  • Use VAC1 as TX source β€” same as Settings β†’ TX β†’ Mic source = PC Soundcard (VAC1). Greyed out when Mic source is TCI so a logger/digital app using TCI audio is not stolen.
  • Auto-enable for digital modes (disable for others) β€” when ticked, VAC1 turns on automatically only for DIGU / DIGL and off for every other mode (including USB). USB with this ticked will stop VAC even if Enable looks on.
  • Driver β€” the audio backend (PortAudio host API: WASAPI, DirectSound, MME, or WDM-KS) the VAC devices live under. WASAPI is the right choice for virtual cables. Changing the driver repopulates the Output and Input device lists below with that backend's devices; existing selections carry over by name where the device still exists.
  • Output device β€” the PC output Lyra sends RX audio to (the cable's playback endpoint your digital app records from). Pick the virtual cable, not your speakers. (none) leaves the RXβ†’PC direction off.
  • VAC RX gain β€” trims the level of the RX audio Lyra feeds into the cable.
  • Input device β€” the PC input Lyra reads transmit audio from (the cable's recording endpoint your digital app plays into). Used only when Settings β†’ TX β†’ Mic source = "PC Soundcard (VAC1)". (none) leaves the PCβ†’TX direction off.
  • VAC TX gain β€” preamp on the captured PC mic audio before it enters the transmit chain.
  • Combine input (mono) β€” sum the captured left + right channels to mono (use when the app puts its modulator audio on a single channel).

For a full receive-and-transmit bridge, select BOTH an Output and an Input device β€” leaving either on (none) disables that direction. Transmit also requires Settings β†’ TX β†’ Mic source = "PC Soundcard (VAC1)"; with the mic source on anything else (the codec mic, or TCI) a VAC transmit produces no power. The Digital modes over VAC section walks the whole setup, including the no-power fix.

Virtual Audio Cable (VAC2)

VAC2 is a second full-duplex cable, independent of VAC1, and carries RX2 audio. Typical use: digital app on VAC1 (RX1) and a logger or second decoder on VAC2 (RX2). Enable SUB so VAC2 has RX2; with SUB off the cable stays open but silent.

  • Enable VAC2 β€” starts the second PortAudio stream (vac2/* keys).
  • Use VAC2 as TX source β€” same as Mic source = PC Soundcard (VAC2). Mutually exclusive with VAC1 TX and with TCI audio (TCI always wins).
  • Device / gain / buffer / latency / Combine / Mute-will-mute β€” same meanings as VAC1, on a separate device pair (e.g. CABLE-C / CABLE-D).

If both VAC1 and VAC2 have Auto-enable for digital on, TX prefers VAC1. VAC2 TX is used when you pick PC Soundcard (VAC2) or when only VAC2 auto-digital is live.

VAC2 enable / auto-digital / gains / latency / buffer size save with the active TX/RX profile (same as VAC1). Device names stay in Settings β†’ Audio. Recalling a pre-VAC2 profile leaves VAC2 off.


Settings β†’ DSP (filter type)

This tab sets the DSP filter type per mode family β€” and it is deliberately the only DSP knob here. If you've used Thetis you'll remember its DSP β†’ Options page full of buffer-size, filter-size (taps) and FFT-mode controls; Lyra does not copy that, on purpose.

What the control does

For each mode family β€” Phone (SSB / AM / SAM / DSB), FM, CW (RX only), and Digital (DIGU / DIGL / DRM) β€” you pick the filter type for RX and (where applicable) TX:

  • Linear Phase (default) β€” the cleanest, perfectly symmetric filter response. This is what every install ships with, and what Lyra has always used.
  • Low Latency β€” a minimum-phase filter that trims the filter's group delay (the built-in delay every sharp filter adds). Useful where round-trip timing matters: digital modes (VarAC / WSJT-X acking faster) and CW monitoring. The trade-off is a little phase asymmetry β€” most operators won't hear it on SSB.

It's opt-in: out of the box every cell is Linear Phase, so an upgrade changes nothing. Flip a family to Low Latency only if you want it. The choice applies automatically when you change mode and is remembered across sessions. CW transmit has no entry β€” CW keying is handled by the keyer, not a TX filter.

Why Lyra doesn't have Thetis's buffer / taps / FFT options

Thetis exposes buffer size, filter (tap) size and FFT options because it was built for the PCs of its era, where those were genuine CPU-versus-latency trade-offs you had to balance by hand on slower machines.

Lyra is a native Qt 6 / C++23 application built for modern hardware β€” multi-core CPUs, plenty of RAM, and a Vulkan GPU rendering pipeline. It simply runs the DSP at a high-quality fixed buffer all the time, so there is no trade-off left to make: you get low latency and sharp filters at once, with no tuning required. The one setting that still changes the feel on a fast machine is filter type (group delay) β€” which is exactly what this tab exposes. Everything Thetis made you tune for performance, Lyra handles automatically.

Settings β†’ TX (Mic + ALC + Leveler, TR sequencing + cosΒ² fade)

⚠ Read Operating with an external amplifier FIRST if you're driving a solid-state HF linear from the HL2. The TR- sequencing + fade defaults on this tab are hot-switch-safe for typical 1 kW SS linears; reducing them without knowing your amp's T/R relay settle spec can damage the PA. Tooltips on the most dangerous knobs carry the warning; don't dismiss it.

Layout (v0.2.x Β§15.28 polish): the tab is now organized in two columns with cyan column headers at the top β€” TIMING (left: TR Sequencing + Amplitude Envelope + Tune β€” set once for your amp + station) and AUDIO + GAIN (right: Mic + ALC + Leveler β€” operating gain stages you tune actively). All values persisted across Lyra restarts; live-apply (changes take effect on the next MOX edge).

Mic + ALC (TXA input + output gain stages)

The full operator-tunable TX-input-to-modulator-output gain chain, rendered top-to-bottom in signal-flow order β€” what the audio sees first is at the top, what it sees last is at the bottom:

Mic source β†’ Mic Boost (+20 dB HW) β†’ Mic Gain (SW) β†’ Leveler (optional) β†’ bp0 β†’ ALC β†’ wire
Knob Default What it controls
Mic source Mic In (codec) Picks the audio source driving the TX chain. Mic In = the HL2 / HL2+ codec mic input (the v0.2.x default; this is the hand-mic / headset-mic / desk-mic path). TCI = inbound TX_AUDIO_STREAM from a digital-modes TCI client (MSHV / JTDX / FlDigi); pick this for digital-mode operation so the client's modulator audio replaces the hand-mic. PC Soundcard (VAC1) / (VAC2) route TX audio from Settings β†’ Audio VAC1 or VAC2 (see Digital modes over VAC). VAC2 needs SUB for RX2 audio into the cable. TCI audio and VAC TX are exclusive β€” TCI always wins. A TCI client that sends TRX:0,true,tci auto-selects TCI β€” the picker tracks it.
Mic Boost OFF HL2 hardware +20 dB analog mic preamp (codec PGA, single bit on the wire β€” C0 0x12 C2 bit 0). Pure hardware boost ahead of the digital chain. Enable when your hand mic / headset mic is genuinely too quiet to hit the modulator at a reasonable level even with the Mic Gain slider near max. Hardware is 2-state (off / +20 dB); intermediate trim comes from Mic Gain stacked on top. Only affects the codec mic input β€” PC mic / TCI sources bypass the codec PGA entirely, so this checkbox has no effect on those routes. Persisted across launches.
Mic Gain 0 dB The mic-into-modulator gain (WDSP TXA PanelGain1 β€” TXA chain stage #3, before phrot / EQ / leveler / CFCOMP / bandpass / compressor / OSCtrl / ALC). Bidirectionally bound with the TxPanel front-UI slider β€” slider for quick QSO-time adjustments, spin-box here for typed precision. 0 dB = WDSP unity; +10 to +20 dB typical SSB; +25 to +35 dB ESSB with headroom. Range βˆ’90 dB to +40 dB matches the reference's Default TX profile. Stacks on top of Mic Boost β€” if Mic Boost is ON, the modulator sees Mic Boost +20 dB + Mic Gain combined.
ALC Max Gain ⚠ 3 (LINEAR) The ALC (Automatic Level Control) max-gain ceiling β€” the always-on output limiter that catches peaks the leveler and compressor didn't bound, before the I/Q reaches the wire. LINEAR amplitude factor (NOT dB) β€” units corrected in Β§15.27: 1 = unity (limiter cannot amplify, only attenuate); 3 = the verified reference's default = 3Γ— amplitude headroom = +9.54 dB of allowed amplification before the ALC pulls down. Earlier Lyra builds shipped this property as dB and called dbToLin(3.0) = 1.413 β€” capping the ceiling at 47% of the reference's value and producing a ~6 dB power deficit on continuous mic-input tones (the Β§15.27 / #79 root cause; fixed 2026-06-03). Range 0..120 LINEAR matches the reference spinner exactly. Operator tuning: lower (1–2) for tighter splatter protection at the cost of headroom; higher (5–20) for ESSB-style program-level headroom.
ALC Decay 10 ms The ALC release time constant β€” exponential-curve tau, NOT an absolute time. Sets how quickly the limiter releases gain reduction after a peak. Default 10 ms matches the verified reference's Setup-load value EXACTLY. Operator tuning: lower (3–5 ms) for snappier release that lets program material breathe but can sound 'pumpy' on aggressive content; higher (30–50 ms) for smoother release that holds gain steadier but compresses dynamics more. Range 1..50 ms matches the reference spinner exactly. Attack stays at the WDSP create-time default (1 ms) and is not exposed (reference UI doesn't expose attack either).

The ALC ceiling is a SAFETY knob, not a daily-use one. Set it once to match your mic + voice + amp combination, then leave it. The daily-use control is Mic Gain β€” that's what you tune per QSO. Watch the ALC meter as you raise Mic Gain; if ALC is engaging hard (more than ~3 dB of gain reduction visible on the meter), you're driving past the limiter ceiling and creating splatter risk β€” either reduce Mic Gain or carefully raise the ALC ceiling.

Leveler (TXA pre-ALC amplifier stage)

The Leveler is a pre-ALC amplifier stage that boosts weak input signals up toward unity before the always-on ALC limiter sees them β€” particularly helpful for quiet passages of voice, or for ESSB operators who want consistent on-air loudness without riding the mic gain knob constantly. Sits in the chain BEFORE bp0 (the SSB bandpass) and the ALC β€” so on a quiet syllable, the Leveler can amplify by up to its Max-Gain ceiling, then bp0 + ALC produce a wire-level signal that's much closer to full scale than the raw mic level would otherwise allow.

Operator-preference default: Leveler is OFF in Lyra. The verified reference's UI ships this Enabled checkbox ON by default (and silently auto-enables it when you create a new TX profile), but some operators (including the project's primary tester) prefer it off β€” typical reason is that always-on leveler interaction with predistortion / PureSignal calibration can be unpredictable. Tick the Enable checkbox if you want reference-parity gain behaviour; leave it off if you prefer to ride mic gain manually.

Not recommended for digital modes (FT8 / FT4 / MSK144 / Q65 / RTTY, etc.). Digital-mode software already outputs a controlled, constant level, and the modes need a clean, linear TX chain. The Leveler rides gain on the envelope β€” on a digital signal that pumps the level and adds distortion, which widens your signal, raises IMD, and makes your reported levels inconsistent. Leave the Leveler OFF for digital. It's a voice/ESSB tool. The easy way to keep this straight is a per-mode-family profile: a digital/VAC profile with Leveler off, a voice profile with it set how you like β€” switching mode recalls the right one.

Knob Default What it controls
Enabled OFF (Lyra) / ON (reference UI default) Master Leveler on/off. Default OFF in Lyra by operator preference; tick this if your reference profile has it on and you want Lyra to match the reference's signal behaviour exactly. Mostly noticeable on quiet voice content β€” the Leveler does little when input is already loud.
Max Gain 15 (LINEAR) Maximum amplitude factor the Leveler will amplify weak signals by. LINEAR factor (NOT dB): 1 = unity (no boost); 15 = the reference's default = 15Γ— amplitude ceiling = +23.5 dB of amplification headroom for weak input. Same unit-correction class as ALC Max Gain (the WDSP API takes LINEAR; the reference's "(dB)" label on its UI is misleading β€” the value is passed straight through with no conversion). Range 0..20 LINEAR matches the reference spinner exactly. Operator tuning: lower (5–10) for gentler boost that preserves natural mic dynamics; higher (15–20) for ESSB-style consistent loudness. Has effect only when Enabled is ticked.
Decay 100 ms Leveler release time constant (exponential-curve tau, NOT absolute time). Sets how quickly the Leveler releases its boost after a stronger signal subsides. Default 100 ms matches the verified reference's Setup-load value EXACTLY. Operator tuning: lower (30–50 ms) for faster release that follows voice envelope more tightly; higher (200–500 ms) for smoother release that holds boost steadier across syllables. Range 1..5000 ms matches the reference spinner exactly. Has effect only when Enabled is ticked.

When to enable Leveler: if your reference setup has it on (most reference TX profiles do β€” check Setup β†’ DSP β†’ AGC/ALC β†’ Leveler in the reference for your active profile), enable it in Lyra and set Max Gain + Decay to match. With Leveler on at typical values (15 LINEAR / 100 ms) you'll see Lyra produce reference-parity actual RF on the same mic input β€” the missing pre-ALC gain stage was the root cause of the Β§15.27 / #79 "Lyra produces less power than the reference on the same whistle/voice" investigation; the Leveler closes that gap completely.

Phase Rotator (PHROT)

The phase rotator is an all-pass network that symmetrizes asymmetric speech waveforms. Human voice peaks much harder in one direction than the other; evening that out lowers the peak-to-average ratio, so more average talk power gets through for the same ALC / peak ceiling. It's a classic SSB voice-processing trick and matches the reference's Setup phase-rotator control.

Setting Default What it does
Enabled ON Master phase-rotator on/off. Default ON (the WDSP / reference posture).

Auto-off in digital modes. Phase rotation distorts FT8 / FT4 / RTTY / other digital waveforms β€” they need a clean, linear TX chain β€” so Lyra automatically disables PHROT whenever you're in DIGU / DIGL, even if the toggle is on, and re-enables it when you return to a voice mode. The Enabled checkbox is therefore your voice-mode intent; you don't have to remember to flip it for digital.

PHROT and wide / ESSB audio (4–10 kHz)

Phase rotation is tuned around the voice fundamental range (its corner is down in the low hundreds of Hz), where speech asymmetry actually lives β€” so most of its peak-flattening benefit is in the low end regardless of how wide your TX filter is opened. On a communications-grade wide passband it still earns its keep: more average talk power without raising your peak/ALC ceiling, which is exactly what cuts through on a busy band.

On high-fidelity ESSB (wide, natural-sounding audio for its own sake) the trade-off flips for many operators. PHROT is an all-pass network, so it imposes frequency-dependent group delay across the band; on a 4–10 kHz passband that can smear transients and take the "natural" edge off the audio that the wide filter was opened to capture. ESSB-focused stations commonly leave PHROT off and lean on the multiband processor / leveler / careful gain staging instead, reserving PHROT for when punch matters more than fidelity. Because it's a single toggle, the honest answer is to A/B it on your voice and your passband β€” keep it on if it sounds punchier, turn it off if it muddies your wide audio.

AM Carrier (AM / SAM modulation)

AM and SAM are double-sideband-with-carrier modes β€” they put a steady carrier on the air plus your audio in both sidebands. This control sets how much power goes into that carrier, as a percent of the standard AM carrier:

Setting Meaning
100 % (default) Standard full-carrier AM. The carrier sits at one quarter of your peak (PEP) power β€” on 100 % modulation peaks the envelope swings up to full power, the textbook AM relationship.
< 100 % Reduced / controlled carrier β€” softens the carrier and puts relatively more of your power into the sidebands (talk power / efficiency). Many AM operators run 40–85 % here.
0 % Suppressed carrier (DSB-like).

The percent is a power ratio (it maps to the modulator coefficient as √(pct/100) Γ— 0.5), so the number tracks carrier power linearly and "100 %" is the standard carrier. The control affects AM and SAM only β€” DSB is always suppressed-carrier, and FM / SSB / CW ignore it, so you can leave it set and it only bites when you key an AM/SAM signal. The value persists across sessions.

Carrier vs PEP: at 100 % (standard AM) the carrier amplitude is half the peak envelope amplitude, so carrier power = 25 % of PEP. On a rig rated for 100 W PEP that's a ~25 W carrier, with the sidebands swinging the envelope toward 100 W on modulation peaks.

FM (deviation, pre-emphasis & CTCSS)

FM transmit has three operator knobs in Settings β†’ TX β†’ FM. All affect FM only β€” they're inert in SSB / AM / CW, so you can set them and they only bite when you key FM. All persist across sessions.

Setting Default What it does
Deviation 5.0 kHz Peak FM deviation. The spin box flags the two standard presets β€” 5.0 kHz β€” Wide (US) and 2.5 kHz β€” Narrow (US/EU) β€” and reads plain kHz at any other value. Too much deviation splatters into adjacent channels; too little sounds weak and quiet. Changing it also re-sizes the RX filter and the TX occupied-width readout to match (see below).
Pre-emphasis Comm The treble-boost curve applied before the modulator. Comm is the standard 6 dB/oct (300–3000 Hz) communications curve every FM rig and repeater expects β€” leave it here for voice. Off is flat (no boost) β€” use it for FM data (packet, 1200/9600 baud, VARA FM), where the treble tilt would distort the data tones, or for a deliberately flat/warm sound. (A true Off is a Lyra edge β€” most rigs force pre-emphasis on.)
CTCSS sub-tone Off Transmit a sub-audible UL CTCSS tone to open a tone-protected FM repeater. On the Tuning dock, CTCSS is available in FM even without RPT. Enable it and pick UL and DL (67.0–254.1 Hz, or β€” for none). Leave CTCSS off for simplex. RX CTCSS decode is not wired yet. 1750 (Region 1 burst chip) is hidden unless Settings β†’ Hardware β†’ Band plan β†’ Show 1750 Hz tone burst is on; burst length is 0.5 / 2 / 3 / 4 s next to that checkbox (default 2 s).

Why pre-emphasis exists: FM brings high audio frequencies out of the receiver noisier than low ones. Every FM radio boosts the highs on transmit (pre-emphasis) and cuts them back on receive (de-emphasis) β€” that matching cut flattens your audio and knocks the now-amplified high-frequency hiss back down, so you come through clean. Comm sends the curve the receiving station expects; Off sends flat audio for data.

FM runs a clean audio chain automatically. In FM, Lyra bypasses the whole TX speech rack (EQ, Combinator, Plate reverb, speech enhancements) β€” exactly as it does for the digital data modes. Feeding a multiband compressor / reverb into FM's pre-emphasis just over-drives into "mush", so FM audio is shaped only by its band-limit and the pre-emphasis curve above. Nothing to switch off by hand.

Quick access on the Tuning panel. In FM the same action row as SPLIT / SUB / Mem / RIT shows Dev, Emph (Comm / Off), RPT, a single Offset field (preset or type kHz), CTCSS with UL / DL (either may be β€”), and 1750. Choosing a Deviation auto-sizes the RX bandwidth to the matching FM channel width (Β±2.5 kHz β†’ 12 kHz, Β±5 kHz β†’ 16 kHz); the TX bandwidth in FM is always shown as the auto-derived occupied width (2 Γ— (deviation + 3 kHz)), so you never set a TX filter by hand in FM. You can still override the RX bandwidth in the Filters panel afterward.

Deviation by region (rule of thumb β€” match your band plan / the repeater):

Region / use Deviation
US ham FM (10 m / 6 m / VHF–UHF, wide) 5.0 kHz (β‰ˆ16 kHz channel)
US narrowband 2.5 kHz
Much of Europe & elsewhere 2.5 kHz narrow is the common norm (some use 3.0 kHz)

When in doubt, match what the repeater or local band plan specifies β€” running wide into a narrow channel splatters your neighbours; running narrow where everyone else is wide makes you sound quiet and distant.

CTCSS UL is a transmit sub-tone (Lyra encodes it). DL is stored for the repeater recipe; RX tone squelch is not decoded yet. If you can hear a repeater but can't bring it up, UL is the usual culprit β€” set it to the published CTCSS / "PL" frequency. Use 1750 (or Memory Burst) for older European relais that want a burst instead of (or as well as) CTCSS.

HL2 FM is 10 m / 6 m. On a bare Hermes Lite 2/2+ (no transverter), FM lives on 29.5–29.7 MHz (10 m) and the 6 m FM segment. CTCSS only matters when you're working a tone-protected repeater there.

ATT on TX (RX-ADC protection)

While you transmit, your own TX carrier couples back into the receiver. Without protection it can drive the RX front-end ADC into overload β€” the panadapter goes wide / off-scale and the S-meter pegs on key-down. ATT on TX forces the HL2 step attenuator (drives the AD9866 RX LNA to minimum gain) for the duration of every transmission, then restores your RX setting on key-up. This mirrors the reference's Setup β†’ General β†’ Ant/Filters β†’ "ATT on Tx" + "ATT: 31".

Knob Default What it controls
Enabled ON Master ATT-on-TX. Default ON (the reference HL2 working posture). Turning it OFF removes RX-ADC protection during TX β€” only do so for a specific reason.
ATT 31 dB Step-attenuator value forced on the RX front end while transmitting. 31 dB = maximum attenuation (LNA to minimum gain) = strongest protection and the reference default. Range 0..31. Effective only when Enabled.

Front-panel "ATT" lamp. The TX panel shows a live ATT lamp (in the gap between the Mic and Tune sliders) so you can see the protection state at a glance:

  • gray ATT off β€” disabled.
  • orange ATT 31 β€” enabled + armed (on RX): the value it will apply on key-down.
  • red ATT -31 β€” engaged (keyed): the attenuation now applied to the front end.

Click the lamp to toggle ATT-on-TX (same control as the Settings checkbox). The lamp snaps orange β†’ red on key-down β€” your visible confirmation that the front end is protected. (Note: the LNA gain readout itself keeps showing your RX setpoint β€” the ATT lamp is the TX-state indicator, not the LNA number.)

RX2 jack isolate on TX (two-converter radios)

On a two-converter radio (ANAN-100D / 200D / G2 / 7000 / 8000, Brick3), transmit always goes out ANT, not the RX2 jack. The RX2 jack stays on its analog path unless you isolate it. ATT on TX pads both ADCs; it does not open the analog relay on the RX2 jack.

Settings β†’ TX β†’ RX2 jack isolate on TX (default ON, hidden on one-converter radios) grounds/disconnects the RX2 jack for the duration of every transmission, then restores it on key-up. Leave it on. Diversity uses that jack in receive and drops the mix for the key, so isolate and the pause agree. SUB itself does not change this β€” isolate still applies whenever you transmit, SUB or not.

External TX Inhibit (lock out all transmit)

A hard safety lockout for when sensitive gear β€” a second receiver / SDR, a scope, a spectrum analyser β€” shares your antenna or bench and you must be sure the radio can't key while it's connected. Tick Settings β†’ TX β†’ External TX Inhibit and the radio cannot transmit by any means: MOX, foot switch / hand-mic PTT, CW, Tune, and TCI are all blocked at the source. Engaging it while you're transmitting drops you straight to receive.

  • It lives in Settings β†’ TX on purpose β€” not a one-click front-panel button β€” so an accidental click can't release it; you must open the dialog to turn it back off.
  • It is remembered across restarts (fail-safe): leave it on and it stays on until you consciously clear it.
  • While it's active a red β›” TX INHIBIT badge shows in the top toolbar so you always know why keying is dead.

SWR protection & TX power limiting

Two operator-set guards that protect your PA / finals and a downstream amplifier. Both live in Settings β†’ TX (the safety column, next to ATT-on-TX); SWR protection also has a front-panel PROT lamp on the TX panel.

SWR protection (auto-cut / fold on high reflected power). While you transmit, Lyra watches forward/reflected power and acts if the SWR stays above your limit β€” protection against a bad antenna, a disconnected feedline, or an ATU that didn't latch. It's deliberately hard to false-trigger: a key-down blanking window skips the T/R + ALC settle, forward/reflected power floors ignore the low-power regime where the ratio is just noise, and the over-limit condition must persist for a short dwell before it acts. The SWR reading is calibration-free (it's a power ratio), so it works without the PWR-meter calibration. After it acts it latches β€” re-key (MOX or TUN) to resume once you've fixed the antenna; it never recovers on its own while keyed.

Knob Default What it controls
Enabled ON Master SWR protection.
Limit 5 : 1 SWR at/above which it acts once sustained. 5:1 is conservative β€” most antennas run under 3:1. Range 1.5..10:1.
On high SWR Cut TX Cut TX unkeys immediately (safest). Fold back power halves TX drive in steps to try to bring the SWR down while staying on the air, escalating to a hard cut if it reaches the fold floor and the SWR is still over the limit.
Fold floor 10 % Lowest TX drive the Fold action steps down to before it gives up and cuts. Used only with the Fold action.
Protect during tune (TUN) ON Whether the SWR cut also applies to a deliberate ATU tune carrier.

Front-panel "PROT" lamp (TX panel, next to the ATT lamp):

  • gray PROT off β€” disabled.
  • green PROT β€” enabled + armed (watching reflected power).
  • red SWR x.x:1 β€” it acted (cut or folded): the latched ratio that tripped it. With Fold, the live TX Drive % readout shows the reduced level. Re-key to reset. Click the lamp to toggle enable.

TX power cap (watts, per band). The amp-protection power limit now lives on its own Settings β†’ PA Gain tab and is set in watts, not drive %. It protects a low-drive amplifier whose input can't take the HL2's full output by holding your TX output at or under a watts ceiling on every band β€” and because each HL2's driveβ†’watts curve differs by band, it auto-calibrates instead of guessing. See Settings β†’ PA Gain for the full set-up. In short: enter each band's full output, tick Limit TX output to ___ W, then key TUN on each band into a dummy load (amplifier out of line) β€” Lyra walks the power up to your cap from below and locks that band exactly at it (the band turns green βœ“). SSB and the other modes then hold each tuned band at your cap automatically, capping voice peaks without chasing them. (The old "Max TX drive %" cap is retired β€” the watts cap supersedes it.)

TR Sequencing + Amplitude Envelope (timing knobs below)

Seven operator-tunable knobs that control the timing of the MOX β†’ RF edges and the amplitude shape of the TX I/Q at the start and end of every keying event. All values are in milliseconds; live- apply (changes take effect on the next MOX edge β€” no restart, no MOX cycle required). Persisted across Lyra restarts.

TR Sequencing (PTT β†’ wire-MOX β†’ RF timing)

Four scheduling knobs. They unwind in this order on every keying event:

Knob Default What it controls
MOX Delay 15 ms From operator-PTT (your click / space-bar / TUN) to the wire-MOX bit going hot. Gives the RX-protect step-attenuator + external filter-board relays a window to settle into TX configuration before RF appears.
RF Delay ⚠ 50 ms From wire-MOX hot to the "RF settled" edge (when actual RF appears on the antenna). This is the hot-switch protection window for external SS linears β€” their T/R relay needs typically 30–50 ms to settle. The default is bench-safe for typical 1 kW SS HF linears. Reducing this below your amp's T/R settle spec can destroy the PA.
Space MOX Delay 13 ms Keyup re-key window: the time between operator-keyup and the wire-MOX bit clearing. Allows a mic-clip / CW-dot-tail re-key in this window to collapse-stay-TX (no on-the-air drop, no extra T/R cycle). Also sets the upper bound on Fade-Out Duration below β€” fade-out must fit inside this window or it gets truncated at MOX-clear.
PTT-Out Delay 5 ms Final cleanup window after wire-MOX clears β€” before step-att restores, OC pattern flips back to RX, and moxActive emits false. Lets external relays finish switching back before the RX front-end re-opens.
TX-Stop Delay 10 ms In-flight UDP datagram clear window. Time between the TX-DSP channel stopping (blocking flush) and the wire MOX bit clearing on keyup. UDP datagrams already-sent (or sitting in your OS network buffer) carrying MOX=1 + non-zero TX I/Q need this window to actually reach + be processed by the HL2 BEFORE the wire MOX state flips β€” otherwise the gateware could see momentary MOX=0 with stale TX I/Q from a previous datagram. Default 10 ms matches the verified-reference value. Reduce only on a very low-latency NIC + LAN where you're confident no datagrams sit in OS buffer.

Amplitude Envelope (cosΒ² fade on TX I/Q)

Two knobs that shape the amplitude of the TX I/Q at the EP2 wire-pack stage. The shape is a cosΒ² half-cycle (raised cosine β€” smooth, no high-frequency content, the gold-standard envelope for PTT-onset shaping).

Knob Default What it controls
Fade-In Duration ⚠ 50 ms The cosΒ² ramp from zero to full amplitude at keydown. Belt-and-suspenders amp protection β€” even if RF Delay is right, the soft amplitude rise INSIDE the RF Delay window adds redundant protection against any residual MOX-bit / relay timing skew. Default matches the default RF Delay so the ramp completes exactly when "RF settled" fires. Reducing this without knowing your amp's switching behaviour can expose the PA to hot-switch transients.
Fade-Out Duration 13 ms The cosΒ² ramp from full amplitude to zero at keyup. Must fit inside Space MOX Delay above β€” the gateware DAC stops consuming TX I/Q the instant wire-MOX clears, so a fade-out longer than Space MOX Delay gets truncated mid-ramp (audible click). RF going DOWN doesn't damage amps (the relay disengages cleanly), so this is shorter than Fade-In β€” purely click-prevention.

The asymmetric default (50 ms in / 13 ms out) reflects the asymmetric risk: RF coming UP into a still-switching relay can destroy amps; RF coming DOWN cannot.

Restore hot-switch-safe defaults

A single button that resets all seven values to 15 / 50 / 13 / 5 / 50 / 13 / 10 ms β€” the bench-validated profile that's safe for typical 1 kW SS HF linears (and reference-faithful for the in-flight UDP datagram clear). Use it any time you've experimented with values and want a known-good starting point.

The two layers compose into one "clean PTT onset" story. The TR-sequencing values control scheduling of the MOX β†’ step-att β†’ RF β†’ cleanup edges; the amplitude envelope shapes the I/Q amplitude itself. At defaults the fade-in completes exactly when "RF settled" fires (50 ms after wire-MOX hot), and the fade-out completes exactly when wire-MOX clears (13 ms after operator-keyup).

Live-apply behaviour: changes take effect on the next MOX edge, not the in-flight one. If you change a value while the radio is keyed, the in-flight transition finishes at the prior rate; the new value applies at the next keydown or keyup. So you can A/B values mid-session by changing then re-keying β€” no MOX cycle, no app restart.

Tune drive (what the TUN button keys at)

A 3-way Tune drive picker decides the power the TUN button uses when you key it, plus the two values it can draw from:

Mode TUN keys at
Use TX Drive slider your live TX Drive % β€” same as a normal transmit (the classic behaviour).
Use Tune slider the separate Tune slider % below β€” a per-band, live-adjustable level (remembered per band, and also shown inline on the TX panel while armed).
Use fixed drive the Fixed drive % below β€” one value, the same on every band, ignored sliders.

In the two non-slider modes Lyra stashes your TX Drive on key-down and restores it when you un-key, so tuning at a safe low power never disturbs your voice-TX setting. Only the spinner the active mode uses is enabled.

TUN can never exceed your Max TX drive. Both the Tune and Fixed spinners are capped at your Max TX drive ceiling (Settings β†’ TX), and the wire enforces the same ceiling on every drive write regardless β€” so a tune level can never overdrive past the maximum you've set. The typical workflow: set a low tune level (e.g. 25 % into a dummy / tuner) and a higher voice-TX drive, and TUN tunes safe while your QSO drive is untouched.


Settings β†’ VOX (voice-operated transmit)

VOX keys the radio when you speak and drops it after your voice stops β€” hands-free SSB, no PTT. It has its own Settings tab (kept off the TX tab to keep that one uncluttered), and an arm/disarm button on the TX panel.

VOX is a keying decision only β€” it watches your mic and RX audio and decides when to key. It adds zero DSP to your transmit signal, so it can't colour your audio and is safe alongside every TX feature. It keys voice modes only (never CW), and never overrides a manual or foot-switch key β€” a hardware key always wins, and VOX only ever releases the key it took itself. Default OFF.

Arming

Tick Enable VOX here, or click the VOX button on the TX panel β€” the two stay in sync. Green = armed (listening); red ● = keying now. To stop instantly, click the button off (or in Settings untick Enable): that drops a VOX-held transmission the same moment, without waiting for the timing to run out. A foot-switch or MOX press also overrides VOX at any time.

The two level meters (dial against these)

dBFS threshold numbers are hard to guess, so the tab shows two live colour bars β€” green at low level rising through yellow to red β€” with a cyan marker on each showing the level you've set. They're live even when VOX is off, so you can set everything up before arming.

  • Mic level β€” your live mic level. The cyan marker is your Threshold. Speak normally and watch where your voice peaks; set Threshold just below those peaks but above where the bar sits when you're silent (desk / room noise).
  • RX level β€” your live received-audio level (what you hear on the speaker). The cyan marker is the Anti-VOX level. This meter greys out when Anti-VOX is off.

The knobs

  • Threshold (dBFS, default βˆ’35) β€” how loud your voice must be to key TX. Higher (toward 0) = you must speak up / desk noise won't trip it; lower = more sensitive. Set it with the Mic-level bar (above).
  • Open delay (ms, default 10) β€” how long your voice must stay above the threshold before VOX keys. Rejects clicks, thumps and short noises. Raise it if stray sounds key you; keep it small so speech onset isn't clipped.
  • Hang time (ms, default 300) β€” how long TX is held after your voice drops below the threshold. Bridges the gaps between words so VOX doesn't chatter mid-sentence. Raise it if VOX drops between words; lower it to release faster at the end of a transmission.
  • Anti-VOX (toggle + level, default ON / βˆ’45 dBFS) β€” stops your own received audio from keying VOX. Essential if you run open speakers instead of headphones (speaker audio bleeds into the mic). When the RX audio is above the Anti-VOX level, VOX won't key. Set the level with the RX-level bar: put the marker just above where the bar sits when the radio is receiving voice. On headphones you can leave Anti-VOX off.

Quick setup

  1. Untick Anti-VOX for a moment (or use headphones) and watch the Mic level bar while speaking normally.
  2. Set Threshold a few dB below your speech peaks, above the silent noise floor.
  3. Talk a normal sentence: if VOX drops between words, raise Hang time; if stray desk noise keys you, raise Threshold or Open delay.
  4. On open speakers, turn Anti-VOX on and set its level just above where the RX level bar sits on received voice.
  5. Arm the VOX button and go β€” the button lamp shows armed (green) and keying (red) at a glance.

All settings persist across sessions.


Settings β†’ PA Gain

Per-band TX power calibration and amplifier protection, all set from a dummy load with your amplifier out of line and PA Gain left at 100.

⚠ Always calibrate into a dummy load, amp OUT. Calibrate at full drive (100 %), and not in CW β€” CW won't make a steady tune carrier, so use SSB / AM / FM.

Calibrate each band (do this first). Under PWR meter calibration: key a full-drive TUN carrier, read your external watt-meter, type that figure into "Your watt-meter reads:", and press Calibrate this band. You don't have to hold TUN while you type β€” Lyra captures the reading while you tune, so you can drop TUN, type, and calibrate. At full drive that one press does two jobs: it trims the on-screen PWR meter to match your external meter, and it fills that band's Full Output (W) (the amp-cap reference) β€” so you measure each band just once. Repeat for the bands you use. (Calibrate below full drive and only the meter trim is set; the status line tells you.)

Ready-to-calibrate indicator. A live box sits right beside the Calibrate this band button so you don't have to remember the two setup traps β€” it's green "READY βœ“" when you're set, and warns otherwise: red "IN CW β€” CAN'T TUNE" if the band is in CW (CW makes no steady tune carrier β€” switch to SSB / AM / FM), or amber "…% β€” NOT FULL" if the drive TUN will use isn't at 100 %. It follows the right drive automatically β€” your TX Drive slider, or the Tune slider / Fixed tune drive if you've set a separate tune drive in Settings β†’ TX β€” and names which one to bump.

PA Gain By Band. One number per band, default 100 = neutral β€” leave it at 100 while calibrating. Each HL2, and each band, varies, so nothing is computed: it's a per-band trim you can later nudge to tame a hot band or push a weak one. Drive % stays the dial; this calibrates what the dial means in watts. Each row's Clear button starts that band over β€” it resets PA Gain β†’ 100, wipes its Full Output, and un-learns any cap tuning for the band, so you can re-calibrate it from scratch.

Full Output (W). The watts each band makes at full drive β€” filled for you when you Calibrate that band at full drive (or type it by hand). Shows "β€”" until measured. It's the reference the watts cap needs.

Max Output (amp protection). Once you've calibrated the bands you use: tick Limit TX output to ___ W and set your cap, then tick Enable Max cap (arm) β€” the cap does nothing until it's armed, and you can't arm it until at least one band is calibrated. Now key TUN on each band: Lyra walks the power up from below and parks that band on the highest drive step that stays under your cap β€” the Cap tuned column shows a green βœ“ when locked, a red β€” when not yet tuned. SSB and the other modes then hold each tuned band at that level automatically, capping voice peaks without chasing them. A band you haven't tuned runs conservatively under the cap until you do. Change the cap β†’ re-key TUN on each band to re-learn.

Because the approach is always from below and parks on the under-cap step, the output never overshoots β€” safe for a solid-state amp where a fraction of a watt over matters. (This replaces the old "Max TX drive %" control β€” the watts cap supersedes it.)

Why a band can land noticeably under the cap. The Hermes Lite's drive control is coarse β€” the on-board DAC has only about 16 hardware steps, and each step is a different number of watts on every band. Your cap almost always falls between two of those steps (for example, one step makes 3.0 W and the next jumps to 3.7 W, with nothing available in between). Lyra always chooses the step just under your cap, so on that band a 3.5 W cap holds at ~3.0 W β€” not because the servo is timid, but because that is the closest the radio can get without going over. This is deliberate: under-is-safer is the right call for amp protection, and the level is rock-steady rather than flickering across the gap. Landing exactly on the cap would require finer-than-hardware drive control (filling the gaps between the coarse steps with the continuous digital gain) β€” a planned future refinement, not something worth rushing into the safety path.

⚠ The cap won't limit until you arm it. Ticking Limit TX output to only sets the value β€” the cap does nothing until you also tick Enable Max cap (arm), which stays greyed until you've calibrated at least one band. This is deliberate: a cap can never silently mis-limit your power. If you arm before a band has a Full Output reference, that band runs a safe conservative ~30 % drive fallback (power reads LOW) until you calibrate it. While Max cap is armed, a CAP chip stays on the TX panel on every band (including at low Drive): amber CAP learn = not yet TUN-locked, cyan CAP nW = locked at your set watts. The chip stays fully visible when Drive is under the lock β€” RF may drop, but the learned ceiling does not follow Drive back up. Raising the slider past the lock while keyed must not flash full output; RF stays at the capped watts. If you don't run an amplifier, just leave the cap unticked and Lyra transmits at full drive. (Upgrading from an older version keeps an existing cap armed, so you never lose amp protection on update.)


Settings β†’ Network (TCI)

TCI (Transceiver Control Interface, the Expert Electronics protocol) lets logging, cluster, and digital-mode programs drive Lyra over your local network β€” set frequency, mode, and filter; read your current state; and pull DX-cluster spots onto the panadapter. SDRLogger+, Log4OM, N1MM, WSJT-X and others speak it.

Lyra runs a TCI server; the other program connects to it as a client.

  • Bind address β€” which network interface to listen on. Leave blank / 0.0.0.0 to accept connections from any interface (e.g. another PC on your LAN); use 127.0.0.1 to allow only programs on this same PC. Who may connect, and the password for a remote voice session, live on Settings β†’ Remote.
  • Port β€” the TCI listening port (Lyra default 40001, same as ExpertSDR3). Older Expert gear and some logger templates still use 50001 β€” match whatever is in this box, not a guess.
  • Rate limit β€” minimum gap between repeated broadcasts of the same value, to avoid flooding a client during fast tuning.
  • Send full state to clients on connect β€” push the current frequency/mode/filter the moment a client connects, so it starts in sync.
  • Add "CW" to the modulations list (CWL/CWU alias) β€” some clients only understand a bare CW; enable this so they can select it.
  • Emulate ExpertSDR3 / Emulate SunSDR2 PRO β€” default on. JTDX and WSJT-X only attach to that protocol/device pair; they also need start; before ready; (otherwise WSJT-X says β€œTCI not switched on” even when this checkbox is on). MSHV and Open SSTV accept Lyra's own names. Un-tick only if you need Lyra to identify as itself.
  • TCI server running β€” the master on/off. When on, the header shows the ● TCI indicator (green with a client count, amber when idle).

Audio / IQ streaming is automatic: if a connected client asks for an audio or IQ stream, Lyra sends it the receiver audio (or raw I/Q) as TCI binary frames β€” no extra toggle needed. Lyra advertises the audio format (48 kHz / float32 / stereo / 2048-sample frames / 50 ms TX-buffer hint) at connect so the client decoder configures itself correctly the moment it attaches.

Two TCI channels (HL2 / BrickSDR2 SUB). Lyra advertises channel_count:2. There is no extra Settings β†’ Network toggle for RX2 β€” SUB is the Tuning SUB button (or TCI rx_enable:1). Mapping matches deskHPSDR / Thetis, not β€œchannel 1 = always RX2”:

Client command What Lyra does
vfo:0,0 / dds:0 RX1 / VFO A
vfo:0,1 SPLIT VFO B (TX offset) β€” does not turn SUB on
vfo:1,0 / dds:1 RX2 / SUB frequency
rx_enable:1 Enable / disable SUB
modulation / if on channel 1 RX2 mode / IF

Setting an RX2 frequency does not auto-enable SUB. Drive SUB with rx_enable or the panel button.

Signal-strength readings. Lyra broadcasts calibrated dBm as rx_channel_sensors:RX,SUB,<dbm> β€” RX1 is 0,0, RX2 is 1,0. The RX2 sensor is sent whenever a client is connected; with SUB off the reading is a quiet floor (about βˆ’140 dBm), not a live second receiver. Combo auto-RST (below) still uses the RX1 S-meter (and Combo SNR is RX1-only).

SDRLogger+ Combo link

SDRLogger+ is the companion logging program (by the same developer). Over an ordinary TCI link it already drives Lyra and shows spots β€” but turning on Combo upgrades that one-way link into a two-way collaboration that runs over the same TCI socket: no bridge app, no second connection, no extra port. The CW Console, the CW Decoder and the logger start acting as one desk.

Engage it with a single switch:

  1. Settings β†’ Network β†’ tick "SDRLogger+ Combo (share CW Console contact)". It's off by default, and it's a per-machine setting that's remembered.
  2. Make sure TCI server running is on (Combo rides the TCI link), and that SDRLogger+ is connected to Lyra as a TCI client (point its radio/TCI connection at Lyra's IP + port, the same 40001 default above unless you changed it).
  3. When the two are linked, SDRLogger+ shows a ● Lyra Combo badge in its Log-Entry header β€” that badge is your confirmation the link is live.

With Combo on, four things happen automatically as you work a station:

  • Call β†’ logger. Put a call in Lyra's CW Console His call β€” type it, or grab it from the CW Decoder β€” and it lands in SDRLogger+'s log entry and fires its callbook (QRZ / HamQTH) lookup. You copy the call once, in Lyra, and the logger catches up.
  • Name β†’ back to {NAME}. After that lookup resolves, SDRLogger+ sends the operator's first name back to Lyra, which fills the {NAME} token in the CW Console. A reply macro like {CALL} DE {MYCALL} GE {NAME} now greets them by name with no typing.
  • Received signal β†’ RST. SDRLogger+ can auto-fill the S digit of RST-Received from the RX1 calibrated S-meter (TCI channel 0) β€” so the number it logs is exactly what your main meter shows, not a guess. Lyra also sends a small signal-to-noise figure alongside it (Combo only, RX1) so the logger peak-holds and fills the S only on a real signal, not on the band noise. Turn on the S-auto control next to the RST-Rcvd field in SDRLogger+; typing a value latches it to manual, and working a new call re-arms it. Works on SSB / CW / digital (not SAT). SUB / RX2 is not used for Combo RST (that slice is held β€” Combo stays on the RX1 meter).
  • One-click log with {LOG}. Add the {LOG} action token to a CW macro β€” e.g. TU 73 {MYCALL} ee {LOG} β€” and sending that macro sends the sign-off and logs the QSO in SDRLogger+ (call, RST, mode and frequency all stamped from the shared state). A macro that is only {LOG} is a log-only button that keys nothing. See CW operating for how {LOG} sits in the token palette (it's the yellow action chip).

Combo is a Lyra ↔ SDRLogger+ conversation β€” a plain third-party TCI logger simply ignores the extra messages, so leaving it on does no harm. Nothing here changes the normal TCI control/spots behaviour; it only adds the contact-sharing, name-back, signal-report and one-click-log conveniences on top.

CW keying over TCI

A TCI logging or contest program can key CW through Lyra β€” it sends the text, Lyra's keyer generates the Morse and the radio puts it on the air (the same path the on-screen CW Console uses). Lyra implements the Expert Electronics TCI CW commands:

  • cw_macros β€” send a plain message ("CQ TEST DE N8SDR"), the everyday "send this text" command.
  • cw_msg β€” the contest exchange as prefix / callsign / suffix (e.g. TU / N8SDR / 599 004), with $N to repeat the callsign.
  • cw_macros_speed β€” set the keying speed (WPM); a bare query reads it back.
  • cw_macros_stop β€” abort the current send immediately.
  • CW terminal β€” the key line stays up between letters so you can correct the callsign mid-send. Lyra reports when the queued text has drained and when the callsign's last letter starts. |SK| (and the other prosigns) join as one character; < and > step the speed by 5 WPM inside the text. Turning the terminal off finishes the letters already queued, then drops the line. Idle for 30 seconds drops it too.

Keying only happens in CWU/CWL (in any other mode the commands are ignored). Set your logger's TCI keyer to Lyra and it sends straight through. SDRLogger+, N1MM and similar work this way.

TX sensors (mic dBm, RMS watts, peak watts, SWR) keep streaming while you are receiving, so a client's transmit meters do not go blank between overs. A fifth number, ALC headroom in dB, rides on the same line. It is βˆ’200 while receiving, and a client that reads the first four numbers is unchanged.

Digital modes over TCI (FT8 / FT4 / MSK144 / Q65 / etc.)

Lyra is a fully bidirectional TCI partner for the digital-modes clients operators already use β€” MSHV, JTDX, WSJT-X and similar. There is no in-radio RTTY (or FT8) decoder; run those programs from Apps. The client both receives Lyra's RX audio over TCI and sends its modulator audio back over TCI for Lyra to transmit; no VAC, no virtual cables, no host-side sound card needed.

One-time setup:

  1. Settings β†’ Network (TCI) β€” make sure the server is running and the port matches what your digital-modes client expects (Lyra default 40001).
  2. Settings β†’ TX β†’ Mic + ALC β†’ Mic source β€” pick TCI. This routes the digital-mode client's audio into Lyra's TX chain in place of the hand-mic. (The client can also auto-select TCI by sending a TRX:0,true,tci command β€” supported, but having the picker on TCI means manual TUNE buttons in the client also work.)
  3. In the client (MSHV / WSJT-X / JTDX) configure: TCI server 127.0.0.1:40001, sample rate 48 kHz, block size 2048, buffering 50 ms. Most clients set these defaults out of the box; just confirm.

Operating flow:

  • The client tunes Lyra's VFO and sets the mode (typically DIGU for FT8 on the standard 14.074 / 7.074 / 21.074 / … MHz dial frequencies).
  • RX audio streams to the client continuously; its waterfall decodes the band exactly as if the client were attached to any other TCI radio.
  • When the client wants to transmit, it sends a TRX-on command. Lyra keys MOX the same way the TX-panel MOX button does. The client's modulator audio is fed through the WDSP TXA chain (with your TX mic gain, ALC, leveler, TX bandpass, and any EQ active), and onto the radio. At keyup the client sends TRX-off; Lyra returns to RX. A TUNE command keys the same path as the TX-panel TUN button. TX-audio CHRONO headers use the rate / samples / format / channels negotiated at connect β€” not a fixed 1024-sample assumption.

Lyra's TCI keying follows the Expert TCI protocol exactly: the transmit/receive state is confirmed to the client on the real key edge (not before it). A client therefore cycles cleanly between transmit and receive on every over β€” no getting stuck in transmit and no lag returning to receive, even for clients that gate their own keying tightly on the reported state (MSHV, etc.). Tune buttons in the client key and release the same way.

  • The Mic gain slider on the TX panel still applies to TCI audio β€” the same chain handles voice and digital. Profiles now save mic gain (and the TCI gains), so you can keep an SSB-voice profile and an FT8/MSHV digital profile each with their own trim and bind them per mode family β€” switching mode then recalls the right trim automatically.

Dedicated TCI-only gain sliders (Settings β†’ Network β†’ TCI server group). Two independent Β±dB knobs sized for the common digital-mode mismatches, so you can dial the TCI path without disturbing your voice mic gain:

  • RX-out gain (βˆ’40 … +10 dB, default 0 dB = unity) β€” attenuates or boosts the audio Lyra sends to TCI clients. Drop this if MSHV / JTDX / WSJT-X show an unusably hot waterfall and the client-side RX gain slider isn't bringing it down enough. 0 dB = byte-identical to Lyra's RX level. Takes effect at the next emitted audio packet (~43 ms at 48 kHz / 2048-sample frames).
  • TX-in gain (βˆ’40 … +10 dB, default 0 dB = unity) β€” attenuates or boosts the TX audio Lyra receives from the client before it hits the WDSP TXA chain. Drop this if your client outputs audio hotter than Lyra's ALC handles gracefully (the common case β€” digital-mode software often sends near full-scale by default and overdrives Lyra's TXA limiter slightly). Boost it for an unusually quiet client. 0 dB = byte-identical to the client's stream level. Takes effect at the next received audio packet.

Both sliders are the live, always-available adjustment. The TCI RX and TX gains are also saved in profiles, so you can store balanced ESSB-voice and digital setups and recall them β€” manually or via per-mode-family auto-recall β€” instead of retouching the gains every time you switch.

Troubleshooting:

  • MOX engages but the client says "no audio" β€” confirm Mic source = TCI on Settings β†’ TX β†’ Mic + ALC; without it Lyra processes audio from the configured hand-mic source while the client's audio gets dropped.
  • Client RX waterfall looks unusably hot β€” Lyra advertises the format at connect so the client's RX gain slider should land in a sensible position. If your client doesn't honour the advertised parameters, drop Settings β†’ Network β†’ RX-out gain (Lyra side, works for all clients at once) or the client's own RX gain slider until the waterfall sits in the normal βˆ’20 to βˆ’10 dB range.
  • MSHV / JTDX TX overdrives Lyra's ALC β€” drop Settings β†’ Network β†’ TX-in gain by 3-6 dB (the client's modulator is louder than Lyra's TXA chain wants by default). Watch the MIC and ALC bars on the multimeter while keying β€” MIC should peak around βˆ’10 to βˆ’6 dBFS with ALC barely budging.
  • You're transmitting but nobody's decoding you (no PSKReporter spots) β€” usually means a frequency / band / power issue on the station side (wrong dial, antenna fault, low drive). Check the external watt-meter, confirm the band is open, and try a known-good digital-mode sked partner. The TCI audio path itself is verified reference-faithful end-to-end.

Digital modes over VAC (Virtual Audio Cable)

If you'd rather wire audio the classic way β€” through a Virtual Audio Cable instead of over TCI β€” Lyra has a built-in VAC path. This suits clients you prefer to run by soundcard, or any setup where TCI handles control (PTT, CAT, frequency, band) while the audio rides a cable. That's the recommended split for MSHV: let TCI key the radio and follow the band, and route the audio over VAC.

Operators who prefer TCI for both audio and rig control can skip VAC entirely. VAC is for apps that only speak soundcard (or a second decoder on RX2 via VAC2).

VAC carries audio only β€” it does not key the radio. Keying still comes from TCI (or CAT). TCI control and TCI audio are independent; using TCI to PTT does not mean you're using TCI audio.

You need two cables per VAC (e.g. VB-Audio "CABLE" + "CABLE-B") β€” one for each direction. VAC2 uses a second pair (CABLE-C / CABLE-D) and needs SUB so RX2 is on the cable:

Direction Lyra side (Settings β†’ Audio β†’ VAC1) Client side
RX (decode) Output device = cable A (e.g. Line 1) Input = cable A
TX (transmit) Input device = cable B (e.g. Line 2) Output = cable B

Setup:

  1. Settings β†’ Audio β†’ VAC1 β€” tick Enable (or Auto-enable for digital so it follows DIGU/DIGL), set the Output device to the cable your client reads (RX), and the Input device to the cable your client writes (TX). Leave RX/TX gain at the defaults to start (0 dB / +3 dB). The status log shows [vac1] LIVE: out='…' | in='…' when it's up β€” if in='(none)', no input device is selected and TX audio can't reach the radio.
  2. Settings β†’ TX β†’ Mic + ALC β†’ Mic source = "PC Soundcard (VAC1)". This is the step that catches people. Without it the TX chain reads a different source (the codec mic, or TCI) and you get no power out even though RX on the cable works. You can also tick Use VAC1 as TX source on the Audio tab (it is disabled when Mic source is TCI). Stay on DIGU / DIGL if Auto-enable for digital is on β€” USB turns VAC off.
  3. TCI for control: keep your TCI client connected for PTT/frequency (Settings β†’ Network). In MSHV's audio panel, point Output at the TX cable and Input at the RX cable (the reverse of Lyra), and pick the channel (Left) your cable carries.
  4. Leave the Leveler OFF for digital (see that section).

The fastest fix when a VAC transmit produces no power: check the Mic source β€” if it's on TCI (e.g. your TCI/voice profile left it there), the TCI side claims the TX-audio path and pulls from an empty TCI stream β†’ silent β†’ no RF. Set it to PC Soundcard (VAC1). Saving a digital/VAC profile (which stores the mic source and the VAC enable) lets you flip the whole setup with one recall instead of toggling these by hand.

DX-cluster spots

Lyra paints DX spots right on the panadapter at each spotted frequency β€” callsign-tagged, with the spotter's country abbreviation. CW spots are placed allowing for your CW pitch so they sit on the actual signal, not zero-beat. Click a spot to tune to it and grab the call into the CW-console contact row (so a {CALL} macro instantly addresses that station). All controls live in Settings β†’ Network β†’ DX-cluster spots.

Three spot sources

Spots can pour in from any (or all) of three sources at once β€” they share one list, and the filters, clutter caps and marker colours below apply to all of them.

  • TCI β€” spots pushed in by a logger or cluster app (e.g. SDRLogger+) connected to Lyra's TCI server. This works automatically: whenever such an app is wired to a DX cluster, RBN or Skimmer and connected over TCI, its spots land on the panadapter with no extra setup.

  • SpotHole β€” a standalone internet aggregator (DX cluster + POTA + skimmer, all modes) that needs no logger of your own. It's an opt-in network feature, off by default:

    • Fetch DX spots from SpotHole β€” turn it on.
    • Sources β€” which SpotHole sub-feeds to include (e.g. Cluster,POTA; blank = every source).
    • Only the band I'm on β€” request just your current band so the list stays focused.
    • Poll every β€” how often Lyra refreshes from SpotHole.
    • Initial age β€” on connect, pull spots received within this window.
    • Refresh now β€” fetch immediately; a status line beside it reports what happened.
  • DX-cluster telnet β€” connect to a specific node (VE7CC / DXSpider / AR-Cluster). Standalone, no SpotHole needed:

    • Connect to a DX-cluster node β€” turn it on, then set Host and Port for the node.
    • Login call β€” the callsign you log in with; blank = your MYCALL. Set a club call, a friend's login, or a node-registered call if the node requires one.
    • Login cmds β€” optional commands sent right after login (separate several with ; or new lines).

    Tip β€” get more than CW. Many nodes default to RBN CW skimmer spots only. To also receive FT8/FT4 on VE7CC, set Login cmds to something like set/ft8;set/ft4 (and set/nocw to quiet the CW firehose). SSB spots are human-posted, so they're always sparse.

Filters

These are display-only β€” the underlying list always keeps everything; the filters just decide what's drawn.

  • Show modes β€” a comma list, family-aware (e.g. CW, SSB, DIGI). Blank = every mode.
  • Show regions β€” continent codes (NA/EU/AS/SA/AF/OC) and/or ISO-2 country codes (US, CA, DE… β€” the same codes shown on the spot markers). For example US,EU = the US plus all of Europe. Blank = worldwide.

Clutter caps

These keep a busy band readable.

  • Show at most β€” the maximum number of spots drawn at once (newest win); 0 = unlimited. Default 25.
  • Per-freq max β€” the maximum spots per frequency before the rest collapse into a "+K" badge on the newest marker (tames FT8 pile-ups); 0 = off. Default 3.
  • Bucket width β€” how close two spots must be to count as the same frequency. Default 500 Hz.

Marker colours

Set how the markers are coloured under Marker colour:

  • Source / client colour (default) β€” colour by where the spot came from.
  • Single colour β€” one custom colour you pick via the swatch.
  • By mode β€” CW / phone / FT8-digital / RTTY tints.
  • By region β€” a colour per continent.
  • By country β€” a distinct colour per DXCC entity.

Tick Show colour legend on the panadapter to draw a small key.

  • Colour new spots / New-spot colour / New for β€” a freshly arrived spot shows a distinct colour for N seconds so you notice it, then settles to the normal colour rules. (It's a solid colour, not a blink.)

The own-callsign highlight (below) and its optional toast still apply on top of whichever colour mode you choose.

Your own callsign + notifications

  • Highlight my callsign when spotted + Highlight colour β€” draw your spots in a colour you pick (default pink/magenta) so they stand out.
  • Pop up a notification when I'm spotted β€” show a toast (and the header β˜… Spotted! badge) when your own callsign is spotted.
  • Re-notify after β€” how long to wait before notifying again about your callsign, so you're not spammed (set to every time to disable the cooldown).

Other controls

  • Show spots on the panadapter β€” master on/off for the overlay.
  • Max spots β€” how many spots to keep in memory (the display caps above decide how many are drawn).
  • Spot lifetime β€” how long (in minutes) a spot stays before it ages out.
  • Clear spots now β€” wipe the current spot list.

Settings β†’ Remote

The browser desk is a separate package, Lyra Remote. Download it from Lyra Remote releases. How the page works is in the Lyra Remote wiki. Lyra does not host the page. On the computer you are sitting at, double-click Open Lyra Remote.cmd. The browser opens http://127.0.0.1:4173/. That address is the page. The box at the top of the page is Lyra, ws:// plus the radio computer and the TCI port from Settings β†’ Network (default 40001).

Same computer: leave the box at ws://127.0.0.1:40001 and leave Bind address at 127.0.0.1.

Another computer on the house network: copy the package there and open the page on that computer. Do not browse to the radio computer to get the page. On the Lyra computer set Bind address to 0.0.0.0, allow inbound TCP on the TCI port for private networks, and fill the page box with ws:// plus this computer's house-network address and that port.

Keep the port on the house network. Do not forward it to the internet.

The same Settings β†’ Remote choices cover this page and the later full IP remote. The listen address and port stay on Settings β†’ Network.

A direct connection

The browser opens a link straight to the Lyra that is already running. Audio, the spectrum, and tuning commands travel between those two programs on your own network.

No outside server carries the link. No account is created anywhere else. No authentication service is contacted, and nothing is sent away to be checked. Lyra decides, on the computer where Lyra is running, which addresses may connect and how the password is kept.

Who may connect

Accept only these and Refuse these take one full address, or a range written as a prefix.

  • 192.168.1.40 is one computer.
  • 192.168.1.0/24 is 192.168.1.0 through 192.168.1.255.
  • 192.168.0.0/16 and 10.0.0.0/8 are wider ranges.

A short piece, a star, or a dash range is refused. Separate entries with a new line, a comma, or a space.

Leave the Network bind address at 127.0.0.1 and another computer cannot open the port. A remote TCI program there is blocked. A program on this computer still connects. Set the bind address to 0.0.0.0 only when another computer on this network should reach Lyra, and do not forward the TCI port to the internet.

Both boxes blank: every address that can reach the port may connect. With the bind address open and Accept left blank, that includes every other remote TCI program that can reach the port.

Any entry in Accept: every other address is dropped before it can hear the radio. That is how you block other remote TCI programs. A remote TCI program on another computer connects only when that computer's address, or a range that covers it, is in Accept.

An address on Refuse is dropped even when it is also on Accept.

The computer running Lyra is always allowed, including when the page on that computer uses the house-network address. That computer cannot be refused, so a digital program on the radio computer keeps its connection.

A valid entry is applied as soon as you leave the box. A refused or unlisted address is dropped at the door and never counts as a password try.

Password and the voice session

The password is one phrase you set on the Lyra computer.

  • 12 to 128 characters. Spaces are allowed, so a short phrase works.
  • Include a word. A string of only numbers is refused, and so is one character repeated.
  • The callsign alone is refused, and so are password, lyra, letmein, qwerty, and changeme.
  • Type it twice. The two lines have to match.
  • Lyra stores a one-way hash on that computer. The phrase itself is not kept. Reopen the tab and the box is empty; type a new phrase only when you want to replace the saved one.
  • Clear password removes the hash. With no password saved, remote transmit stays off.

A remote proves that phrase once, when it starts a voice session. The phrase stays off the wire. A correct proof receives a session token: a long random value held only in memory, and only for that connection. Closing the page or dropping the link drops the token. The next connection proves the password again. The password is not sent again for each transmission, and it is not put in the address or stored in the browser.

Five wrong proofs from one address lock that address for 15 minutes. The waits between tries are 1, 2, 4, 8, and 16 seconds. A correct proof clears the count. While an address is locked, Lyra offers it no new proof. Listening for everyone else stays up. Programs on the radio computer are not asked, so WSJT-X and MSHV there keep keying.

Taking the token is what moves the microphone. A TCI connection by itself leaves the desk microphone, the rack, and the leveler where they were. While the voice session is held:

  • Transmit audio comes from that browser.
  • On USB, LSB, and AM the host EQ, speech, combinator, and tube plating step aside for the session. The mode stays what it was. FM already runs with that rack aside.
  • The host leveler is parked for the same span. ALC stays on.

Unkey only stops the transmit audio. The remote profile stays until the session ends or the link drops, and then the previous microphone, rack, and leveler come back. Lyra does not write those changes into Settings, so a crash comes back on the desk profile.

One password covers three things: listening, when you tick the box below; changing the radio; and transmit. A listen-only connection does not receive a transmit token.

Password required to listen is off unless you tick it. The box is saved. Spectrum and receiver audio stay open. The later hold, where spectrum and audio wait for the same proof, is not applied yet. Programs on the computer running Lyra are not asked.

The browser chooses its own microphone and applies its own EQ before the samples are sent. Lyra never sees the device name.

What Lyra applies today

The address lists are already applied. Lyra drops a refused or unlisted address when it tries to connect.

A remote program that asks to start a voice session receives one challenge. The password stays off the wire. A correct proof receives a session token held only in memory for that connection. Five wrong proofs lock that address for 15 minutes, and Lyra names the locked address. Listening stays up. A program on this computer is not asked, so it keeps keying.

When a token is granted, Lyra moves transmit audio to that connection, steps the speech rack aside, and parks the leveler. Those three stay live only. Settings keep the desk microphone. Unkey leaves the session up. Releasing the token, or dropping the link, puts the desk microphone, rack, and leveler back.

The page asks for the password only after Start voice. A normal connection leaves the desk profile alone. After the session is on, MOX sends that computer's microphone and Tune sends a carrier from Lyra. Open the page with Open Lyra Remote. A file opened by double-click can still listen, and it cannot prove the password or open a microphone. Password required to listen is saved. It does not hold the spectrum, and it does not drop a connection. The address lists and an unforwarded port keep other computers out.

Save the password before you allow a remote to transmit. The proof is checked by Lyra, on the Lyra computer, for that connection alone.


Settings β†’ CAT / Serial (rig control over COM / TCP)

This tab lets a logger or digital-mode app control Lyra over a serial port or a TCP socket, using the Kenwood CAT protocol β€” the same way you'd connect software to a real Kenwood rig. It's separate from the TCI server (previous section): TCI is for TCI-aware apps like SDRLogger+; CAT is for the huge world of apps that speak Kenwood CAT (WSJT-X, VarAC, fldigi, N1MM, Log4OM, Hamlib, and most loggers). So between the two tabs you have three ways for software to talk to Lyra: TCI, CAT-over-COM, and CAT-over-TCP.

How apps connect to Lyra

Lyra is the rig; your app is the client. On Windows, a serial connection between two programs on the same PC needs a virtual COM-port pair β€” install com0com (free), which creates a linked pair like COM10 ↔ COM11. Point your app at one end and Lyra at the other. TCP needs none of that β€” the app just connects to Lyra's host/port directly, which is why it's the simpler choice if your app supports it.

Serial PTT input

A digital-mode app keys Lyra over a serial PTT line (its "PTT method = RTS" or "DTR"). The app asserts the line; Lyra goes to transmit, which keys your HL2 / ANAN / Brick rig exactly as the on-screen MOX button does.

  • Enable β€” turn it on (off by default).
  • COM port β€” the port Lyra watches (the other end of your com0com pair from the app's PTT port). Rescan ports refreshes the list.
  • PTT line β€” CTS (if the app uses RTS) or DSR (if it uses DTR). On a com0com pair the app's RTS crosses to Lyra's CTS and DTR to DSR. If PTT seems stuck or backwards, try the other line or Invert.
  • Invert β€” key on the line going low instead of high.

The status line shows Watching for PTT / PTT ASSERTED β€” transmitting / Disabled.

Kenwood CAT server (two instances)

Each Kenwood CAT group is an independent server, so you can run (say) a logger on one and a digital app on another, each on its own port:

  • Label β€” a free-text note for what the port's for (e.g. N1MM, VarAC, FLDIGI) β€” purely for your own reference.
  • Transport β€” COM Port or TCP. Choosing one grays out the other's fields:
    • COM Port: pick the COM port (Lyra's end of the com0com pair) + Baud / Data bits / Parity / Stop bits to match the app (most apps are 115200, 8-N-1).
    • TCP: set TCP host (usually 127.0.0.1) and TCP port (e.g. 60000) β€” no com0com needed. Multiple apps can connect to one TCP instance at once.
  • Rig model β€” TS-480 (reports ID 020) or TS-2000 (ID 019). Match this to the rig model selected in your app. Thetis-flavoured profiles (e.g. VarAC's "Anan Thetis") expect TS-2000.
  • CAT server running β€” start / stop the instance. Watch the bottom status bar: it confirms listening on … / on COM… @ …, or tells you cannot listen / cannot open with the reason.

The app can then read and set VFO frequency and mode, and key TX (RX; / TX;). Data modes map the standard way: USB-D β†’ DIGU (MD9), LSB-D β†’ DIGL (MD6).

Tip β€” fastest digital turnaround. For modes like VarAC/VARA that flip RX↔TX rapidly, keying via CAT (set the app's PTT method to CAT) is event-driven and snappier than a polled RTS/DTR line. The bigger lever for turnaround is Settings β†’ TX β†’ TR Sequencing (RF delay etc.) β€” safe to shorten into a dummy load / barefoot; mind the hot-switch note if a linear is in line.


Settings β†’ Apps

Settings β†’ Apps (between CAT / Serial and Profiles) is the named list of programs you run with Lyra β€” FLDigi, Open-SSTV, WSJT-X, and so on. They show up on the header Apps chip (after Amp View): click a name to launch it. A second click does nothing if that program is already running.

Each row has a name, a Browse path to the .exe, optional arguments, an Auto-start with Lyra tick (default off), and Launch to try it now.

Hardware β†’ Startup (SDRLogger+ plus two generic path slots) still runs at boot and is not replaced by this list. Use Apps when you want a named chip menu; tick Auto-start on an Apps row only if you also want that one to open after Lyra starts.

These entries stay on this PC β€” they are not written into an exported profile.

RTTY, FT8, SSTV, and other digital programs live here (plus TCI / VAC). Lyra does not ship an in-radio RTTY decoder. CW paddle / keyboard / TCI send and the CW Dec reader stay native β€” do not look for Morse decode under Apps.

Tested with and recommended

Lyra does not bundle these. Install them yourself, then Browse to the .exe on Settings β†’ Apps. The same list is on that tab as clickable links.

Use Program Link
SSTV Open SSTV https://bucknova.github.io/Open-SSTV/
FT8 / FT4 MSHV http://lz2hv.org/mshv
FT8 / FT4 WSJT-X https://wsjtx.github.io/wsjtx/index.html
VARA chat VarAC https://www.varac-hamradio.com/
MIDI surface midi2tci (sidecar) https://github.com/ftl/midi2tci

TCI vs VAC audio setup is in Digital modes. MIDI wiring is below.

MIDI controllers (sidecar)

Lyra has no native MIDI stack. A USB encoder that looks like a mouse wheel is Navigation. Everything else β€” Mackie, Launchpad, MIDI fighter, a dedicated SDR MIDI surface β€” talks to Lyra the same way a logger does: TCI.

What you run is a small MIDI→TCI sidecar (a separate program). Lyra does not ship one, and Settings → Apps does not offer a one-click download. You install the sidecar yourself, then add it here like FLDigi: a name, Browse to the .exe, optional arguments, Launch or Auto-start if you want it after Hardware Startup.

Wire it once:

  1. Settings β†’ Network β€” TCI server running on, port 40001 unless you changed it. Bind 127.0.0.1 if the sidecar lives on this PC.
  2. Point the sidecar at 127.0.0.1 and that same port.
  3. Map knobs in the sidecar to TCI commands Lyra actually implements: VFO / DDS, mode, filter, volume / mute, SPLIT, MOX / TUNE, RX enable (SUB). Skip RIT / XIT and mixer / balance maps for now β€” Lyra's TCI server does not apply those yet (RIT enable is refused; offsets are ignored).
  4. Put the sidecar on Settings β†’ Apps if you want it on the header Apps chip.

A well-known open-source sidecar is midi2tci (Go, MIT): the original is ftl/midi2tci (JSON config, --trace). Later Windows-installer builds exist as community forks; Lyra does not promote a download URL from inside the app.

Lyra does not yet ship a branded midi2tci. A MIT fork under the Lyra org is allowed if copyright notices stay in the source β€” that is a separate project, not this radio binary.


Settings β†’ Visuals

Everything that controls how the panadapter looks lives on the Visuals tab of Settings (Ctrl+,). Changes apply live β€” you see them immediately. Your choices are saved between sessions.

Trace color

How the spectrum trace (the moving signal line) is colored. Pick a mode from the dropdown:

  • Solid color β€” one fixed color for the whole trace. Choose from the preset color chips, or click Custom color… for any color you like.
  • By signal strength β€” the trace color changes with how strong each part of the signal is, like a heat map (weak = dark/cool, strong = bright/hot). Pick a palette and a preview strip shows it (weak left, strong right). Choose Custom color… in the palette list to build your own dark-to-bright ramp from a base color.

Spectrum fill

Show fill beneath the trace β€” fills the area under the signal line with a soft gradient for a richer look. Turn it off for a clean, line-only trace. (You can pick a separate fill color in solid mode.)

Peak markers

Highlights the held peak of each signal across the tuned passband β€” a running "high-water mark" so you can see the strongest a signal has been. Drive the mode (Off / Live / timed / Hold) and Decay from the Display panel; the look lives here:

  • Show peak markers β€” master on/off (the Display panel's Peak Hold combo also turns this on when you pick a mode).
  • Style β€” Line, Dots, or Triangles (default Dots).
  • Show dB β€” label the strongest few peaks with their level in dB.
  • Colour β€” the marker color (default warm amber).
  • Decay β€” fade rate in dB/s for the timed hold modes (the Display panel's Fast/Med/Slow are presets for this).

Peaks are drawn only inside your RX filter passband, so they track the signal you're actually listening to.

Zero-beat markers

Show zero-beat markers (off by default) enables the small Β± needle under the frequency readout that helps you dead-tune a carrier. It appears only in the carrier modes β€” CWU, CWL, AM, SAM, FM β€” and is described in full under Tuning panel β†’ Zero-beat markers (it's also the fastest way to land a signal on frequency for the CW decoder, which has no AFC).

Noise-floor line

Show noise-floor line β€” a dashed reference line at the current noise floor, with an "NF βˆ’NN dBFS" label. Handy for judging how far a signal sticks up out of the noise. Pick its Colour (default sage green). On by default.

Trace smoothing

Smooths the trace over time so it's less jittery. 0 = Off (rawest, most responsive); higher values (up to 10) give a calmer trace. This is time-based smoothing β€” it does not flatten or hide real peaks.

Peak glow

Adds a luminous bloom around strong peaks so they pop off the screen. 0 % = Off; raise it (up to 100 %) for more glow. Costs a little graphics work only when it's on.

Glass sheen

A subtle glassy highlight across the panadapter for the "floating glass" look. 0 % = Off; 20 % is the default. Raise for a stronger sheen.

Tooltips

Show tooltips (default on) toggles the hover-help bubbles on controls across the whole app β€” the front panels and the Settings dialog. Turn it off for a quieter, no-popup UI once you know your way around. It's a single global switch (Settings β†’ Visuals β†’ Tooltips).

Gridline brightness

How bright the reference grid lines are, 0 (no grid) to 100 (bright). Default 35.

Frame rate

How many times per second the panadapter redraws, 1–240 fps. Default 60. Higher is smoother but uses more graphics power.

dB range (floor / ceiling)

The exact numbers for the bottom (floor) and top (ceiling) of the main signal-strength scale. Most operators just drag the scale on the panadapter edge, but you can type precise values here. Main spectrum and Main waterfall stay independent. These are remembered per band (40 m vs 20 m each keep their own).

SUB RX floor / ceiling

On two-converter radios only (Brick3SDR, ANAN-100D / 200D, …) Visuals adds SUB RX floor and SUB RX ceiling. One pair drives the SUB panadapter and the SUB waterfall together. Remembered per RX2 band. The first time you park RX2 on a band, Lyra copies Main spectrum floor / ceiling so you are not starting from factory numbers. Drag the SUB pane's scale edge and these spinboxes follow.

Waterfall dB range (RX and TX)

The waterfall has its own dB floor / ceiling, independent of the spectrum scale above, so you can tune the colour map for detail (a dark waterfall with colours that POP on weak SSB) without changing how the panadapter looks. Four numeric spinboxes plus an Auto switch:

  • Auto-fit the waterfall dB range β€” tracks the band automatically (noise floor βˆ’ 15 dB to peak + 15 dB). When on, the four manual rows below gray out. Off = use the floor/ceiling values you set.
  • Waterfall dB β€” RX floor / RX ceiling β€” active when MOX is OFF. This is the scale your normal listening uses; drag the waterfall's right-edge during RX and these update automatically. Defaults βˆ’120 / βˆ’20 dB.
  • Waterfall dB β€” TX floor / TX ceiling β€” active when MOX is ON. Separate from the RX pair so a key-down doesn't blow out your carefully-tuned listening scale. Defaults βˆ’70 / +30 dB, which frame a clean TX-tone line at typical HL2 drive levels (matching the reference's TX-side waterfall convention). Drag the waterfall's right-edge during MOX to tune from the panadapter instead β€” the spinboxes follow the drag live.

The RX and TX backings live on separate QSettings keys, so each pair persists independently across sessions; existing operators who already tuned their RX waterfall keep their settings on the same keys (no upgrade migration needed).

The MOX edge switches which pair is live instantly β€” your RX preferences (dark with pop) come back the moment you un-key, and the TX scale snaps in the moment you key. If the live waterfall still looks too hot on TX after first try, drag its right edge down a few dB while keyed (or tighten the TX ceiling spinner) and it'll stick for next time.

SUB layout

Settings β†’ Visuals β†’ Use a saved layout when SUB is on. Off (default): turning SUB on splits the panadapter in place and does not stretch the control docks. On: SUB recalls a named View β†’ Layouts slot (1–4). Save that slot with SUB already on so the second pane has room. Turning SUB off always restores the arrangement that was running just before SUB came on, whether the tick is on or off.

Watermark

Show Lyra constellation watermark β€” a faint Lyra (the lyre / constellation) image with a gently pulsing Vega star, over the panadapter. On by default. Untick to hide it.

Meteors

Occasional "shooting star" streaks that drift across the panadapter β€” ambient sky-weather, deliberately rare.

  • Show occasional meteor streaks β€” master on/off (on by default).
  • Meteor frequency β€” average gap between meteors, 5–120 s (default 30 s). Lower = more frequent.
  • Gold fireballs β€” percent chance a meteor is a warm-gold "fireball" instead of cool blue, 0–100 % (default 15 %).

Graphics backend

Advanced β€” restart to apply. Which graphics engine Lyra renders with. Leave it on Auto (recommended) β€” on Windows that's Direct3D 11, the most compatible. Vulkan / D3D12 / D3D11 / OpenGL can be forced if you know your card prefers one. (If panels ever fail to draw or crash when you drag them, set this to Direct3D 11 or Auto and restart.) This setting stays on the machine β€” it isn't carried in an exported profile.

Anti-aliasing (MSAA) on the same page β€” Off / 2Γ— / 4Γ— / 8Γ—, restart to apply. 4Γ— is the default (same look as earlier builds). Use Off or 2Γ— on a weak laptop GPU if the panadapter stutters with a browser open; 8Γ— is extra smoothing for a strong card (a 9070 XT class GPU). Safe boot (lyra.exe --safe) and the software renderer always run with MSAA off.

Graphics safe mode (automatic). If Lyra ever crashes while starting up (a bad GPU driver can do this before the window is even up), the next launch automatically drops to OpenGL so Lyra opens instead of crashing again β€” you'll see a one-time notice, and no registry editing is needed. It stays in safe mode until you pick a backend here (which clears it). If OpenGL still crashes at startup, it steps down again to the software renderer (slow, but it always works β€” enough to get in and change settings). And if startup still fails in the software renderer, the fault isn't the graphics backend at all β€” so Lyra resets just your panel layout to the default (keeping every other setting), shows a one-time notice, and restores your real graphics backend on the next launch. If a backend keeps crashing, the real fix is usually a GPU-driver update.


Settings β†’ Weather

Configure the weather alerts here. Nothing runs until you accept the disclaimer and tick Enable.

  • Disclaimer β€” tick to acknowledge the alerts are advisory only; this unlocks Enable weather alerts.
  • Sources (enable any combination):
    • Blitzortung β€” global lightning network, free, no key. Uses your location.
    • NWS / weather.gov β€” US wind + severe-storm alerts, free, no key.
    • NWS METAR β€” live wind from a nearby station (set its ICAO below).
    • Ambient Weather β€” your own station (needs API + Application keys).
    • Ecowitt β€” your own station (needs Application key + API key + the gateway MAC).
  • Thresholds:
    • Lightning range β€” how far out to consider strikes (shown in your chosen distance unit).
    • Wind sustained β‰₯ / gust β‰₯ β€” the speeds (mph) that raise the wind tier.
    • METAR station β€” the ICAO id (e.g. KTOL) for live wind.
    • Distance unit β€” Miles or Kilometres (also used by the ⚑ badge).
  • Notifications:
    • Desktop notification on alert β€” a system pop-up on a new alert.
    • Audible chime on alert β€” a beep on a new alert.
    • Send test alert β€” lights the badges + fires one notification for a few seconds so you can check it all works.
  • Station API credentials β€” Ambient API/Application keys, Ecowitt Application/API keys, and Ecowitt gateway MAC (only needed for those sources).

Remember to set your location in Settings β†’ Hardware β†’ Operator / Station β€” without it, the location-based sources can't tell what's nearby.


Credits and References

Lyra is a native C++23 / Qt 6 / Vulkan rebuild written from scratch by Rick Langford (N8SDR). The projects, documents, and conventions below were studied for ideas, ballistics, and protocol structure while building it. No source code was copied β€” each is referenced as "how the standard idiom works," and Lyra implements each idea natively in C++.

Inspiration and references (studied, not copied)

  • Thetis SDR (openHPSDR) β€” primary reference for HPSDR Protocol 1 wire format, TX-chain ordering, meter ballistics, ATT-on-TX policy, TR-sequencing conventions, AAmixer routing.
  • openHPSDR project β€” HPSDR Protocol 1 / 2 specifications, the authoritative wire-protocol documents.
  • PowerSDR β€” Thetis's predecessor; convention provenance for many UI idioms (per-mode bandwidth memory, AGC profiles, etc.).
  • HermesLite 2 wiki + ak4951v4 gateware (RTL) β€” the gateware- designer's authoritative register documentation, plus the Verilog source of the operator's specific HL2+ variant. The RTL is the ground-truth source for EP6 telemetry slot decoding, PA-enable mechanism, and TX-I/Q wire gating on the AK4951 gateware revision.
  • pihpsdr β€” cross-reference for HL2 PA-enable bit, TX-drive nibble, and the generic Protocol-1 HL2 wire path.
  • Quisk β€” cross-reference for HermesLite hardware register conventions (hermes/quisk_hardware.py).
  • linHPSDR β€” additional cross-reference for the Protocol-1 HL2 wire path (protocol1.c).
  • EESDR V3 β€” UI convention reference and the public TCI (Transceiver Control Interface) protocol specification that Lyra implements against.
  • Behringer X-Air mixer series β€” operator-supplied screenshots drive the upcoming Lyra-native Combinator + 5-band parametric EQ design (lands in v0.2.1). The X-Air's multiband compressor + EQ behaviour is the reference for Lyra's TX dynamics chain.
  • SparkSDR (binaries only β€” no source) β€” referenced for the HL2 push-pull PA bias procedure documentation.
  • Lyra (Python predecessor) β€” the author's earlier PySide6 SDR application. Several Lyra-cpp modules (band table, band-plan data, open-collector pin tables, grid-square math, frequency-display widget) are explicit ports from the Python predecessor β€” same author, same project lineage, internal port.

Lyra's source tree intentionally keeps these names out of code, comments, commits, and operator-visible UI strings (the "no-attribution rule"): the references inform the design, but every line of Lyra is Lyra-native C++. This Credits section is the single operator-facing place that names them, openly and once.

Licensed components (GPL v3+)

Lyra is GPL v3 or later and is therefore license-compatible with the GPL-licensed components it depends on:

  • WDSP β€” DSP engine by Warren Pratt (NR0V). GPL v3+. Lyra links to the WDSP shared library (wdsp.dll + FFTW companions) and calls its public C API through C++ wrappers. No source modifications. WDSP powers the RXA chain (noise reduction, AGC, bandpass, demod) and the TXA chain (modulator, ALC, leveler, bandpass, future EQ/compressor).
  • fldigi β€” the RX CW (Morse) decoder is a faithful, no-drift source port of fldigi's CW receive chain (mixer β†’ overlap-add FFT low-pass β†’ adaptive slicer β†’ timing FSM β†’ Morse lookup) by Dave Freese (W1HKJ), with the adaptive speed-tracking algorithm by Lawrence Glaister (VE7IT). GPL v3+. Unlike the studied-but-not-copied references above, this is an actual code port β€” so, like WDSP, it is credited here as a licensed component. The port lives in src/dsp/cw_fldigi/ with per-file provenance headers; see CREDITS.md / NOTICE.md.
  • TCI protocol (Transceiver Control Interface) β€” public specification from Expert Electronics (EESDR). Lyra implements a TCI server compatible with the v1.9 / v2.0 spec so external logging / cluster / digital-modes software (SDRLogger+, any TCI-aware client) can drive Lyra. Optional MIDIβ†’TCI programs (e.g. midi2tci, MIT) are not bundled; see MIDI controllers (sidecar).
  • WDSP FFTW (Fastest Fourier Transform in the West) β€” GPL. Used by WDSP internally; bundled as libfftw3-3.dll / libfftw3f-3.dll. Lyra's first-launch FFTW WISDOM build optimises FFT plans for the host CPU and caches them under %LOCALAPPDATA%\N8SDR\Lyra-cpp\fftw\.

Contributors

  • Rick Langford (N8SDR) β€” project lead, architecture, all code.
  • Brent Crier (N9BC) β€” co-contributor (joined during v0.0.9.1 testing on the Python predecessor; continues into the C++ rebuild).
  • Timmy Davis (KC8TYK) β€” tester (v0.1 tester flight).
  • W5UDX β€” DSP2024P Plate Reverb presets and verification (lands with the Plate Reverb in v0.2.1).
  • Cursor Grok 4.6 (SpaceXAI / Cursor) β€” coding assistant for implementation and debug pairing on the native C++ rebuild.

License

GPL v3 or later. Source repository: github.com/N8SDR1/Lyra-SDR-cpp. Full license text: LICENSE / NOTICE.md in the install folder (and the source tree). See the About Lyra dialog (Help β†’ About Lyra…) for the version

  • build date of the running binary.

Disclaimer β€” use at your own risk

Lyra is provided "as is", with no warranty of any kind, express or implied β€” including, without limitation, any warranty of merchantability, fitness for a particular purpose, or non-infringement. This is the standard GPL v3+ posture; see the LICENSE file for the complete legal terms. The summary below is written plainly for operators, and does not replace or limit that license text.

Lyra controls a radio transmitter and drives external equipment (amplifiers, tuners, antennas, other SDRs, computers, and audio gear). Radio transmission carries real risks β€” RF exposure, high voltage, fire, equipment damage, and interference β€” and is legally regulated.

You, the licensed operator, are solely responsible for:

  • Operating only within your licence privileges and your country's regulations β€” correct bands, frequencies, power limits, emission types, and identification.
  • RF-safety / exposure compliance for your station and everyone near it.
  • Protecting your amplifier, antenna, feedline, and other equipment β€” including correct drive levels, SWR, grounding, and switching sequences.
  • Verifying Lyra's behaviour on your own station with your own instruments before trusting it on the air.

The authors and contributors accept no liability for any damage, interference, injury, loss, regulatory violation, or other consequence arising from the use, misuse, misconfiguration, or malfunction of this software or of any equipment connected to it.

Protection features are aids, not guarantees. The amplifier watts cap, SWR fold/cut, TX safety timeout, TR-sequencing delays, and similar safeguards are designed to reduce risk, but they depend on correct calibration, working hardware, and accurate readings. They can fail or be misconfigured. Never rely on them as your only line of defence β€” calibrate into a dummy load, confirm with an external watt-meter / SWR meter, and keep your amplifier out of line until you have verified every band. When in doubt, run less power.


Support Lyra β€” buy the developer a coffee β˜•

Lyra is free, open-source (GPL v3 or later β€” see the License), and primarily built by Rick Langford (N8SDR) in his spare time, with Brent Crier (N9BC) joining as co-contributor during early testing, Timmy Davis (KC8TYK) joining for the v0.1 tester flight, and Cursor Grok 4.6 (SpaceXAI / Cursor) as coding assistant on the native C++ rebuild. There are no ads, no telemetry, no subscription tier, no "pro" upsells.

If Lyra has saved you from a clunky SDR workflow, helped you work a new state on FT8, or just makes your shack a little more comfortable, a small donation goes a long way β€” it pays for the development hardware and keeps the project moving through the long TX-path work still ahead.

β˜• Donate via PayPal

Any amount is welcome β€” $5 buys a coffee, $20 buys a pint at the hamfest, $100 keeps the development bench rolling for a month. You can also reach the donate page any time from Help β†’ About Lyra.

Built by a fellow ham, for the community. Free to use, free to share. A small donation keeps the code flowing. 73 de N8SDR.


Last updated as features ship. Sections are added when their feature lands β€” see the maintainer note at the top.

⚠️ **GitHub.com Fallback** ⚠️