Releases: w5jwp/SDR9700
Release list
SDR9700 v26.9.1
SDR9700 26.9.1 is the first September 2026 stable release, focused on reliable dual-VFO IC-9700 operation, radio-authoritative state, and easier troubleshooting.
Highlights
- Introduces the redesigned MAIN/SUB interface with per-VFO state, band recall, repeater frequency presentation, dial lock, noise blanker and noise reduction levels, and refined frequency and level controls.
- Hardens IC-9700 LAN connection, shutdown, CI-V scheduling, reply correlation, duplicate suppression, scope synchronization, rapid tuning, and MAIN/SUB exchange recovery.
- Completes radio-backed memory management with profile-scoped caching, retry and verification handling, atomic synchronization, and CSV workflows.
- Adds an opt-in local automation bridge and comprehensive non-transmitting IC-9700 stress tools, including static and runtime coverage inventories for application controls and MAIN/SUB context.
- Improves the Application Log with independent window, console, and file behavior; clearer CI-V and UDP diagnostics; normalized structured messages; and refined filtering and layout.
- Adds radio-backed status and operator refinements including the title-bar mute control, active automation status, improved panadapter presentation, RC-28 handling, and broad accessibility and dialog cleanup.
- Corrects macOS packaging so the lock and speaker SVG icons render in the installed application.
Reliability and diagnostics
- Strengthens S-meter polling and MAIN/SUB attribution, including clearer timeout metrics and regression coverage.
- Improves cache invalidation and radio-authoritative state handling across reconnects and receiver changes.
- Expands defensive protocol parsing, lifecycle safeguards, queue accounting, and diagnostic consistency following adversarial review.
Verification
- Clean Release build and all 37 automated tests passed locally on Apple Silicon macOS.
- The deployed application bundle passed its self-containment audit and contains the required Qt SVG framework and icon engine.
- clang-format 23.1.0 and whitespace validation completed successfully for the hotfix.
- The non-transmitting automation stress suite was exercised against an IC-9700 over LAN on Apple Silicon macOS.
Full changelog: v26.8.3...v26.9.1
SDR9700 v26.8.3
SDR9700 26.8.3 improves day-to-day IC-9700 control and operator feedback.
Highlights
- Adds a radio-backed speech compressor level control, including authoritative CI-V readback and correct OFF-state handling at zero.
- Expands Icom RC-28 button step mappings for faster tuning-step changes.
- Refines the VFO frequency display so 144 MHz, 432 MHz, and 1294 MHz values remain readable and consistently sized.
- Improves control-lock behavior and Settings navigation.
- Cleans up application log formatting for easier diagnostics.
Verification
- Clean Release build on Apple Silicon macOS.
- All 31 automated tests passed.
- Pedantic cppcheck completed with no unsuppressed defects.
Full changelog: v26.8.2...v26.8.3
SDR9700 v26.8.2
Highlights
- Refined the main VFO panel with a more compact frequency display, balanced spacing, and a cleaner layout that removes the memory-channel name from above the frequency.
- Reworked Add/Edit Memory into a blocking, scrollable dialog over Memory Manager, using the same title bar, border, content spacing, and footer conventions as the rest of SDR9700.
- Improved the main-window memory browser so activating a memory keeps that channel highlighted until its frequency, mode, duplex, offset, or tone settings change.
Improvements
- Kept Memory Manager focused on managing records: selecting or double-clicking its rows no longer tunes the radio.
- Preserved the main memory browser's scroll position when activating a channel farther down the list.
- Made the memory editor adapt to the active screen's available size for smaller laptop displays.
- Prevented duplicate saves and accidental dialog closure while a memory write is still pending, while restoring the controls if the radio write fails.
- Updated the File menu to show Disconnect from Radio while connected and Connect to Radio while disconnected.
- Standardized prerelease and stable version naming in the release documentation.
Fixes
- Fixed mode changes after memory activation so the radio follows manual mode selections, including switching from a USB memory back to FM without changing to a band-default frequency.
- Fixed transmit-frequency validation for simplex and repeater offsets across the 2m, 70cm, and 23cm bands.
- Blocked PTT while frequency, duplex, or offset changes are awaiting radio confirmation, preventing stale state from bypassing transmit-frequency validation.
- Prevented rejected PTT requests from starting DTMF transmission or a memory-frequency transition.
- Suppressed invalid SWR readings when the radio reports no RF output power.
- Fixed stale memory highlighting after manual frequency or radio-option changes.
- Fixed active-memory selection rebuilds that could jump the memory browser back to the top.
- Added regression coverage for PTT confirmation, transmit-frequency validation, zero-power SWR handling, memory activation, scroll retention, modal editor layout, compact-screen sizing, and connection-menu state and behavior.
Full changelog: v26.8.1...v26.8.2
SDR9700 v26.8.1
Highlights
- Added the receive-only Data Decoder for AX.25 Bell 202 (1200 baud) packets, including decode statistics, raw packet details, callsign links, and a cross-platform decoder interface prepared for future protocols.
- Added a non-blocking Application Log window with category filtering, optional CI-V traffic, pause/resume, clear, and text export for field diagnostics.
- Added a unified radio-session watchdog and a title-bar communications indicator to detect stalled CI-V, control, and audio activity and recover the connection.
- Reworked authenticated radio shutdown so receive audio stops immediately and the application completes the radio departure and token-release sequence before closing its sockets.
Improvements
- Corrected S-meter rendering to use the IC-9700 raw scale directly, with values of 241 and above displayed at full scale.
- Simplified the spectrum scope, removed the misleading level legend, expanded the display area, and kept the spectrum and waterfall evenly divided.
- Improved macOS microphone-permission initialization and refined native menu and shutdown behavior.
- Improved memory management with combined band/channel labels, clearer editor channel choices, consistent tables, alternating rows, and balanced column sizing.
- Standardized dialog margins, footers, button ordering, table headers, and styling across Linux and macOS.
- Improved live audio-device switching and Linux RC-28 installation support.
- Added the
vprefix to the version shown in the application title bar and native window title.
Fixes
- Fixed delayed radio reconnection after closing and reopening SDR9700.
- Fixed signed receiver sentinel handling on ARM Linux.
- Fixed several decoder table rendering, spacing, link, and packet-counting issues.
- Cleaned up structured application logging for more readable diagnostic output.
- Removed the low-contrast waiting message drawn across the empty spectrum grid before radio scope data arrives.
Full changelog: v26.07.30...v26.8.1
SDR9700 v26.07.30
SDR9700 v26.07.30 is a substantial stability, usability, and cross-platform release. It introduces native Apple Silicon macOS support, strengthens radio and audio behavior, repairs memory-management workflows, and significantly expands automated testing.
Highlights
- Added native Apple Silicon macOS support, including an automated GitHub release pipeline that builds, tests, audits, signs, notarizes, staples, and publishes a self-contained DMG.
- Fixed several shutdown and worker-thread lifecycle problems that could cause crashes while closing the application.
- Fixed PTT state tracking so the button and transmit timer accurately follow the radio's actual transmit state.
- Corrected AGC, preamp, notch, RF gain, and related radio-control state and feedback behavior.
- Fixed memory-channel recall of tone, CTCSS, DCS, and DTCS settings.
- Reduced S-meter response latency, particularly after releasing PTT.
- Restored connection retry behavior after failed radio connections.
Additional fixes in this rebuild
- Fixed the radio chooser on fresh installations so new profiles can be entered and saved, and standardized its frameless dialogs and button ordering.
- Restored fixed, frameless behavior across utility windows and added a consistent Close footer to the Meters window.
- Improved VFO frequency typography, centering, and memory-name placement while removing the inactive memory dash.
- Forced a deterministic MAIN VFO startup state so stale memory labels are not inferred from matching frequencies alone.
- Fixed split-memory PTT transitions that could clear the active memory name—especially on the second transmission—by avoiding unnecessary VFO band preparation and guarding radio frequency transitions from the moment PTT is requested.
- Fixed recurring macOS AppKit crashes caused by automatic native window-state persistence by disabling restoration for SDR9700's app-managed fixed windows.
- Fixed main-window shutdown leaving an invisible SDR9700 process running, which could intercept subsequent launches and delay the new window.
- Refined Meters footer spacing to remove duplicated bottom padding.
- Applied audio input, output, and codec changes immediately through a controlled radio-session restart, without requiring an application restart.
- Corrected reconnect status messages when the occupying station name is unavailable and standardized their punctuation.
Memory manager
- Repaired adding, editing, deleting, loading, and reordering memory channels.
- Reworked CSV import to synchronize with the radio first and clear only occupied memories.
- Improved CSV import cancellation, failure handling, rollback behavior, and progress reporting.
- Fixed stale and conflicting memory synchronization status messages.
- Added scheduled-memory-sync feedback to the main window.
- Split memory editing, CSV handling, synchronization, selection, display, and queued writes into focused controllers for safer maintenance.
Interface improvements
- Added a clearer tree-style Settings navigation panel with improved spacing, selection, hover behavior, connector lines, and meaningful tooltips.
- Restored the intended smaller status text on dual-line main-window controls.
- Standardized fixed-size window behavior and native dialog button ordering across macOS and Linux.
- Reviewed and shortened status notifications for clearer spelling, capitalization, and consistent punctuation.
- Improved spectrum and frequency-scale text rendering on macOS.
- Removed peak-hold markers from the S-meter and transmit-power meter.
Reliability and maintainability
- Decomposed the largest CI-V command parsers into focused protocol handlers.
- Split the former monolithic memory controller into smaller single-purpose components.
- Hardened UDP retransmission, lock ordering, malformed packet handling, audio shutdown, and thread synchronization.
- Fixed stereo Opus format negotiation and strengthened capability, cache, settings, and encrypted-profile handling.
- Expanded unit, integration, protocol, GUI smoke, and offline test coverage across both supported desktop platforms.
- Added optional AddressSanitizer and UndefinedBehaviorSanitizer builds and consolidated compiler-warning configuration.
Packaging
- Added packaging resources for macOS and Linux, including Linux udev rules for the Icom RC-28.
- The macOS bundle is audited to reject Homebrew and other build-machine library references before signing.
- Release DMGs are Developer ID signed, notarized by Apple, stapled, and validated by Gatekeeper before publication.
Full changelog: v26.07.01...v26.07.30
SDR9700 v26.07.29
SDR9700 v26.07.29 is a substantial stability, usability, and cross-platform release. It introduces native Apple Silicon macOS support, strengthens radio and audio behavior, repairs memory-management workflows, and significantly expands automated testing.
Highlights
- Added native Apple Silicon macOS support, including an automated GitHub release pipeline that builds, tests, audits, signs, notarizes, staples, and publishes a self-contained DMG.
- Fixed several shutdown and worker-thread lifecycle problems that could cause crashes while closing the application.
- Fixed PTT state tracking so the button and transmit timer accurately follow the radio's actual transmit state.
- Corrected AGC, preamp, notch, RF gain, and related radio-control state and feedback behavior.
- Fixed memory-channel recall of tone, CTCSS, DCS, and DTCS settings.
- Reduced S-meter response latency, particularly after releasing PTT.
- Restored connection retry behavior after failed radio connections.
Memory manager
- Repaired adding, editing, deleting, loading, and reordering memory channels.
- Reworked CSV import to synchronize with the radio first and clear only occupied memories.
- Improved CSV import cancellation, failure handling, rollback behavior, and progress reporting.
- Fixed stale and conflicting memory synchronization status messages.
- Added scheduled-memory-sync feedback to the main window.
- Split memory editing, CSV handling, synchronization, selection, display, and queued writes into focused controllers for safer maintenance.
Interface improvements
- Added a clearer tree-style Settings navigation panel with improved spacing, selection, hover behavior, connector lines, and meaningful tooltips.
- Restored the intended smaller status text on dual-line main-window controls.
- Standardized fixed-size window behavior and native dialog button ordering across macOS and Linux.
- Reviewed and shortened status notifications for clearer spelling, capitalization, and consistent punctuation.
- Improved spectrum and frequency-scale text rendering on macOS.
- Removed peak-hold markers from the S-meter and transmit-power meter.
Reliability and maintainability
- Decomposed the largest CI-V command parsers into focused protocol handlers.
- Split the former monolithic memory controller into smaller single-purpose components.
- Hardened UDP retransmission, lock ordering, malformed packet handling, audio shutdown, and thread synchronization.
- Fixed stereo Opus format negotiation and strengthened capability, cache, settings, and encrypted-profile handling.
- Expanded unit, integration, protocol, GUI smoke, and offline test coverage across both supported desktop platforms.
- Added optional AddressSanitizer and UndefinedBehaviorSanitizer builds and consolidated compiler-warning configuration.
Packaging
- Added packaging resources for macOS and Linux, including Linux udev rules for the Icom RC-28.
- The macOS bundle is audited to reject Homebrew and other build-machine library references before signing.
- Release DMGs are Developer ID signed, notarized by Apple, stapled, and validated by Gatekeeper before publication.
Full changelog: v26.07.01...v26.07.29
SDR9700 v26.07.01
SDR9700 v26.07.01
This release substantially expands SDR9700 radio control, memory management, Spectrum Scope behavior, and connection reliability.
Highlights
- Radio-Backed Memories: The Memory Manager now synchronizes directly with the IC-9700 memory banks. It supports editing, copying, reordering, immediate and periodic synchronization, progress reporting, and CSV import/export.
- Spectrum Scope and Waterfall: The former Band Scope has been renamed Spectrum Scope and split into focused controllers and canvases. Click tuning, panning, scale handling, and rendering performance have been improved.
- Connection Lifecycle: Connection, stream negotiation, radio-state synchronization, memory synchronization, readiness, retry, and disconnect states are now tracked explicitly. Operator messages report the active stage and Radio Ready is not shown until initial synchronization completes.
- Audio Reliability: Transmit pacing, queue bounds, converter startup, packet timestamps, stereo downmixing, G.711 conversion, partial output writes, and silence handling have been tightened. The changes include comments explaining the latency and rollback considerations.
- Main Window Architecture: Radio routing, commands, memories, controls, meters, status, Spectrum Scope, waterfall, and RC-28 behavior are separated into dedicated controllers to reduce hot-path work and improve maintainability.
- Configuration and Utility Windows: Configuration backup, restore, and import workflows were consolidated. Utility windows now use consistent activation, focus, placement, and Escape-key behavior.
- Radio Controls and Metering: Adds and refines transmit metering, XFC, offset and tone controls, DTMF/PTT behavior, spectrum controls, and status reporting.
Reliability and Performance
- Validates UDP packet sources and handles bind, stream, token-renewal, and shutdown failures more defensively.
- Prevents stale queued backend work from accessing a completed radio session.
- Bounds audio and command queues so overload cannot grow memory use indefinitely.
- Coalesces high-frequency settings writes and removes avoidable scope/waterfall image copies.
- Makes memory import transactional: existing memories are restored if clearing or uploading fails.
- Adds stricter CSV validation and radio readback verification.
- Adds automated tests for audio conversion and memory CSV handling.
Upgrade Note
Memory channels are now owned by and synchronized with the IC-9700 instead of being stored in a separate SDR9700 memory JSON file. Use Memory Manager CSV export before making broad changes when an offline backup is needed.
Verification
- Clean Release build completed successfully.
- clang-format and pedantic cppcheck checks completed successfully.
- All automated tests passed.
SDR9700 v26.06.01
SDR9700 v2026.06.01 — Initial Release
This is the first public release of SDR9700, a Linux-native Qt GUI for controlling the Icom IC-9700 amateur radio transceiver over its LAN interface.
Overview
SDR9700 was built from the ground up as a clean, IC-9700-focused Linux application. It provides a native operator control surface using the radio's UDP LAN ports, with no dependency on Windows-only companion software. The project draws on lessons from the AetherSDR and wfview communities and targets operators who want a purpose-built Linux experience for the IC-9700.
Features in This Release
-
Radio Connectivity: Connects to the IC-9700 over its LAN interface via the radio's UDP control ports. Includes connection status reporting, network quality indicators, and user-facing error messages for common connection failures. Radio profiles with username and password are saved locally with credentials encrypted at rest. An auto-connect option is available in preferences.
-
VFO and Mode Control: Full VFO frequency and mode display and control for the active operating flow. A configurable VFO step selector allows quick tuning step adjustments from the main window.
-
Radio Controls: Exposes the IC-9700's RF gain, squelch, RF power, mic gain, noise reduction, noise blanker, preamp, attenuator, offset, tone mode, CTCSS tone, and DCS/DTCS code. Local AF gain and mute are handled independently from the radio.
-
PTT and Transmit Audio: PTT control with LAN transmit audio support. LAN MOD level is adjustable, and transmit audio ramping is implemented to reduce key-click artifacts. A DTMF send panel is included with PTT gating.
-
Spectrum and Waterfall: Spectrum and waterfall display driven from IC-9700 scope data. Zoom controls and mouse interaction allow frequency movement directly from the panadapter.
-
Metering and Status: S-meter display with a network and status bar showing connection health, CPU usage, and memory usage.
-
Memory Management: Local SDR9700 memory channels are stored independently from the radio's own memories. Supports add, edit, copy, and remove operations, along with import/export, band filtering, ordering, and one-click selection-to-radio.
-
Main Window Lock: A lock mode prevents accidental changes to radio controls during an active session while keeping PTT, mute, and AF gain available.
-
Icom RC-28 Support: The Icom RC-28 rotary controller is supported for step tuning and button mapping, including LED feedback. Requires libhidapi at build time.