The filters in SDR software investigated: Linrad, Winrad WRplus, perseus.exe, WinradioG31DDC and others.
(July 6 2011)
*** HDSDR ***
*** Linrad with erfc windows ***
*** Linrad with sin2 windows ***
*** Perseus.exe ***
*** SDRMAX ***
*** SDR-RADIO ***
*** Studio1 ***
*** Winrad ***
*** Winradio G31DDC ***
*** WRplus ***

Test method.

The Perseus HF receiver has its own software perseus.exe. It can save the full bandwidth on the hard disk and play it again as if the recording were the antenna signal.

Linrad and Winrad can read the .wav files that perseus.exe produces. This way it is possible to compare the different SDR software with identical input signals.

Linrad has a feature (F11 when playing a recorded file) that replaces the data from the hard disk by a swept signal about 0.2 dB below saturation. No noise is added so the noise floor is far below the noise that would be present if the Perseus hardware were connected. The file sim1.wav (213375062 bytes) can be downloaded here as a zipped file: sim1.zip (170614292 bytes)

Besides the near saturating swept signal there is also an on-off keyed carrier at about 17.611 MHz in the recording. The level of this carrier is about -117 dBm on the Perseus S-meter while the strong signal is at +3.3 dBm on the S-meter. The actual amplitude ratio (=voltage ratio) between the two signals is 1000000 so the S-meter readings are in full agreement with expectations.

The noise floor in the simulated region is at -123.5 dBm in 10 kHz bandwidth or -163.5 dBm/Hz. That is about -166 dBc/Hz and well below the intrinsic noise of the perseus hardware. The noise floor in the beginning and at the end of the recording is about 13 dB higher or -153 dBc/Hz. This means that the keyed signal is equal to the noise floor of the hardware in a bandwidth of 2 kHz.

PowerSDR needs a different sampling rate. Test results for PowerSDR are available here.

The maximum speed for Rocky is 96 kHz. A test for Rocky is available here.

Perseus.exe

When the test file is played with perseus.exe the screen may look like figure 1. It depends of course how the parameters in perseus.exe are set.



Fig 1. perseus.exe running sim1.wav.

The loudspeaker output from perseus.exe sounds like this: sim1-pers.mp3 (497784 bytes.) The on-off keyed signal is at a level that is similar to the noise floor level in the beginning and end of the file where the data comes from an old Perseus recording.

The filters are extremely good without any traces of spurious responses. The details of the loudspeaker output are shown in figures 2 and 3 which are waterfall graphs produced by Linrad with sim1-pers.mp3 as the input (before conversion to mp3).



Fig 2.The loudspeaker output from perseus.exe when running the test recording sim1.wav. This waterfall graph is produced by Linrad with the loudspeaker output from perseus.exe as input.



Fig 3.The loudspeaker output from perseus.exe This is the same as figure 2 at a 10 times higher waterfall speed. The time when the signal sweeps across the passband is well visible.

The loudspeaker output of perseus.exe on an oscilloscope looks like figures 4 and 5 at different X-axis magnification.



Figs 4 and 5The loudspeaker output from perseus.exe in the time domain when the signal sweeps across the filter.

The test was performed with perseus.exe v4.0a downloaded as Perseusv40a.zip on January 22 2011.

Note that the noise floor is about 15 dB below the noise floor that would be present when a Perseus hardware unit is connected. Any spur or false signal discovered when using v4.0a with the Perseus hardware will be due to hardware. (The signal source or the Perseus hardware.) The software has perfect filters.

The full AGC recovery from a signal at the maximum possible level is about 0.25 seconds.

The previous version of perseus.exe also has good filters. The old test is available here: Filter performance in perseus.exe v3.0beta1

Winrad

When the test file is played with Winrad, the screen may look like figure 6. It depends of course how the parameters in Winrad are set.



Fig 6. Winrad running sim1.wav.

The loudspeaker output from winrad sounds like this: sim1-winrad.mp3 (489888 bytes.) The on-off keyed signal is at a level that is similar to the noise floor level in the beginning and end of the file where the data comes from an old Perseus recording.

