SDR

For the last few years I’ve had a Davis Vantage Vue weather station. It’s been great though getting the data in a useful format is far from easy.

Following our recent move the weather station needs to be relocated. It’s new home will be more exposed and as we’re still building the house there isn’t anywhere convenient to locate the large weather station base unit or associated pieces to upload the data. This has led me to reconsider how I extract the data and process it with a view to finding a smaller, neater solution that can live in a small waterproof enclosure 🙂

As I already have a Raspberry Pi that I have been using my first approach has been to use an SDR with the Raspberry Pi to simply intercept and decode the wireless transmissions from the weather station. This seems simple enough when you say it, but as I had no experience with SDR I wasn’t sure how possible this would be. Web searches soon showed that it appeared possible with projects such as rtldavis (bonus as it’s written in Go) pointing the way. Emboldened by these results I did some research and ordered an SDR based on the popular RTL2832U chipset (https://www.rtl-sdr.com/buy-rtl-sdr-dvb-t-dongles/). Then I waited for it’s arrival…

After the SDR arrived I unpacked and plugged it into the laptop. Installing librtlsdr proved simple enough via apt and then I grabbed a copy of rtldavis. Building proved very simple but when I ran it no data was seen…

A quick review showed that rtldavis was looking for US frequencies but my Vantage Vue was a UK model with the smaller number of UK/EU frequencies (the station broadcasts using FHSS to minimise the chances of interference). I made the changes advised and ran it again. Still no data. This was a little disappointing but not totally unexpected.

There isn’t much information directly available from Davis about their RF protocol, but various people have done a lot of work to decode it.

Before going much further with my experiments I wanted to ensure that I could see the data and confirm the frequencies were correct, so I looked for a sepctrum analyzer that could help, eventually finding urh. While designed for remote controls it worked with the SDR and proved simple enough to operate.

The spectrum showed clearly 5 spikes corresponding to the 5 frequencies I was expecting to see. Analysing the data in urh provided me with a bitstream but the preamble didn’t match the one I was expecting.

Thus far I know my dongle can see the transmissions, but how I go about extracting the data is still not as clear as I would like. Suggestions welcome!