Assorted ramblings from the developer

Release: 3.0.12

Download here [Link].

What's new / changed in 3.0.12:


  • CW Skimmer bugs resolved, confirmed as working by Kurt, DF4XX.
  • Data recorder supports Range values of 48kHz and 96kHz.
  • Frequency display overflow error fixed.
  • Memory definitions > 2 GHz could crash the console – fixed.
  • Radio Calibration window changed to avoid confusion, now shows 0 PPM instead of None when no calibration is in effect.
  • Rare hang situation during program start found and fixed.

DX Cluster


  • Ribbon Bar, View, Spectrum, DX Cluster.
  •  Markers must be enabled: Ribbon Bar, View, Spectrum, Markers.
  • Comes with a list of suggested nodes.
  • Autostart option.
  • Can be docked anywhere.
  • Runs even when window is closed.
  • Cluster implements a timeout / reconnect logic:
    • If no messages are received for 60 seconds an ‘echo # keepalive’ command is sent, this will reset the reconnect timer if the cluster node is running.
    • If no messages are received for a further 30 seconds:
      1. The connection is closed,
      2. The connection is restarted.

Release: 3.0.11

Download here [Link].

What's new / changed in 3.0.11:


  • CW Skimmer interface updated, minor bugs fixed. [Link]
  • Audio - minor change in WASAPI feed/output logic, buffers padded with zeros.
  • More intelligent buffering of unprocessed data in the FFT threads, improves resillience when main thread is interrupted.
  • Installation kit appearance updated.
  • Very minor enhancements to the processing behind the matrix display. I spent some time working out how I would get 48 receivers running smoothly – I haven’t done this, but at least I now know what I would have to do (multi-threaded Direct2D). I was running 20 receivers at once to test the above audio driver logic and wasn’t 100% happy with the performance.
  • NR3 – slight increase in sensitivity.

CTCSS squelch

  • CTCSS is an addition to the normal squelch.
  • Signal level is measured for each CTCSS frequency using Goertzel’s algorithm (the standard for this sort of thing).
  • Selected frequency level must be 5dB or more that the average measured across CTCSS tone range.
  • Once CTCSS frequency is detected the squelch stays open until the signal is lost. This will change in a future kit, CTCSS must be detected at least every two seconds (an over modulated transmission can affect the CTCSS tone).

Data Recording

As I use this a lot I attacked a few features which I didn’t like very much:

  • Recording Selection
    • Added [_] Reload on open which reloads the current folder when the Select Recording window is opened, rather than displaying the previous values which are stored in an XML file. As I use SSDs for the recordings the reload is fast, but an aged HDD may not be, hence the default which is to restore the previous values from a cache.
  • Playback
    • Added Gain (main toolbar only).
    • Slight change to the logic used to determine the display bandwidth when a file is opened.
    • Change to the layout of the Navigator window.
    • Added Show/Hide time button.
    • Dynamic positioning of the navigation grid based on available room in the window.


  • Fixed error displaying waterfall, spectrum and receiver markers where the radio was tuned close to 0 Hz.
  • Corrected redraw issues if the spectrum high value is automatic (Ribbon Bar, View,  Spectrum Scale, High) and the colour scale (right of display) is adjusted.
  • Tuning Bar
    o    Clicking the mouse in the unused area to the side of the tuning bar (bottom of display) now centres the tuning indicator at the click position, previously there was no action.
    o    Clicking << or >> at either end of the tuning bar now increments the offset by the zoom factor – 1 (was just zoom factor).
  • The new smoothing algorithm (One Euro Filter) now made symmetric.


  • Updated Favourites Organiser:
    • Tree is collapsed by default,
    • Added Expand and Collapse buttons.
  • When a Favourite is added a default title is suggested.
  • Tooltips now show the frequency and mode for the first three receivers.


  • Airspy HF+ update API library. Recommended that the latest firmware is installed, this is 3.0.0 or newer.
  • Airspy R2 small change in decimation processing.
  • Added initial support for WiNRADiO Sigma.
  • Lime:
    • Calibration updated:
      • Rx Calibration and TX Calibration buttons have icons which show whether the RX / TX is calibrated.
      • TX Calibration prompts to disable any PA before the calibration proceeds. Calibration must use the current TX antenna at a relatively high gain.
      • Calibration values are stored in XML files for each band.
      • Calibration always performed at the recommended internal gain of 64dB.
    • Logfile optionally sent to the system debugger (DebugView).