There are many spurs. The strongest ones reach S9+20 dB on the Winrad S-meter. Assuming 6 dB per S-unit that is 62 dB above the on-off keyed signal. That is only 58 dB stop band rejection. False signals due to inadequate filters in Winrad are likely be a serious problem to users with good hardware and requirements of good dynamic range. The tested Winrad version was obtained by running Winrad_133b03WUSB_setupXP.exe which was downloaded December 21 2010.

The details of the loudspeaker output are shown in figures 7 and 8 which are waterfall graphs produced by Linrad with sim1-winrad.mp3 as the input (before conversion to mp3).



Fig 7.The loudspeaker output from Winrad when running the test recording sim1.wav. This waterfall graph is produced by Linrad with the loudspeaker output from Winrad as input.



Fig 8.The loudspeaker output from Winrad. This the same as figure 7 at a 10 times higher waterfall speed. The time when the signal sweeps across the passband is well visible as well as a couple of fairly weak spurs.

The loudspeaker output of Winrad on an oscilloscope looks like figures 9 and 10 at different X-axis magnification.



Figs 9 and 10The loudspeaker output from Winrad in the time domain when the signal sweeps across the filter.

Compare with figures 4 and 5. It is obvious that Winrad does not have the dynamic range to cope with the signals in the test file. Winrad will not allow using the full potential of the Perseus HF receiver hardware.

Linrad with an erfc window.

Linrad is far more flexible than other SDR software. The user can decide what filters to use. If a really good dynamic range is desired the parameter First FFT window power of sin should be set to 8.

When the test file sim1.wav is played with Linrad, erfc, the screen may look like figure 11. It depends of course how the parameters in Linrad are set.



Fig 11. Linrad running sim1.wav with an erfc FFT1 window (number 8.)

The loudspeaker output from Linrad sounds like this: sim1-lirerfc.mp3 (490728 bytes.) The on-off keyed signal is at a level that is similar to the noise floor level in the beginning and end of the file where the data comes from an old Perseus recording which is well visible in the main spectrum here.

There is no trace of any spur.

The details of the loudspeaker output are shown in figures 12 and 13 which are waterfall graphs produced by Linrad with sim1-lirerfc.mp3 as the input (before conversion to mp3).



Fig 12.The loudspeaker output from Linrad when running the test recording sim1.wav. This waterfall graph is produced by Linrad with the loudspeaker output from another instance of Linrad as input.



Fig 13.The loudspeaker output from Linrad. This the same as figure 12 at a 10 times higher waterfall speed.

The erfc window loudspeaker output of Linrad on an oscilloscope looks like figures 14 and 15 at different X-axis magnification.



Figs 14 and 15The loudspeaker output from Linrad in the time domain when the signal sweeps across the filter. The erfc window is used for FFT1



Linrad with a sine squared window.

The default for the first FFT in Linrad in SSB mode is a sine squared window. That means that the default value for First FFT window power of sin is 2.

When the test file sim1.wav is played with Linrad, using the sin squared window, the screen may look like figure 16. It depends of course how the parameters in Linrad are set.



Fig 16. Linrad running sim1.wav with a sine squared FFT1 window (number=2.)

The loudspeaker output from Linrad sounds like this: sim1-lirdefault.mp3 (490728 bytes.) The on-off keyed signal is at a level that is similar to the noise floor level in the beginning and end of the file where the data comes from an old Perseus recording which is well visible in the main spectrum here.

The details of the loudspeaker output are shown in figures 17 and 18 which are waterfall graphs produced by Linrad with sim1-lirdefault.mp3 as the input (before conversion to mp3).



Fig 17.The loudspeaker output from Linrad when running the test recording sim1.wav. This waterfall graph is produced by Linrad with the loudspeaker output from another instance of Linrad as input.



Fig 18.The loudspeaker output from Linrad This the same as figure 17 at a 10 times higher waterfall speed.

