Gaining RSSI, SNR, CNR or BER information

Hi,

I’m a project member of the global education network for satellite
operations (Genso, www.genso.org) and currently working on gaining
comparable link quality information when having an RX communication with
satellites.

As we’ll probably support GnuRadio on a broad base (both using a USRP or
a soundcard as ADC) I hope that it can help me to get more valuable
information out of it than possible when using traditional hardware
radios and TNCs (what I currently get is the Signal strength reading on
a very low sample rate (one second), and that’s hardware dependent).

As we’re not the operator of the satellites, it is impossible to know
the data we’ll receive beforehand and make a comparison afterwards to
calculate the bit error rate. So I have to count on information I can
gain from the received signal characteristics. So I wonder if GnuRadio
provides facilities to measure the signal (or carrier) to noise ratio
(or the energy per bit per noise power spectral density) or the
(approximate) bit error rate - or if it depends on the used blocks, or
the ADC (if it’s a soundcard or the USRP). I’ve read about possibilities
to receive the RSSI when using the USRP, but it seems to depend on the
daugtherboards (and unavailable when using a sound card).

So I would appreciate any possibility to gain information which helps
me to determine the quality of a communicaton link using GnuRadio.

Thank you very much in advance

Bastian

On Fri, May 9, 2008 at 2:22 AM, Bastian P. [email protected] wrote:

As we’re not the operator of the satellites, it is impossible to know
the data we’ll receive beforehand and make a comparison afterwards to
calculate the bit error rate. So I have to count on information I can
gain from the received signal characteristics.

If you use the USRP, you will obtain a complex baseband representation
of your satellite signal. From this, you will need to implement a
demodulator for the particular signal involved. From the output of
the demodulator, there are several ways to estimate signal-to-noise
ratio that do not require prior knowledge of the bit pattern. From
the signal-to-noise ratio, you can estimate the theoretical bit error
rate for the type of modulation in use. See:

http://www.comsoc.org/comm/private/2000/oct/1681_48comm10-pauluzzi.html

GNU Radio is very suitable for this sort of thing.


Johnathan C.
Corgan Enterprises LLC
http://corganenterprises.com/

Dear Jonathan,

If you use the USRP, you will obtain a complex baseband representation
of your satellite signal. From this, you will need to implement a
demodulator for the particular signal involved. From the output of

As far as I know there already exist demodulators for (A)FSK, BPSK and
MSK - which covers the majority of the small satellites we focus on.

the demodulator, there are several ways to estimate signal-to-noise
ratio that do not require prior knowledge of the bit pattern. From
the signal-to-noise ratio, you can estimate the theoretical bit error
rate for the type of modulation in use. See:

http://www.comsoc.org/comm/private/2000/oct/1681_48comm10-pauluzzi.html

GNU Radio is very suitable for this sort of thing

That are very good news for me! I’m aware about the relations between
SNR and BER - I just wonder about the several ways to estimate the SNR
in GnuRadio. That’s exactly the information I lack of - do you have any
documentation/examples/sources for how to accomplish that?

And what about the usage of sound cards as ADC? Can I also obtain SNR
information when I just have an audio stream as source?

Many thanks and best regards

Bastian

Bastian P. wrote:

That are very good news for me! I’m aware about the relations between
SNR and BER - I just wonder about the several ways to estimate the SNR
in GnuRadio. That’s exactly the information I lack of - do you have any
documentation/examples/sources for how to accomplish that?

For BPSK, a simple estimator to calculate the signal plus noise to noise
ratio is to track the power each in the I and Q portions of demodulated
symbol stream. That is, power(I)/power(Q) is a good (but biased)
estimate of (S+N)/N for an interval of signal. In practice, you can
maintain a running exponential average of each channel and calculate the
ratio when needed.

A more accurate estimator is to measure the absolute mean and variance
of the demodulated symbols, then take ratio of the square of the
absolute mean over the variance. This is a true estimate of SNR, but is
still biased.

Depending on how you need the data for the rest of your application, you
could either code these up in Python using existing GNU Radio primitives
into a flow graph, or you could write a custom C++ block (which would be
marginally faster).

And what about the usage of sound cards as ADC? Can I also obtain SNR
information when I just have an audio stream as source?

That entirely depends on what has already happened to the signal prior
to it arriving at the sound card.

On Fri, May 9, 2008 at 9:32 AM, Bastian P. [email protected] wrote:

Unfortunately I’m not (yet) aware of the preprocessing (except for
downmodulation to baseband) taking place within the (ham) radio - what
could happen to the signal? And what would be the optimal precondition for
gaining any SNR information out of it?

It is still modulation dependent; you’ll have to consider this on a
case-by-case basis.


Johnathan C.
Corgan Enterprises LLC
http://corganenterprises.com/

Hi Jonathan,

many thanks for the detailed explanation!

Johnathan C. wrote:

That entirely depends on what has already happened to the signal prior
to it arriving at the sound card.

Unfortunately I’m not (yet) aware of the preprocessing (except for
downmodulation to baseband) taking place within the (ham) radio - what
could happen to the signal? And what would be the optimal precondition
for gaining any SNR information out of it?

If I know that to ask for I can investigate on how the preprocessing in
the radio.

Best regards

Bastian

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs