The filters in Linrad and PowerSDR.
(Jan 17 2011)

Test method.

The Flex products have their own software: PowerSDR. It can save the full bandwidth on the hard disk and play it again as if the recording were the antenna signal.

Linrad can read the .wav files that PowerSDR 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 Flex hardware were connected. The file powersdr-sim2.wav (174170156 bytes) can be downloaded here as a zipped file: sim2.zip (124633236 bytes) The file is produced by having Linrad play a file that was recorded with PowerSDR and a Flex5000 with a dummy load connected to the antenna input.

The noise from the file and the simulated waveform were recorded in Linrads proprietary 18 bit format with .raw extension. The .raw to .wav converter of Linrad was used to produce sim2.wav in the standard 24 bit Microsoft PCM format. The 24 bit PCM was then converted to the 32 bit float format of PowerSDR with the utility sim2powersdr.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.)

Most SDR software can be tested at 500 kHz. Tests for Winrad, Linrad, WRplus, perseus.exe, WinradioG31DDC, SDRMAXIV, SpectraVue and SDR-RADIO are available here. The maximum speed for Rocky is 96 kHz. A test for a href="../sim3/sim3.htm">Rocky is available here.

Linrad

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


Fig 1. Linrad running powersdr-sim2.wav.

The loudspeaker output from Linrad sounds like this: sim2-linrad.mp3 (761721 bytes.) The on-off keyed signal is 120 dB below the strong sweeping signqal.

The tested Linrad version was 03-19 with the erfc window for fft1 and a Gaussian window for the baseband (fft3.)

The details of the loudspeaker output are shown in figures 2 and 3 which are waterfall graphs produced by Linrad with sim2-linrad.mp3 as the input (before conversion to mp3).



Fig 2.The loudspeaker output from Linrad when running the test recording powersdr-sim2.wav. This waterfall graph is produced by Linrad with the loudspeaker output from Linrad as input.



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

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



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

The parameters selected for Linrad demonstate close to ideal filters but without concern for delay or CPU load. It is shown here to demonstrate the properties of powersdr-sim2.wav.

PowerSDR v2.0.16

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



Fig 6. PowerSDR running powersdr-sim2.wav.

The loudspeaker output from PowerSDR sounds like this: sim2-powersdr.mp3 (776496 bytes.) The on-off keyed signal is 120 dB below the sweeping strong signal.

There are no spurs, but there are obvious buffer addressing problems. Maybe a somewhat better baseband filter could improve close range performance. Whether an improvement would be meaningful depends on the Flex hardware. Only if sideband noise levels are really low, the limited performance of the SDR software would matter.

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



Fig 7.The loudspeaker output from PowerSDR when running the test recording powersdr-sim2.wav. This waterfall graph is produced by Linrad with the loudspeaker output from Power>SDR as the input.



Fig 8.The loudspeaker output from Power SDR This the same as figure 7 at a 10 times higher waterfall speed.

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



Figs 9 and 10

The loudspeaker output from PowerSDR in the time domain when the signal sweeps across the filter.

The obvious problem with PowerSDR that is visible above is a buffer addressing problem. It causes big pulses that cause the AGC to turn down gain. The problem is related to the output soundcard. It has MME drivers only and it is "unsupported souncard" in the PowerSDR software. (I used a Compaq 6510b for testing.)

I know from my work with Linrad that Portaudio does not work well with MME drivers. One has to set very large buffers to provide a very long time (in the order of 0.1 s) between each write to the output. Each write takes a long time until it returns even for small buffers.

There are several driver types under Windows. When portaudio is used with ASIO, WDM-KS or WASAPI one can set small buffers and write to the output in intervals of 1 ms (and probably less.)

I have no reason to doubt that the glitches seen above are caused by my use of unsupported hardware. The glitches are however infrequent enough to make the filter test valid. There is an odd feature, glitches of some kind in figure 8 which is of course also audible in the .mp3 file. I find it hard to believe that the reason for these glitches is not also in the unsupported soundcard driver.

