I have been trying to demodulate a GFSK signal for months now using GNU Radio with USRP B210. Unfortunately, I haven't found even a single decent book on GNU Radio and hence most of my references are based on some random websites including the official GNU Radio page.
The GFSK signal comes from a cubesat in the lab. At the moment, it is transmitting a '10101010 ...... ' test signal. The GFSK modulation index used is 0.6667 and the data rate is 9600 bps. My flowgraph, as shown in the diagram below, uses the GFSK demod block, which apparently doesnt have any documentation except its source code. Sensitivity is set at pi * modulation_index/samples_per_symbol. I have recorded a number of files sampled as 10x 20x 40x 80x and 160x the baud rate (9600). In both of these files, I was able to receive repeated groups of 0x55 and 0xAA as expected.Unfortunately, these groups were accompanied by some random bytes which I have no idea as to where they are coming from[my first guess is noise].
Serendipitously I was able to get a very decent output when I shifted the received signal from the USPR by 1000hz using frequence xlating fir filter for the signal that was sampled at 40x. Here is where some funny behaviors of gnuradio comes along. I use the slider to control the center frequence of the xlating filter so as to be able to change it from its default value (1000hz) to whatever value I want during runtime. When I change the value, the signal becomes less decent i.e. bit swapping, random bytes addition etc. I was expecting the signal to go back to normal when I slide back to 1000hz, which is quite weird.
Could anyone tell me why this happens? My flowgraph is given below. Feel free to point out errors that I have overlooked so far.
xlating fir filter taps : firdes.low_pass_2(1,samp_rate,cut_off, xlating_bw, xlating_attn)