The sine squared loudspeaker output of Linrad on an oscilloscope looks like figures 19 and 20 at different X-axis magnification.



Figs 19 and 20The loudspeaker output from Linrad in the time domain when the signal sweeps across the filter. The sine squared window is used for FFT1



The strong signal creates noise up to about 4 kHz from the strong signal. The level of this noise is of a similar magnitude as the internal noise of the Perseus hardware so it is not audible in real life. It is however possible to set other parameters that make the filters in Linrad work less well.

If one selects a large bandwidth in the first fft, perhaps 1 kHz rather than the default 100 Hz, the differences become larger. The reason for a much wider FFT1 bandwidth could be that it would reduce the time from antenna to loudspeaker. If one also wants a wide bandwidth and sets the first mixer bandwidth reduction small, the noise surrounding a very strong signal would cover a wider frequency range.

Linrad makes the first frequency mixing, filtering and decimation in the frequency domain. That means that only a fraction of the fft bins of fft1/fft2 is used for back transformation. This way the frequency is shifted while only a limited frequency range is back transformed. In other words, the sampling rate is lowered and the frequency is shifted in one step. The sucessive back transforms must however fit exactly to each other and whether they do depends on parameter settings. With the sine squared window they do not quite match and there is a transcient with a random phase/amplitude in the cross-over region between sucessive back transforms. That is the explanation for the non-sinewave nature of the spurs in Linrad when unsuitable parameters are set. Note that the level of this noise is low and unlikely to cause any problem.

What window function to select in Linrad depends on what y6ou want to do. For casual listening everything is usually fine, but when extreme performance is desired one has to know the effect of different settings.

The erfc window gives the best spur suppression from the resampling process, but it does not give any particularly nice shape of spectral lines in the main spectrum. The Gaussian window gives very nice line shape in the main spectrum but one has to set a much narrower FFT1 bandwidth to get a good rejection of resampling spurs. The sine squared window is CPU efficient and usually good enough when the FFT1 bandwidth is set to 100 Hz or less.

To investigate filters in Linrad, press F11 while playing a recorded file. You can produce one yourself easily by pressing S on the normal processing screen.

More info about window functions in Linrad is available here: select the appropriate fft1/fft2 window Some examples for an fft1 bandwidth of 1 kHz are given.

WRplus

When the test file is played with WRplus, the screen may look like figure 21. It depends of course how the parameters in WRplus are set.



Fig 21. WRplus running sim1.wav.

The loudspeaker output from WRplus sounds like this: sim1-wrplus.mp3 (484344 bytes.) The on-off keyed signal is at a level that is similar to the noise floor level in the beginning and end of the file where the data comes from an old Perseus recording.

The tested WRplus version was obtained by installing WRplus_1.05 which was downloaded July 5 2011.

The filters in WRplus 1.05 are fully adequate. Earlier versions have limitations. results for WRplus_1.04 and yet earlier has severe limitations. results for WRplus_1.03

The details of the loudspeaker output are shown in figures 22 and 23 which are waterfall graphs produced by Linrad with sim1-wrplus.mp3 as the input (before conversion to mp3).



Fig 22.The loudspeaker output from WRplus when running the test recording sim1.wav. This waterfall graph is produced by Linrad with the loudspeaker output from WRplus as input.



Fig 23.The loudspeaker output from WRplus This the same as figure 22 at a 10 times higher waterfall speed. The time when the signal sweeps across the passband is well visible as well as a couple of fairly weak spurs.

The loudspeaker output of WRplus on an oscilloscope looks like figures 24 and 25 at different X-axis magnification. The amplitude is not constant while the carrier sweeps across the passband. This is presumably due to the properties of the AGC.




Figs 24 and 25The loudspeaker output from WRplus in the time domain when the signal sweeps across the filter.



WinradioG31DDC

This is the software for Excalibur. Files are saved in a 32 bit format which is wasteful for files with a bandwidth of 500 kHz. The files become 33% larger for no reason.