The filter performance of PowerSDR that this test reveals is quite reasonable. There are no resampling spurs. The main filter could have somewhat better suppression at close range, but the level of the opposite sideband is low enough for it no never be heard with real hardware. A steeper filter would cause more time delay so the one implemented here is probably a good compromise.

There is one very odd thing about the PowerSDR software. The software produces a notch that follows the frequency of the strong signal but in the opposite direction. The notch is well visible on the images above.

When I first discovered this notch I was VERY upset. I could not imagine that this notch was not there on purpose. N4HY Bob Mcgwier has now sent me a mail where he writes: "This is just not right. We are not doing an image notch. We are doing a phase and amplitude rebalance." He also offered me some code for Matlab so I could see for myself.

Now, when informed that the notch is not intended to be there, I am very sorry I accused Flex from being unethical.

The explanation of the notch I have received from Flex is this:

Now I see what is happening given the screen captures.

You are testing UNRELEASED BETA CODE. THis is not official Flex software. It is in ALPHA form.

The code you have makes no allowances for different SNR's in the training. This has been corrected.

What happens is the nonlinear control law goes into oscillation when the SNR is too large. Now SNR is used to scale back the gain.

A simple note to us would have told you what the deal was and how we had ALREADY corrected this before you put this web page up.

When something becomes an official release, and not alpha software, and Flex makes claims about released code, then I suggest you can ask them about technical faults or what looks like misrepresentations. The code you have is not even a release candidate. Release candidate 1 is just about to be released. There are wholesale changes in the code from old 1.X versions of PowerSDR.

There is not now, nor has there ever been an attempt to defraud or mislead anyone. That is just uncalled for charges.


The notches appear in PowerSDR-2.16 which is tested above. I have downloaded and tested PowerSDR-2.08 and it has the same behaviour. It is also a beta release.

Bob has now explained that the notch is the result of a stability problem that is now fixed.

The stability problem occurs at very high signal levels only. I have verified that the rebalancing works as intended for a signal that is 20 dB below A/D saturation. A mirror image that was present in the simulated file is properly removed by the rebalancing algorithm, but the desired signal is unaffected. No notch is present.

It is obvious that the notches on mirror frequencies should have been reported by me as a bug or malfunction of the software. Since the problems occur in beta versions and not in stable released versions I should not have put forward any accusations of non-ethical behaviour. I am sorry I did that, but the facts I had at hand were rather unusual.

Figure 11 shows a simulation with a near saturating signal sweeping across the mirror frequency. Figure 12 shows the same thing, but the strong signal is 20 dB weaker.



Fig 11The effect of the stability problem at high signal levels in Beta releases of PowerSDR-2.0.x.



Fig 12This image differs from figure 11 only in that the sweeping signal is 20 dB weaker. There is no notch - and there is no mirror image.



Fig 13This is how the simulation of figure 12 looks when the file is played with Linrad. Note the mirror image. Linrad has no image cancellation!!

I acted on simulations like figure 11. It is quite obvious that a narrow notch that were placed on the image frequency would solve the image problem if the notch were adaptive and would follow frequency changes rapidly. I do not think many users would have noticed if such a solution would have been implemented. I actually still think it would have been possible to implement such a solution and get away with it. That made me mad. I am sorry for that now. I could not understand that something as "smart" as adding notches like that could be the consequences of a stability problem.

Compare figures 12 and 13. In Linrad the simulation is played as is. There is no mirror cancellation in Linrad. The mirror image, some 30 dB above the noise, is created by having a small amplitude as well as a small phase error in the generated waveform. Note that there is not the slightest trace of that mirror when the same file is played with PowerSDR-2.0.16. The desired on-off keyed waveform is totally unaffected all the time and there is not the slightest trace of a notch. I am sorry, I made a mistake. I wish the people at Flex can forgive me.

When available I will place a link here to the latest info from Flex Radio about what they are doing to address remaining problems with the WBIR algorithm.

To SM 5 BSZ Main Page