Spectrum Markers

  • Initial implementation: Ribbon Bar, View, Spectrum, Markers.
  • Intergration with DX Clusters will be the main focus of 3.0.12.


  • Only one definition per server.
    • When you select the server a list of available radios is displayed.
    • If the remote server is using this kit you will see ‘ X In use’ if the SDR is in use. Earlier servers will always assume it is available.
    • Your list of server definitions should upgrade automatically.
    • Test with my server: port 50101 .


  • When starting the console / applying a favourite only one receiver opens the audio output device at a time. Although there shouldn’t be a problem with multiple threads simultaneously opening an audio output at the same time it’s just better to do it this way, it’s cleaner and places less stress on the Windows mixer / driver logic.
  • Sanity improved when starting the program:
    • Ensure any floating panes are actually visible and not off the screen.
    • Rewrote some of the code for easier maintenance in the future (replaced fixed tables with dynamic logic).

Release: 3.0.10

Download here [Link].

What's new / changed in 3.0.10:


  • Audio device dropdown now shows a check mark next to the current device and L/R channel selection.
  • SDRplay radios – sanity check that the default frequency is valid – must be in the range 10 kHz to 2 GHz. previously a user started with the default frequency of 10Ghz which is not supported by the SDRplay library.
  • FM Stereo RDS logging was not working properly with multiple active receivers.
  • Fixed a long-standing bug in the tuning bar at the bottom of the main waterfall; this was an error which existed since the code was originally written over four years ago. A determined fool-hardy user could expose the problem and crash the program.
  • Scrolling at 8.333 kHz with rapid middle wheel spinning works properly.
  • Identity title now optionally shown in the program title bar.


  • More taps available for filters.
  • Corrected DSB filter editor.
  • Narrow FM de-emphasis redesigned to avoid audio pumping.
  • NR3 reworked. Threshold changed to Level, working much better.
  • Filters:
    • Changed appearance of the Filter design window.
    • Added more windowing options.
    • (I may add Remez design methodology later.)


  • Sorting favourites by frequency is now reliable.


  • Slight change to installer appearance, kit now has updated images.
  • In previous kits an extra folder was being created in the user folders, this extra folder was not used.


  • Applying a memory now restores the original center frequency and bandwidth if the memory frequency would not otherwise be visible.


  • Pluto visible gain range changed to -60dB to 30dB.
  • Digital filter opened up to 0.95 and the offset tuning range increased to +/- 200kHz.

    Looking at the code I was enabling the Transmit Digital Filter with a normalised bandwidth of 0.2, so at 550kHz that’s 110kHz and with 128 taps not very sharp. This is why we were seeing lower outputs with greater offsets because offset tuning means just that – tuning at an offset from the center frequency.

    SoTo test, I set the digital filter to 0.95 of normalised bandwidth and this did not change the signal(s) seen on the remote receiver (Airspy HF+ Discovery). I was testing on 144.300 and the Discovery was picking up signals 60dB above the noise.


  • Fixed a problem with audio recording of Broadcast FM when in mono, previousy a new file was created every time the mode switched between mono and stereo.
  • When the playback of a file starts the display bandwidth is set to the bandwidth of the recording. A more intelligent algorithm will be developed in 3.0.11.
  • ELAD files which are not valid WAV format are supported.
  • IQ recording now has a Range option, specify the center frequency and the bandwidth.

Ribbon Bar

  • Memory editor now supports 11 digits – frequencies up to 99.9GHz.
  • Adding a dropdown entry to the Quick Access Toolbar (QAT) now does not inhibit correct initialisation of the original dropdown. The dropdown in the QAT does not work though, this is being investigated. An example of a dropdown is Ribbon Bar, Home Bandwidth.
  • Entries added to the ribbon bar’s QAT (Quick Access Toolbar) are removed when starting if they contain dropdown entries. This is related to random crashes in the console.


  • When a new receiver is added the default frequency is no longer the center of the display, rather an unused frequency in the visible display.
  • Adding a new receiver now clones the currently active receiver. It was working this way when 3.0 was released but was broken in a previous minor update.



  • Implemented the One Euro Filter as default in the Spectrum Smoothing. This is much better than the other options, it preserves the peaks while reducing noise.
  • Fixed a slightly obscure bug only seen while scrolling the receiver frequency.


  • Added Serial Port PTT.