To run WinradioG31DDC with the sim1.wav file of this page one has to convert it from a 24 bit .wav to 32 bit .wav file. That can be done with sim2excalibur.exe (6656 bytes) The source code can be found in the Linrad package and it compiles with the command make sim under Linux when mingw32 is present. (The command also produces other sim2xxxx files.)

To convert sim1.wav to excalibur-sim.ddc, download sim1.zip (170614292 bytes) and unpack it into a directory of your choice. Also place sim2excalibur.exe in the same directory. Then use a command window to log to the same directory and type:

sim2excalibur.exe sim.wav

When the test file is played with WinradioG31DDC, the screen may look like figure 26. It depends of course how the parameters in WinradioG31DDC are set.



Fig 26. WinradioG31DDC running sim1.wav. (excalibur-sim.ddc)

The loudspeaker output from WinradioG31DDC sounds like this: sim1-excalibur.mp3 (493248 bytes.) The on-off keyed signal is at a level that is similar to the noise floor level in the beginning and end of the file where the data comes from an old Perseus recording.

There are no spurs.

The tested WinradioG31DDC version was 1.26 downloaded February 2 2011. The filter length was set to 4000.

The details of the loudspeaker output are shown in figures 27 and 28 which are waterfall graphs produced by Linrad with sim1-excalibur.mp3 as the input (before conversion to mp3).



Fig 27.The loudspeaker output from WinradioG31DDC when running the test recording sim1.wav. This waterfall graph is produced by Linrad with the loudspeaker output from WinradioG31DDC as input.



Fig 28.The loudspeaker output from WinradioG31DDC This the same as figure 27 at a 10 times higher waterfall speed. The bursts of high frequency noise is far below the noise with real hardware connected. It is audible in the .mp3 file however, but that is because of the extremely low noise floor in the test file.

The loudspeaker output of WinradioG31DDC on an oscilloscope looks like figures 29 and 30 at different X-axis magnification.



Figs 29 and 30The loudspeaker output from WinradioG31DDC in the time domain when the signal sweeps across the filter.

WinradioG31DDC vers 1.26 has filters that well meet the performance of the Excalibur hardware. The previously tested version had a problem with the AGC threshold control that made the results hard to interpret. The old test is available here: Filter performance in WinradioG31DDC vers 1.18 That test was with a filter length of 200 which is the software default. With a filter length of 4000 also the 1.18 software has adequate filters.

SDRMAX

This is the software for QS1R.

To run SDRMAX with the sim1.wav file of this page one has to replace the rcvr chunk in the .wav file header. That can be done with sim2qs1r.exe (6656 bytes) The source code can be found in the Linrad package and it compiles with the command make sim under Linux when mingw32 is present. (The command also produces other sim2xxxx files.)

To convert sim1.wav to qs1r-sim.wav, download sim1.zip (170614292 bytes) and unpack it into a directory of your choice. Also place sim2qs1r.exe in the same directory. Then use a command window to log to the same directory and type:

sim2qs1r.exe sim.wav

When the test file is played with SDRMAXIV, the screen may look like figure 31. It depends of course how the parameters in SDRMAXIV are set.


Fig 31. SDRMAXIV running sim1.wav. (qs1r-sim.wav)

The loudspeaker output from SDRMAXIV sounds like this: sim1-qs1r.mp3 (495936 bytes.) The on-off keyed signal is at a level that is similar to the noise floor level in the beginning and end of the file where the data comes from an old Perseus recording.

The tested SDRMAXIV version was 4.0.0.5 Beta 1 downloaded JAN 7 2011.

The details of the loudspeaker output are shown in figures 32 and 33 which are waterfall graphs produced by Linrad with sim1-qs1r.mp3 as the input (before conversion to mp3).



Fig 32.The loudspeaker output from SDRMAXIV when running the test recording sim1.wav. This waterfall graph is produced by Linrad with the loudspeaker output from SDRMAXIV as input.



Fig 33.The loudspeaker output from SDRMAXIV This the same as figure 32 at a 10 times higher waterfall speed.

