enter image description here

Warning: Noob question.

I'm new to Software Defined Radio.

My aim is to write a program that tells me the signal strength of a radio emitting source (I'll use three such sources and then try to triangulate the location).

I've stumbled upon GNU Radio for this purpose (I am using r820t2 dongle -nooElec to receive and fs1000A with arduino pronmini to transmit on 499 MHz).

I've looked into some of GNU Radio docs and found out I can use the companion application to select a source block (osmosdr source for dongle) and direct it to a QT GUI Sink, except that I'd want the output from the source block and do some rssi/signal-strength/decibells to distance calculation on them.

I finally found out about probe-blocks(preferred them over custom blocks, correct me if my approach is wrong), and now I'm using a probe block to get the value from source and simply printing it on a qtlabel for now. Its a complex value and usually goes like (-0.003435435353535345+0.00424234242423424234). I need to know what this value is and if either of them is the decibell/signalstrength/rssi.

Is there any resource where I can find my answer?

  • 1
    $\begingroup$ Welcome to ham.stackexchange.com! $\endgroup$
    – rclocher3
    Mar 18, 2020 at 13:46

1 Answer 1


Ok, the probe blocks are not really what you should be using here. In fact, we (I, as architect) should have deprecated them a long time ago – they are really more of a debugging crutch than a signal processing tool.

You could have used the QT GUI Number Sink instead.

Then: yes, your received signal is a complex value – it's complex baseband. (An intro to that. If you're much more math-affine, this book is theory-heavy, good and free. If you're less interested in the theory, and familiar with math at a third-semester engineering level, Software Defined Radio for Engineers is good, and I very strongly suggest it over a lot of the tech-affine SDR literature that's floating around in the amateur radio space.)

The power of that signal is proportional to the squared absolute value. In GNU Radio, there's a block called "Complex to Mag^2", and that is exactly that operation.

You can convert the result to power by using the logarithm.

Now, downer:

Proportional means really only that: For any given frequency, gain, sample rate setting of your RTL dongle, there's a fixed factor between power at your antenna and magnitude square of the complex numbers. (Assuming temperature and other environmental factors affecting the analog signal chain don't change.)

To know actual physical units, you'll have to first calibrate your receiver with a source of known power. You don't have one, so you can't.

For your application, however, you don't need that at all – you just need to know relative distances; i.e. it's enough to know that you're e.g. half as far from the transmitter at point B as you were at point A. Add point C and D, and you can calculate a position.

That's possible without calibration: In free-space propagation, power drops with the square of distance, so if your average magnitude square at point A was $x$, it would be $x\cdot\sqrt{2}$ at point B.

Next downer:

499 MHz typically doesn't see a free-space propagation channel; it's already slightly attenuated through foliage, it reflects well off buildings and even better off cars and other metal surfaces, and so you don't really get a reliable square-law when it comes to power drop with distance. So, unless you really have a high-elevated receiver antenna and thus can guarantee a dominant line of sight to the transmitter, this will get pretty inaccurate, and you'll have to use a lot of different measurements and some algorithmic smarts to figure out the true transmitter location based on that.

There's whole industries that sell nothing but solutions for that problem – for way easier things, like estimating where in a mountain range a kW TV transmitter is. So, on level field, this is quite doable, on more complex terrain, you're moving into heavy inverse problem math, and would want a propagation map of the terrain as input :)

  • $\begingroup$ Hey, Thanks. I dont know much about waves and signals except the very basic of waves. I have the scottgadget videos bookmarked which ill be watching and even that book lying around here(havent started with that). Can you tell me the absolute prerequisites that I'll be needing? Most concepts dont make sense to me at this point. Secondly, added copmlextomag2 block and have the probe function print val() to QLabel now the values are 0.2412e-5 and they keep fluctuating to 4.32423e-5 even if i turn the transmitter off. I assume it's not the signal-strength/rssi that complextomax2 outputs? $\endgroup$ Mar 18, 2020 at 11:08
  • $\begingroup$ Secondly, I can just use programs like gqrx and even they are displaying the decibells value at 433MHZ when the transmitter is on. I'm sure there's a way I can maybe get the same decibell values too with gnuradio? It doesn't have to be accurate for now, just a prototype/concept. $\endgroup$ Mar 18, 2020 at 11:11
  • $\begingroup$ I didn't want to make my answer too long to keep it readable, but: RSSI doesn't actually mean anything; it's a standards-specific, often even device-specific "here's an arbitrary number to show how well reception works", and rarely actually directly meaningful with respect to receive power. $\endgroup$ Mar 18, 2020 at 11:15
  • $\begingroup$ if your received signal power isn't changed by the fact whether your transmitter is transmitting or not, then something isn't correctly set up! HArd to tell here. Yes, complex to Mag^2 definitely outputs something that's proportional to instantaneous received signal power. It's literally how we define our signals to be. $\endgroup$ Mar 18, 2020 at 11:15
  • $\begingroup$ The values GQRX and others display are indeed decibel. You probably know that decibel is a relative measure – for example, there's dBW, "decibels relative to 1 W". The decibel units displayed by GQRX are "decibel relative to a digital mag^2 of 1", not relative to some physical unit. Again, read my paragraph on physical units. $\endgroup$ Mar 18, 2020 at 11:17

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .