ektologo

Signal Intelligence - Where the magic happens

by [Gero]

The purpose of this post is to begin with an unknown signal and identify its main characteristics. Along the way, we will likely consider and discard various hypothesis, ultimately focusing on a specific type of signal.

Disclaimer: This is not meant to be a comprehensive guide on working with all types of signals, but rather to provide an understanding of the necessary process to deal with them.

I will start from a given IQ from which we only know that the samples are record in C32 format. I do not have information about the sample rate, modulation, or any other characteristic of the signal. So, we will start by assuming some details to be able to begin working. (We are currently working on a detailed post about IQ format)

As we are working in the digital domain, after the ADC, there is no need to know the "real physical" sample rate. Instead symbol rate, we can work with "samples per symbol".

Ok, lets start now, first step is to Inspect the File, in my case I have this IQ as an example :

Recap: Up to now, we know that we are working with a packetized communication and that the signal is FSK modulated.

Next step, could be to find the samples per symbol or SPS relation. Where:

SPS = symbol rate / sample rate

There are couples of way to find it, but lets go with the easiest and simpler one just to have an approximated idea.

Lets use the QT GUI Frequency Sink from GNU Radio. (you can use the same flowgraph showed before but just leaving this particular sink)

gnu_frequency_sink_plot

We can do a visual inspection of the this plot and try to estimate how much of the spectrum is being used by our signal. It is not easy to find a exact value but doing an approximation we can say that the signal goes from -0.06Hzto 0.04Hz so it occupies around 0.10Hzof an spectrum of 1Hz. This is the same of saying that:

bandwidth = symbol rate = 1/10 and therefore : SPS = 10

Ok, we have a possible value for the SPS but we canĀ“t guarantee that is the correct one. Moreover, I am pretty sure that it is not correct because in our assumption we are not considering the deviation that the modulation could have. To be closer to the right value we should consider Carson's Rule and it is a bit more complicated.

I prefer to go in another direction. So what we can do now, is try to demodulate the signal and see what we find.

At this point, we have already learned how to detect the packet and how to identify the bytes, so we can say that our objective was accomplished. A new post on how to decode a packet will be release soon to continue with the last steps. In the meantime I will recommend you to take a look in gr-satellites repository, if you have luck you will find the path already solved there.