The loudspeaker output of SDRMAXIV on an oscilloscope looks like figures 34 and 35 at different X-axis magnification.



Figs 34 and 35The loudspeaker output from SDRMAXIV in the time domain when the signal sweeps across the filter.

With version 4.0.0.5 the SDRMAXIV software well meets the performance of the QS1R hardware. It is a significant improvement over the previous version for which test results are available here. Filter performance in SDRMAX 4.0.0.4

SpectraVue

This software is for RFSpace receivers. SDR-14, SDR-IQ, SDR-IP and others.

To run SpectraVue with the sim1.wav file of this page one has to replace the rcvr chunk in the .wav file header with an auxi chunk. That can be done with sim2spectravue.exe (6656 bytes) The source code can be found in the Linrad package and it compiles with the command make sim under Linux when mingw32 is present. (The command also produces other sim2xxxx files.)

To convert sim1.wav to spectravue-sim.wav, download sim1.zip (170614292 bytes) and unpack it into a directory of your choice. Also place sim2spectravue.exe in the same directory. Then use a command window to log to the same directory and type:

sim2spectravue.exe sim.wav

When the test file is played with SpectraVue, the screen may look like figure 36. It depends of course how the parameters in SpectraVue are set.


Fig 36. SpectraVue running sim1.wav. (spectravue-sim.wav)

The loudspeaker output from SpectraVue sounds like this: sim1-spectravue.mp3 (491232 bytes.) The on-off keyed signal is at a level that is similar to the noise floor level in the beginning and end of the file where the data comes from an old Perseus recording.

The tested SpectraVue version was Ver. 3.12 downloaded as spectravueinstall.zip on JAN 27 2011.

The details of the loudspeaker output are shown in figures 37 and 38 which are waterfall graphs produced by Linrad with sim1-spectravue.mp3 as the input (before conversion to mp3).



Fig 37.The loudspeaker output from SpectraVue when running the test recording sim1.wav. This waterfall graph is produced by Linrad with the loudspeaker output from SpectraVue as input.



Fig 38.The loudspeaker output from SpectraVue This the same as figure 37 at a 10 times higher waterfall speed.

The loudspeaker output of SpectraVue on an oscilloscope looks like figures 39 and 40 at different X-axis magnification.



Figs 39 and 40The loudspeaker output from SpectraVue in the time domain when the signal sweeps across the filter.

The AGC turns up the gain to make the noise floor as strong as the signals. There should be a control for "max RF gain" or "AGC threshold" somewhere, but I have not found it. This test is for filters. It is obvious that the spurs are much stronger than -120 dB from saturation since they quiet the noise completely when walking through the passband while the -120 dB on-off keyed signal does not.

SDR-RADIO

This software is for RFSpace receivers. SDR-14, SDR-IQ, SDR-IP and others.

To run SDR-RADIO with the sim1.wav file of this page one can use the file for SpectraVue. See above.

When the test file is played with SDR-RADIO, the screen may look like figure 41. It depends of course how the parameters in SDR-RADIO are set.


Fig 41. SDR-RADIO running sim1.wav. (spectravue-sim.wav)

The loudspeaker output from SDR-RADIO sounds like this: sim1-sdr-radio.mp3 (495936 bytes.) The on-off keyed signal is at a level that is similar to the noise floor level in the beginning and end of the file where the data comes from an old Perseus recording.

The tested SDR-RADIO version was version 1.1 (RC2) build 547 downloaded as SDR-RADIO_v1.1b547.exe on JAN 27 2011.

The details of the loudspeaker output are shown in figures 42 and 43 which are waterfall graphs produced by Linrad with sim1-sdr-radio.mp3 as the input (before conversion to mp3).



Fig 42.The loudspeaker output from SDR-RADIO when running the test recording sim1.wav. This waterfall graph is produced by Linrad with the loudspeaker output from SDR-RADIO as input.



Fig 43.The loudspeaker output from SDR-RADIO This the same as figure 42 at a 10 times higher waterfall speed.

The loudspeaker output of SDR-RADIO on an oscilloscope looks like figures 44 and 45 at different X-axis magnification.



