# Decoding FSK modulated signal

**URL:** <https://www.ruby-forum.com/t/decoding-fsk-modulated-signal/240439>\
**Category:** GNU Radio\
**Created:** [April 14, 2014, 1:27pm UTC](https://www.ruby-forum.com/t/decoding-fsk-modulated-signal/240439 "2014-04-14T13:27:38Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![musicdenotation](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ea666f/32.png) [@musicdenotation](https://www.ruby-forum.com/u/musicdenotation)\
**Post date:** [April 14, 2014, 1:27pm UTC](https://www.ruby-forum.com/t/decoding-fsk-modulated-signal/240439/1 "2014-04-14T13:27:38Z")

</div>

Hey,

I’ve some home automation equipment here using the sub-ghz band that I  
managed to capture with a RTL dongle. From the data sheet and the  
register settings of the TI CC1100 transceiver chip that is used inside  
the device I figured out the RF parameters used, i.e. 102kHz channel  
bandwidth, 2-FSK modulation, 19.2k baudrate, syncbyte etc.

Attached is a screenshot of a GRC waveform I used to capture the  
preamble of a single packet. Channel 2 is simply the output of a  
quadrature demod block connected to a scope GUI block. I’d like to  
decode that into a sequence of bits to run preamble detection etc.

I’ve seen a few OOT modules that do similar stuff but was wondering if  
there is a GR’ish way to this, maybe a set of generic blocks that could  
be used for that?

Thanks  
Andre

[1] [http://i61.tinypic.com/35mjm08.png](http://i61.tinypic.com/35mjm08.png)

---

<div class="post-metadata">

**Author:** ![aap](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/82dd89/32.png) [@aap](https://www.ruby-forum.com/u/aap)\
**Post date:** [April 14, 2014, 5:43pm UTC](https://www.ruby-forum.com/t/decoding-fsk-modulated-signal/240439/2 "2014-04-14T17:43:20Z")

</div>

On Mon, Apr 14, 2014 at 01:25:48PM +0200, Andre P. wrote:

> Attached is a screenshot of a GRC waveform I used to capture the  
> preamble of a single packet. Channel 2 is simply the output of a  
> quadrature demod block connected to a scope GUI block. I’d like to  
> decode that into a sequence of bits to run preamble detection etc.
> 
> I’ve seen a few OOT modules that do similar stuff but was wondering if  
> there is a GR’ish way to this, maybe a set of generic blocks that  
> could be used for that?

It looks like you are on the right track! For the next steps, I  
recommend a low pass filter (with perhaps 20 kHz cut-off) followed by  
M&M clock recovery and binary slicer. Check out the recent “ASK  
demodulation help” thread for more details. Try setting the decimation  
of the LPF to something that gives you 2 to 5 samples per symbol.

Your graph looks like the preamble is at about 1.92 kbps, not 19.2 kbps,  
so I suspect that you have an error somewhere in your sample rate  
configuration.

Mike

---

<div class="post-metadata">

**Author:** ![aap](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/82dd89/32.png) [@aap](https://www.ruby-forum.com/u/aap)\
**Post date:** [April 14, 2014, 9:01pm UTC](https://www.ruby-forum.com/t/decoding-fsk-modulated-signal/240439/3 "2014-04-14T21:01:00Z")

</div>

On 04/14/2014 05:40 PM, Michael O. wrote:

> It looks like you are on the right track! For the next steps, I  
> recommend a low pass filter (with perhaps 20 kHz cut-off) followed by  
> M&M clock recovery and binary slicer. Check out the recent “ASK  
> demodulation help” thread for more details. Try setting the decimation  
> of the LPF to something that gives you 2 to 5 samples per symbol.

Hi Mike,

thanks! That’s exactly what I was looking for. I think I have to play  
around with the synchronizer settings but the results are already quite  
promising.

I’ll keep you updated.

Thanks again  
Andre
