Saturday, May 12, 2012

GFSK Crash Course

Z-Wave Is a wireless protocol used to connect devices in the home wirelessly. For example remote lighting, remote outlets, dimmers, and more. It uses a sort of FSK modulation to transfer data between nodes.

I've chosen Z-wave as a starting point in familiarizing myself with GNU Radio, FSK, and Manchester encoding.

Thus far I have been able to capture a signal from my Z-wave transmitter, convert it down to base band, and "hear it". At this point I'm trying to come up with A GNU Radio flow graph that can splice the bits into an ASCII stream.

 GNU Radio flow graph so far... Only using a quadrature demod.
GRC File: link

GNU Radio FFT plot showing a few peaks.

Scope plot, showing the preamble, data, and what may be a post-amble 

Now I just need to figure out what flow graph I need to decode the bits!


  1. Hi,

    Thanks for posting this. Can you please share the parameters you used for the xlate_filter_taps variable?


  2. firdes.low_pass(1, samp_rate, 125000, 25000, firdes.WIN_HAMMING, 6.76)

  3. Have you made anymore progress on this? It's very interesting.


  4. I got a bit stumped trying to figure out trellis decoders in Gnuradio. I wish they were documented better. I was thinking of trying what Kevin did in his approach to the 433 Mhz weather station transmitter (

  5. Cool, I ran into that myself while searching around for information. And I feel ya, the closed nature of ZWave is frustrating.

    Care to share your GNURadio project file? My coworker wrote code that interprets ZWave frames, etc. He might have some insight.

  6. my Hi Nicholas, my gnuradio project is pretty lame, I basically took the signal, downsampled it and applied a quadrature demodulator (like FM demod). At that point it was just baseband audio so I sent it to a wav file. Then I used a sound editor app to visualize the wave (and take the attached snapshot). I'll dig up the actual GRC and attach it to the article too.

    I'm very interested in learning more about your coworker's success with frame decoding. There are z-wave spec documents out there too, let me know if you have any trouble finding them and I can send a link. Feel free to email me directly at gmail - linuxbrad.

  7. This will help!