Figs 44 and 45The loudspeaker output from SDR-RADIO in the time domain when the signal sweeps across the filter.

When listening to the audio output from SDR-RADIO one can hear that something is not right. Listen to the pure noise and compare with the other recordings on this page. The difference is fairly easy to hear by ear, but it is not visible in waterfalls, or spectrum graphs. The reason for the odd charactreistics is the AGC. By setting a slower AGC with a hold time one can get a normal white noise output. The fast AGC amplitude modulates the noise with low pass filtered random noise. By setting a slower AGC with some hang time one can get a normal noise floor. For the purpose of the test on this page the fast AGC helps to see spurs that might occur soon after the big signal has crossed the passband. No spurs are visible. The filters in SDR-RADIO are very good.

The AGC turns up the gain to make the noise floor as strong as the signals. There should be a control for "max RF gain" or "AGC threshold" somewhere, but I have not found it.

HDSDR

This software is a Winrad derivative and it can play the original simulation file.

When the test file is played with HDSDR, the screen may look like figure 46. It depends of course how the parameters in HDSDR are set.


Fig 46. HDSDR running sim1.wav.

The loudspeaker output from HDSDR sounds like this: sim1-hdsdr.mp3 (1145472 bytes.) The on-off keyed signal is at a level that is similar to the noise floor level in the beginning and end of the file where the data comes from an old Perseus recording.

The tested HDSDR version was Version 2.51 (Dec 06 2012) downloaded as HDSDRinstall.exe on JAN 16 2013.

The details of the loudspeaker output are shown in figures 47 and 48 which are waterfall graphs produced by Linrad.



Fig 47.The loudspeaker output from HDSDR when running the test recording sim1.wav. This waterfall graph is produced by Linrad with the loudspeaker output from HDSDR as input.



Fig 48.The loudspeaker output from HDSDR This the same as figure 47 at a 10 times higher waterfall speed.

The loudspeaker output of HDSDR on an oscilloscope looks like figures 49 and 50 at different X-axis magnification.



Figs 49 and 50 The loudspeaker output from HDSDR in the time domain when the signal sweeps across the filter.

The filters in HDSDR are not quite good enough to match modern hardware. There is one wide range spur that is similar in amplitude to the the -120 dB on-off keyed test tone. On a modern SDR with a noise floor below -150 dBc/Hz it will be well audible. There are two close range spurs that are a little stronger, but in real cases not significant since transmitters seldomly have very clean spectra. There are also many weaker spurs near the center frequency, but they are well below the noise floor even on the best receivers of today.

Version 2.51 shows significantly improved filters cpompared to the filters in HDSDR-1.00 which was previously tested.

Studio1

This software is non-free and requires an USB dongle. It works with a large number of hardware platforms.

When the test file is played with Studio1, the screen may look like figure 51. It depends of course how the parameters in Studio1 are set. The screen dump shows the spectrum/waterfall windows only.


Fig 51. Studio1 running sim1.wav.

The loudspeaker output from Studio1 sounds like this: sim1-studio1.mp3 (833760 bytes.) The on-off keyed signal is at a level that is similar to the noise floor level in the beginning and end of the file where the data comes from an old Perseus recording.

The tested Studio1 SDR version was Version 1.1 which was delivered together with the dongle in August 2012.

The details of the loudspeaker output are shown in figures 52 and 53 which are waterfall graphs produced by Linrad.



Fig 52.The loudspeaker output from Studio1 when running the test recording sim1.wav. This waterfall graph is produced by Linrad with the loudspeaker output from Studio1 as input.



Fig 53.The loudspeaker output from Studio1 This the same as figure 52 at a 10 times higher waterfall speed.

The loudspeaker output of Studio1 on an oscilloscope looks like figures 54 and 55 at different X-axis magnification.



Figs 54 and 55 The loudspeaker output from Studio1 in the time domain when the signal sweeps across the filter.

The filters in Studio1 are very good.

To SM 5 BSZ Main Page