Release: 3.0.9

Download here [Link].

Note: The main reason for this release is the fixes to transmit with the Pluto SDR.

What's new / changed in 3.0.9:


  • The 8.333 kHz tuning rate wasn’t working properly as it’s really 8.333 recurring.
  • The Analyser now correctly processes the Invert Spectrum option (swap IQ from the recording file).
  • The Ribbon Bar, Home. Radio, Bandwidth dropdown now shows the currently selected bandwidth when using radios where the actual bandwidth may differ slightly from the displayed bandwidth (Perseus at 95, 96 and 192kHz).
  • The bit smoothing option in RDS processing was not being set correctly.
  • USB Relay option now also part of the general Program Options.
  • Broadcast FM audio recordings now always created in stereo (two channel) mode – previously the recording was restarted every time the audio switched between mono and stereo.
  • RDS logfile now has a delay option in the Database selection pane, this is designed to be used in situations where there is considerable latency, for example when using a remote server.


  • Transmit data is now controlled by a high-resolution timer with an accuracy < 1 millisecond.
  • Flow control has been added to compensate for the difference between the Pluto clock and the input device (microphone, VAC, …).
  • Added offset tuning, this ensures that the spur at the transmit LO is offset from the actual transmit frequency.

Release: 3.0.8

Download here [Link].

What's new / changed in 3.0.8:

Broadcast FM

New features and changes for 88 - 108MHz FM broadcast reception and the RDS decoder.

RDS decoding has been improved by making PI code detection mor sensitive.

US Callsign logic now uses data from NRSC for callsign and location.

Spectrum window now a docking pane. Display the spectrum window by selecting Ribbon Bar, Receive, Broadcast FM. 

Logging of station from the RDS decoding has been added, this is the RDS Logfile option. To display the logfile click the Log button in the BFM Spectrum.

The logfile has all the options you need:

  • Enable / Disaply updates
  • The number of recent entries displayed
  • Detail level (brief, full)
  • Font size for ageing eyes
  • Delete entries
  • Edit an entry
  • Export as text
  • Options

Click ••• to display the options.

Airspy Options

The Airspy options have moved from the ribbon bar to the Receive DSP panel.

USB Relay

The USB relay terminology has been changed to avoid confusion.

  • ON = Turn ON a relay channel (Activate).
  • OFF = Turn OFF a relay channel (Deactivate).

Data (IQ) Recording

Playback now correctly detects ELAD recerdings and displays the format as ELAD. later the contents of the elad chunk in the WAV file will be supported.

Scheduled Recordings

  • Now can select single file in the definition, this uses WAV RF64.
  • Fixed display issues.
  • Tidied up the code.

Geostationary Beacon

  • Increased bandwidth for LNBs with very serious drift!
  • Fixed crash when bandwidth changed past the minimum / maximum supported.

Frequency Database

AOKI URL updated and new format supported.

Font size selection for ageing eyes.

Defauly field order changed, will be user-configurable in a future release.


The sample rates 192kHz, 96kHz and 95khz are now calibrated.


Tidying up and extending the Select Satellite option. Instead of just selecting a satellite, pressing Select in the Satellite ribbon bar now display the Select Satellite window which provides an overview of the entries in the Satellite List as well as selection of new satellites.

Footprint configuration is now consolidated into a property page.

Narrow FM

Uses the original version 3 de-emphasis and has better peak volume control.


Problems with the transmit signal bursting reduced by redesigned inefficient code, see Pluto support page for more information.

Release: 3.0.7

Download here [Link].

What's new / changed in 3.0.7:

Data Recording

