Re: FSK and GFSK signal decoding

Hi Nick,

thank you very much for your answers.

From a development perspective, you’re probably best off in Linux, but
Windows and Cygwin with C++ and Python will work as well. You will
probably encounter significant difficulty trying to get Visual Basic to
work in this application.

I will paly with it on Windows with UHD, and C++. I will use Visual C++
to make
GUI and code.

The USRP is not going to give you bytes of user data, it’s going to give
you (almost) raw samples as received from the air after downconversion
from 433MHz. As a result, it is up to you to perform the following tasks
to get your data back:

  • Coarse frequency estimation
  • Demodulation
  • Preamble detection
  • Fine frequency synchronization
  • Symbol synchronization
  • Symbol slicing
  • Framing

Wow, quite many things to do. OK, it will give me samples of the
received signal
that I will have to interprete, meaning to use some GNUradio functions
to
process those raw samples (like demodulation). Anyway it’s quite
difficult to
imagine how usefull data will be extracted from signal samples. I
suppose I
would have to know what I’m expecting, to be able to identify my data
between
those raw samples.

Gnuradio provides blocks to help you with most of these tasks, but
you’ll have to understand their basic operation in order to use them. I
recommend a good digital communications textbook for the theory and
discussion of the above operations: I found Sklar’s “Digital
Communications” to be pretty helpful.

Yes, I know there are many books related to digital communications, I
have a lot
of books, each one full of formulas, that doesn’t help me very much, I
would
like to understand the whole process from the point of view more close
to
GNURadio, and programming.

For an example of a simple GMSK receiver, you can check out the AIS
receiver I wrote at https://www.cgran.org/wiki/AIS . It’s a pretty
simple receiver example which gives an example of how Python and C++
interact in Gnuradio, and how the various components of a complete
receiver are written in Gnuradio-land. There are other applications
doing similar things in the Gnuradio examples. gr-pager is one that
comes to mind.

Thank you very much. I’m used to software development (FPGA,
microcontrollers,
etc.) so I will learn much more from source code than any other place,
to tell
you the truth I hate those books full of math formulas, maybe it make
sense for
those working on telecommunication field, but not to me. Thank you again
for the
examples.

The API documentation is the first place to look, along with the
examples we include in UHD. For your application, though, it sounds like
you’ll want to use UHD with Gnuradio, so the Gnuradio examples are your
best bet for seeing how implementations are done in the “real world”.

Thank you very much.Gunther Ferdinand.


From: Nick F. [email protected]
To: Gunther Ferdinand [email protected]
Cc: [email protected]
Sent: Sun, April 10, 2011 4:33:52 PM
Subject: Re: [Discuss-gnuradio] FSK and GFSK signal decoding

On Sun, 2011-04-10 at 03:49 -0700, Gunther Ferdinand wrote:

any help file with some explained examples. What could be easyer, to
make some application (in C++, VisualBasic, etc.), to use Python or
other solutions. Anyway when we will get data into the PC we need to
do some math operations and display it.

From a development perspective, you’re probably best off in Linux, but
Windows and Cygwin with C++ and Python will work as well. You will
probably encounter significant difficulty trying to get Visual Basic to
work in this application.

So, the biggest problem is that we don’t really understand how we
could get that data. We have that module that sends some packets. If
we set the USRP1 through UHD to 433MHz (what other parameters should
we set), when it will receive some RF signals it will starts to pass
it to the application (run with python or made with other development
softwares). The USRP will send some data (byte 1; byte 2; byte
3; … ) as many as it receives. From that data we will get out our
DATA and check CRC, HEADER, etc.

The USRP is not going to give you bytes of user data, it’s going to give
you (almost) raw samples as received from the air after downconversion
from 433MHz. As a result, it is up to you to perform the following tasks
to get your data back:

  • Coarse frequency estimation
  • Demodulation
  • Preamble detection
  • Fine frequency synchronization
  • Symbol synchronization
  • Symbol slicing
  • Framing

Gnuradio provides blocks to help you with most of these tasks, but
you’ll have to understand their basic operation in order to use them. I
recommend a good digital communications textbook for the theory and
discussion of the above operations: I found Sklar’s “Digital
Communications” to be pretty helpful.

For an example of a simple GMSK receiver, you can check out the AIS
receiver I wrote at https://www.cgran.org/wiki/AIS . It’s a pretty
simple receiver example which gives an example of how Python and C++
interact in Gnuradio, and how the various components of a complete
receiver are written in Gnuradio-land. There are other applications
doing similar things in the Gnuradio examples. gr-pager is one that
comes to mind.

A help file would be very helpfull. Till now we have worked with
many development softwares and with each one there were some kind of
help files for beginners like us, to understand the basics. The
problem is that we don’t really undestand how UHD works, how could we
use it with a VisualBasic environment for example. There’s any such
kind of help file or some web pages?

The API documentation is the first place to look, along with the
examples we include in UHD. For your application, though, it sounds like
you’ll want to use UHD with Gnuradio, so the Gnuradio examples are your
best bet for seeing how implementations are done in the “real world”.

–n