0
$\begingroup$

My Set-Up

I am sending packets at a specific frequency and with a specific gain from one N-210 USRP to another of the same model.

NOTE: I have the transmitting USRP connected to a series of attenuators (so that I don't overwhelm the spectrum analyzer) and then to an RF splitter - one output is connected to a spectrum analyzer and the other output is connected to the receiving USRP. This is how I am reading the receive signal's magnitude.

My Problem

I am attempting to calibrate the receive signal power measurements (in dBm) that I can visually record from the spectrum analyzer with the RSSI measurements (in dB) that are output into a file by a script (I read them from the text output of the ofdmflexrframe_rx function). My plan is to come up with a linear correction factor to relate RSSI measurements to the receive signal power measurements from the spectrum analyzer.

I read on Wikipedia:

RSSI is the relative received signal strength in a wireless environment, in arbitrary units.

I also read this from a response to a USRP user's question about RSSI measurements:

[The] Received Signal Strength [Indicator is] always relative to some signal model, incorporating considered bandwidth, assumptions on the modulation scheme, duration of transmission, generally: It's a estimation of received signal strength based on some property of the received signal.

Now, I think that comparing the receive signal power levels on the spectrum analyzer with the RSSI measurements that function provides is not the right way to come up with a correction factor.

  • What is the difference between RSSI measurements and the dBm values that I record from the spectrum analyzer?
  • Is it possible to relate these RSSI measurements to the receive signal power levels that I record from the spectrum analyzer?
  • If I cannot relate these two measurements by a correction factor, is there a way to obtain the receive signal power measurements (in dBm) programmatically (GNUradio perhaps)? (NOTE: I don't believe there is any way to obtain the receive signal power measurements through the library that contains the function I linked above)
$\endgroup$
4
$\begingroup$

I also read this from a response to a USRP user's question about RSSI measurements:

[The] Received Signal Strength [Indicator is] always relative to some signal model, incorporating considered bandwidth, assumptions on the modulation scheme, duration of transmission, generally: It's a estimation of received signal strength based on some property of the received signal.

Yes, I wrote that, and I still think it applies, so:

What is the difference between RSSI measurements and the dBm values that I record from the spectrum analyzer?

Well, the RSSI is calculated based on some signal-model based estimator, whereas the dBm value on your spectrum analyzer is calculated with another metric – namely, the power measured going through a filter with the filter bandwidth you configured at your spectrum analyzer.

These two might, or might not be related, taking into account that even a signal with very low power spectral density values might be sufficiently good for something that has e.g. matched filters to extract the signal from noise, or any other form of processing gain.

So, your only option is to understand both estimators, with the Spectrum Analyzer estimator being relatively simple, and the flex estimator being free and open source (so you can just read the code ), and relate the two; so basically, you'll have to find, given a (class of) signal(s) $s(t)$, the functions $f_{SA}$, $f_{flex}$ and finally $g$ from

$$\begin{align} P_\text{spectrum analyzer}\left(s(t)\right) &= f_{SA}\left(s(t)\right)\\ P_\text{flex frame sync RSSI}\left(s(t)\right) &= f_{flex}\left(s(t)\right)\\ \leadsto P_\text{flex}'\left(P_\text{spectrum analyzer}\right) &= g(f_{SA}\left(s(t)\right))\text{ .} \end{align}$$

I've just skimmed the liquiddsp code for the RSSI estimation, and the interesting part seems to happen in qdetector_cccf_execute_align.

However, this can never work without making a lot of assumptions. For example, if your signal happens to have a very narrow, but very strong single tone interferer, it will probably not break flex reception, and if that RSSI estimator is any good, not change RSSI very much, but it will drastically change the dBm value displayed by your spectrum analyzer. So if the question was

Can I find an estimator that always gives me the same reading as the liquidDSP flex RSSI based on the dBm value displayed by a spectrum analyzer?

then the answer is a

No. See above proof by counterexample (single tone interferer).

However:

If I cannot relate these two measurements by a correction factor, is there a way to obtain the receive signal power measurements (in dBm) programmatically (GNUradio perhaps)?

Sure. Why not? You got the raw samples, don't you? So do a magnitude squared of them, and find a linear correction factor. That will work (have done so multiple times), because now you're actually measuring to things that relate to each other (signal amplitude as seen by your SDR frontend's ADC and signal power as seen by the spectrum analyzer simply have a quadratic relation).

Note that you will have to re-calibrate for different frequencies, sampling rates, if settable, analog frontend widths (only applies to B2xx, E3xx, and a few very old daughterboards for your N2xx currently; by the way, the TVRX* boards have always-on AGC, so they can't be used for this).

The relationship between input voltage and digital number amplitude is linear for quite a large range for the Ettus frontends – however, as soon as your input amplifier and mixers start reaching saturation, this will no longer apply, so you did good to use a few dB of attenuation.

If you happen to have a WBX, SBX, CBX or UBX daughterboard, there's IP2/IP3 measurements (along with effective vs set gain) available that will help you estimate the region of linearity on http://files.ettus.com/performance_data/.

$\endgroup$
  • $\begingroup$ Thank you a ton! I really appreciate the additional notes at the end of your answer regarding the particular things I should look out for depending on which daughter-board I have. I have SBX daughterboards in both of my USRPs, so I'll have to look into the link detailing IP2/IP3 measurements. $\endgroup$ – Vladislav Martin May 19 '16 at 13:26
  • $\begingroup$ I have spent a good number of hours trying to wrap my mind around the practical usage of IP2/IP3 measurements. I am still an undergraduate student, so it is possible that the math involved with incorporating IP2/IP3 measurements into a correction factor between the signal amplitude on the SDR and signal power seen on the SA. Could you suggest some reading for me to familiarize myself with the utility of these new variables I wasn't aware of before (IP2/IP3/IQ Balance/Noise Figure)? $\endgroup$ – Vladislav Martin May 19 '16 at 17:17
  • $\begingroup$ puh , I've learned stuff like that in some special lectures on "modern radio systems engineering" and similar, and by working with USRPs, sooooo letmethink. $\endgroup$ – Marcus Müller May 19 '16 at 17:27
  • $\begingroup$ After roughly a year of additional experience in the field, I think I've finally answered those questions for myself. I guess sometimes it really is true that there's some experience reading a book really can't replace. $\endgroup$ – Vladislav Martin Jun 16 '17 at 18:23
  • $\begingroup$ That is good to hear! I'll certainly upvote an answer of you! $\endgroup$ – Marcus Müller Jun 17 '17 at 9:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.