The WAV file format upgraded to WAV RF64 is only used if the file size if set to a value greater than 2GB or unlimited. File szes of 2GB or lower use the original WAV format and will be compatible (should be compatible) with other 3rd-praty programs.

Es'Hail 2 Beacon

Added Beacon synchronisation: . This is an option to using a TCXO or GPSDO and is used to compensate for LNBs which are not stable.

LimeSDR Calibration

All Lime-relation calibration options are now user-configurable. The option of changing the offset frequency has been added. Some brief tests on 2m show that offset tuning may not be needed.

TX calibration should ideally be run when the drive level is changed, this affects the Lime internals, so maybe the option of running TX Calibration automatically when the drive level is changed should be added?

Note: you cannot properly monitor your own signal using the same device that is transmitting.


Improved performance when scrolling the receivers – there was unnecessary processing when scrolling in a receiver window.

Serial Port (CAT Control)

WSJT was not working correctly, the serial port (CAT control) has been updated software and tested with WSJT.

Release: 3.0.6

Download here [Link].

Note: 3.0.6 fixes / enhances the support for Lime and PlutoSDR.

What's new / changed in 3.0.6:

Data Recording

The WAV file format upgraded to WAV RF64 which supports an unlimited filesize, previously the maximum filesize was 2GB.

  • No more XML files being created.
  • Analyser updated and tested, seems to be OK with these big single-file recordings.
  • Tested with 3rd-party recordings: Perseus, ELAD S2.
  • Redesigned the Playback Select window (below). If you have a lot of recordings this is should be better to use.

