Hi all,
I’ve already seen several posts for dual RX but nothing to receive at different frequencies using SoapySDR. My idea is to get a bigger bandwidth, eg 2x50MHz to see the whole 2.4GHz band.
First I tried at the same frequency with 60MS/s and it works. I would expect the 2 channels to receive signals at the same power (they each have their own antenna but very close to each other), but it seems channel 1 is always receiving at a lower power level when there’s no significant signal. Here’s an FFT of the 2 channels, 10dB per line vertically:
When my WiFi router sends some signals, I can clearly see them, but there’s again some difference between the 2 channels. This time channel 1 shows a higher power than channel 0. Also it seems the rest of the spectrum gets more flat on channel 1.
Is there any calibration to do so that the 2 channels show similar results?
I then tried listening on 2 different frequencies. The Soapy API for setFrequency
says to use args
to augment the tuning algorithm, like "OFFSET" to specify an "RF" tuning offset
, but the args
parameter is not used in both methods.
I then saw that the 2nd setFrequency
method allows to specify the name, either “RF” or “BB”. Using “BB” calls SetNCOFreq
.
So what I ended up doing is something like
setFrequency(RX, 0, "RF", freq, null);
setFrequency(RX, 0, "BB", +15 000 000, null);
setFrequency(RX, 1, "RF", freq, null);
setFrequency(RX, 1, "BB", -15 000 000, null);
Is that the right way to do it? It seems to be working, but then I read, using SoapySDRUtil
BB freq range: [-10, 10] MHz
Tune args:
* LO Offset - Tune the LO with an offset and compensate with the baseband CORDIC.
[key=OFFSET, units=Hz, default=0.0, type=float, range=[-1e+07, 1e+07]]
* BB - Specify a specific value for this component or IGNORE to skip tuning it.
[key=BB, units=Hz, default=DEFAULT, type=float, range=[-1e+07, 1e+07], options=(DEFAULT, IGNORE)]
Sample rates: [0.1, 65] MSps
Filter bandwidths: [1.4, 130] MHz
So it seems “BB” is limited to +/-10MHz?
What about the LO offset? It seems we can’t use it with the setFrequency
methods.
Also, are the 2 channels synchronized, meaning they start receiving at the same time? It appears so as Soapy gives me 1 stream to read from the 2 channels, and my WiFi signal appears and disappears at the same time on both channels. I haven’t tried over more than a few seconds though.