gnuradio, demodulate fsk received from an rfm12b

I’ve been working on reverse engineering the radio signals used by some home energy monitoring plugs. At the beginning, I thought it would be as easy as buying some 433MHz transceivers and reading the data off the air! After the transceivers arrived and were getting nothing I asked the bristol hackspace mailing list for some help.

Thanks to Nathan’s pointers about my radio being too ‘clever’ to be able to pick up another radio’s signal (unless all settings were perfect), and suggestion of using his SDR, I decided to invest in one myself. A post by Tomaž Šolc was also very useful in understanding how SDR could help with finding the signal and working out what the modulation type was.
SDR stands for software defined radio, and it’s recently become very popular when Antti discovered a very cheap radio chip could potentially do SDR. What it allows us to do is create a radio receiver defined in software instead of hardware. We can then progressively build a radio that can receive the signal we’re looking to decode. Here’s what my basic radio looks like so far:
I’ve had to take a lot of steps backwards to get a better understanding of how these little modules do radio, but I had my first success today! I set up a 433Mhz radio I already know how to use, and started transmitting a small packet every 200ms using the jeelib rfm12 library.
Then using a gnuradio patch and the SDR, managed to find the signal, identify the modulation, demodulate it and check that the packet is what I expect.

Here we can see the first 3 bytes are 0b10101010, and the data byte is the 0b11111111 towards the end of the packet.

The next step is to capture some packets from the energy monitors and then try and work out the format of the data packets. Watch this space!

One thought on “gnuradio, demodulate fsk received from an rfm12b

Leave a Reply

Your email address will not be published. Required fields are marked *