When you make a new recording the individual filesize is now optional, if not enabled then a single file is created.


  • Fixed a bug which had been in the code since day 1 (about 4 years ago). As this was thread-related the crash happened rarely, depended on CPU speed and other factors. Restarting a radio/recording could cause a crash due to bad thread synchronisation:
    • Changing radio bandwidth,
    • Starting recording after the radio was running,
    • Starting radio after playing the radio.
  • Default stack size now 2MB (was 1MB)
  • Added a Mute option – when enabled mutes RX audio during TX (see below).


  • Sample rates have changed, lowest is now 750kHz (TX), designed for the ‘less powerful’ computer.
  • The settings shown in the radio panel now saved on a per-radio (serial #) basis.
  • Antennas now set correctly for the Lime USB (very stupid error).
  • Simplex / Duplex works for Mini and USB in all combinations below.
  • Power out now better *and* mirror image rejection better after TX Calib. pressed.
  • If TX Calibration fails (which it can) then a popup is shown
  • Now using offset tuning in TX, offset is 250kHz so the signal is sent 250kHz below the center and the TX LO is shifted up 250kHz.
  • GPIO band detection implemented


  • Improved the Pluto support, options are now in the radio pane of the Receive DSP.
  • Timeouts have been disabled in the Pluto USB I/O library, as a result I’m getting much better throughput at 5MHz and can use short 50ms buffers, something I couldn’t do before. It seems that the timeout values in the Pluto support library were causing problems on receive at least.
  • On transmit the buffers used are now a power of 2 * 1k, for example 1 x 1024, 2 x 1024, 4 x 1024 etc. Some PC USB hardware drivers prefer buffers set like this. With any luck this buffer size logic and disabling timeouts will help with the transmit problems. I can send a steady transmission with the smallest buffer size.
  • New: RIT / XIT.
  • New: Half-/Full-duplex option.
  • Added oscillator calibration (correction):

USB Relay support

  • The relays are initialised when the program starts, updated as you switched between RX and TX.
  • If you have a unit not supported here let me know.

Using Es’Hail 2

  1. Define a Down converter, select it when starting the radio.
  2. Select radio, Definitions, [X] Converter selection. Add a Down-converter definition for your LNB, for example 9750 MHz.
  3. Define a TX offset, enable it.
  4. Transmit options, Frequency Offset, enter 8089.5 MHz (converts display of 2400.050 to 10489.550MHz). So with the TX tuned to 2410 MHz the display is shown as 2410 + 8089.5 = 10499.5 MHz
  5. Enable Sync RX for Frequency, as you tune either RX or TX both stay in sync.
  6. Use RIT / XIT (Lime) as needed, either to compensate for LNB drift or the other station drifting.
  • If working correctly RX & TX will stay in sync.
  • Known bug: With Sync RX enabled, if you scroll the RX frequency the TX frequency change is not applied until you next start TX, so scrolling RX while transmitting does not change the TX frequency. I can’t remember whether this is by design or a bug.

Look at the screenshot:

Here you see the down converter setting for a LNB:

Here you see the TX offset:

Here you see Sync RX:

Release: 3.0.5

Download here [Link].

Note: 3.0.5 fixes / enhances the support for PlutoSDR.

What's new / changed in 3.0.5:


  • Transmit support enabled for frequencies above 4GHz.
  • Receive support error fixed, now works above 4.2GHz.
  • Transmit NFM now has configurable deviation and maximum frequency:
  • Added Synchronous AM demodulation DC correction.
  • If a radio was Stopped / Started with Tone enabled then subsequent transmission was unreliable – either no output or very low output. This problem resolved by resetting the Tone and Tune options in the transmit window when stopping a radio.
  • Cosmetic: program size now optionally shown in status bar (bottom right), this option is enabled in Program Options (bottom right):
  • Cosmetic: receive DSP Mode selection window […] improved:
  • Cosmetic: Select Identity window optionally shown when program starts now has the title correctly updated:


  • More sanity checks when connecting to a device.
  • Pluto can now be accessed using the IP address, the default is ip: URI (format), the Pluto IP address can be changed as required.
  • Recoded the Pluto transmit thread – now more reliable.
  • Transmit data is correctly buffered so there are fewer glitches when sending data.
  • Added bandwidths which use the AD9363's decimation/interpolation. These bandwidths are 500 kHz ... 1.5 MHz.
  • Added extra pane to Receive DSP (below), temperature is recorded for RX and TX:

    You can export the data to CSV file, in Excel you can then create a chart like this:

Frequency Database

  • Fixed frequency database Language field, an incorrect 0 was shown at the start of the language name.
  • Added support for new AOKI frequency database layout.


  • Current satellite name is shown in main window title.
  • Tracks are now optionally displayed for entries in the Satellites List (top of ribbon bar).

Release: 3.0.4

Download here [Link].

What's new / changed in 3.0.4:


  • ADALM-PLUTO transmit and receive support added.

  • Airspy HF+ support library upgraded to latest release, CPU usage now much lower.

  • Airspy HF+ supports pre-production units properly, also units with old / original firmware.

  • ANAN code given a lot of attention, working much better.

  • bladeRF2 now checks that the frequency is within the supported range.

  • Lime transmit support added.



  • Added Pseudo Stereo (ribbon bar, Receive, Mode..., Pseudo Stereo).

  • Downconverter supports frequencies up to 999.9 GHz.

  • Frequency database supports a Custom CSV layout.

  • Frequency display supports frequencies up to 999.9 GHz.

  • If there are no receivers a warning is displayed.

  • Signal History - added Slower and Very slow.


  • Audio buffering logic updated (the way I maintain the buffer between demodulation and the playback / VAC device). This is simpler, cleaner and gives me a good base for the future. See the Playback Buffering page for options.

  • Audio recording – a check is made that the folder exists before the recording is started.

  • Fixed spectrum display in Auto mode when input signal is very low / zero.

  • Fixed crash adjusting the Span (bottom of display).

  • Fixed crash caused by a change in output device options such as enabling spatial sound.

  • Fixed obscure bug in the Select Radio user interface.

  • Fixed SAM demodulation, PLL was not working fast enough.

  • More visibility/sanity checks when restoring a window position (example: Select Radio).

  • Obscure fatal bug saving/recalling complex Favourite definitions fixed.

  • Product name and date now always shown at the top of the main display with all display styles (long-standing MFC bug fixed).

  • More logic in coding where the program priority is raised when the system starts.

  • If the signal is muted due to input overload a warning icon is now shown in the status bar, previously just the Auto Mute text was shown. (This caught me out a couple of times).

Recording Scheduler

  • Interface redesigned, simplified with no loss of functionality.



  • Now displays correct TX mode in the main window's ribbon bar tooltips.

  • Now uses fixed point fonts for name and times.

  • Fixed fatal error selecting a world map which cannot be opened.

  • External Radio now supports both Rig 1 and Rig 2.

  • TLE data now has better sanity checking.


  • Reduced dangling connections on the server.

Release: 3.0.3
  • Added support for the bladeRF V2
  • Added Restart Manager support:
    • Enabled by default in the Start page of the Program Options
    • Not supported in Windows 7
    • If the computer is restarted and SDR Console is running, then SDR Console will be started with the same identity / radio
  • Added Viridis colour scheme
  • Added Digital Decoder:
    • Enabled via Ribbon Bar, View, More Options
    • (Old registry setting no longer used)
    • Still needs documentation
    • Works, needs improving
  • Added extra RSPduo startup logic (antenna-related).
  • Added Copy and Move options to the Playback Selection window, use these to copy / move entire recordings.
  • Optimised internal logic for analysing files used in data (IQ) recordings.

Recent Posts

  • Google Turbo Posted 2 days ago
    Turbo, An Improved Rainbow Colormap for Visualization On Tuesday, August 20, 2019 Google posted an interesting colour scheme which they named 'Turbo'. Read more about this in the blog entry (link is above). Below is the colour map in action on the 25m shortwave broadcast band. As of 3.0.13 this is a standard colourmap[ in SDR Console. Also of interest is the use of a SNR (Signam to Noise) S Meter option.
  • S-Meters Posted 2 days ago
    After much pestering by users, I finally added an Analog S-meter to SDR Console. These will be available in 3.0.13, coming to a desktop near you soon. Background A few weeks previously a reasonable logic was implemented for measuring the noise floor. Purists will not be happy, but they rarely are, but it works for me. Take the output from the SDR radio, ignore 15% of the bandwidth at the high and low end of the output to avoid the ant-alias filtering, and we're left with a healthy 70% of the signal. Now sort the FFT bins by value, take the mean of the lowest 10% and that's the noise floor. Digital Starting with the standard digital metere: Analog Here are a few screenshots of the Analog S Meter. First a tradition meter in S units. Red = peak signal Yellow = current signal Grey = noise floor   Here's a dBm meter, same colours as above.   And here.s a Signal to Noise (SNR) meter.
  • Pluto on Es'Hail 2 Posted 2 weeks ago
    Here's a screenshot of my Pluto SDR on Es'Hail 2, this screenshot shows the suggested settings for pluto(bottom left-hand side). Note the RX Gain is set to Slow Attack (Manual value is ignored) and the Visual is set to -40dB.
  • Windows Upgrade Posted 2 weeks ago
    Yesterday I powered on a small ATOM 330 server which was last started five years ago. Well, up came Windows 7 Professional and of course the normal zillions of updates appeared. Anyway, I wondered whether the now officially expired free update from Windows 7 to Windows 10 was still available. Google brought me to this link on . In the suggestion is to  go to the Download Windows 10 webpage whioch I did. then I clicked the Download too now button. Thereafter I just followed my nose and two hours later my little server was proudly running a licemced version of Windows 10. So the free upgrade from Windows 7 to Windows 10 is till available! Toodles
  • Release: 3.0.12 Posted 3 weeks ago
    Download here [Link]. What's new / changed in 3.0.12: General CW Skimmer bugs resolved, confirmed as working by Kurt, DF4XX. Data recorder supports Range values of 48kHz and 96kHz. Frequency display overflow error fixed. Memory definitions > 2 GHz could crash the console – fixed. Radio Calibration window changed to avoid confusion, now shows 0 PPM instead of None when no calibration is in effect. Rare hang situation during program start found and fixed. DX Cluster See Ribbon Bar, View, Spectrum, DX Cluster.  Markers must be enabled: Ribbon Bar, View, Spectrum, Markers. Comes with a list of suggested nodes. Autostart option. Can be docked anywhere. Runs even when window is closed. Cluster implements a timeout / reconnect logic: If no messages are received for 60 seconds an ‘echo # keepalive’ command is sent, this will reset the reconnect timer if the cluster node is running. If no messages are received for a further 30 seconds: The connection is closed, The connection is restarted.
Read More »