Rogue 433MHz Transmitter

There’s a rogue transmitter broadcasting a carrier signal on 433.92Mhz somewhere in my neighbourhood. It went on the air around 4:15am yesterday. How do I know?

Well, you remember my temperature/humidity sensors for my seedlings I wrote about a few days ago? I already have an entirely different system working. A few years ago I bought a three remote weather station. It came with three battery powered temperature/humidity sensors which periodically transmit their readings on 433MHz to a base station. This was handy for monitoring, but not automation. Then, I discovered with an inexpensive RTL-SDR dongle (these originally began as USB HDTV receivers, but the open source/hacker community quickly realized they could be used as general purpose radio receivers and wrote some pretty cool software to use them for all sorts of great things.) I could receive the signals from my sensors on my computer! Eventually I had it all working great. The software I was running is called, simply, rtl_433, and it receives messages on 433MHz, decodes them, and sends them to my mqtt broker. Very occasionally something would jam up rtl_433 and I would have to kill -9 it and restart it. That hadn’t happened for a very long time, but when I got my notification from Home Assistant that all three of my sensors hadn’t reported in for 10 minutes I assumed it was simply the software. I restarted it. It still received nothing. I stopped it, unplugged the USB SDR dongle, waited a few seconds, plugged it back in and restarted rtl_433. Again, it reported finding the dongle fine, but never received any data. Well, that dongle has been running non-stop for around 4 years, now, so I figured it must have just died. Obviously the logic part was still working, but maybe something in the radio front-end had quit. So, I overnighted a replacement. (and upgraded to a newer, better model.)

It arrived. I plugged it in. The Kernel found it.

But it still didn’t work. Now I was confused. After a few more random plugs, unplugs and restarts I decided to try another way to determine if the dongle was even working. I downloaded Gqrx, an SDR software package I had played with when I first got this thing. I had changed computers since then, but I brought over my home folder, so all my old config files were still there. I started Gqrx and it opened up and let me listen to a local FM radio station. (which must be the last thing I did with it way back when.)

Obviously the new SDR dongle was fine. I tried the same thing with the old “dead” one, and it also worked just fine. Now it was time for an internet search. “rtl_433 suddenly stops working”. And I actually found a thread from three years ago that sounded a lot like my situation. In that case, the helpful people had the OP use his SDR software to tune 433.92 and see what the spectrum looked like. It turned out there was a constant carrier signal at 433.92 which was swamping all his sensor signals. He took his laptop out of town along with one sensor, and discovered it still worked fine there. He came back in and started looking around for the rogue* device (driving the neighborhood) when it suddenly went away and everything just started working again. This thread took place across two days. What are the odds?

*Why do I refer to it as a “rogue” device? 433MHz is a public unlicensed band. (please don’t quote me on any of this, I could be wrong on some of the details.) You are allowed to broadcast at this frequency below a certain power but only for intermittent use.

Unfortunately, there exists some ultra-cheap hobbyist 433MHz modules which simply broadcast when the pin is high and stop when the pin is low. Hooking this up wrong to a raspberry pi or arduino type project could easily cause this problem. (Please, if you want to build a cheap RF project, use an NRF24L01 module. They are way more capable and they usually play nice with other 2.4GHz devices.)

Anyhow, I tuned Gqrx to 433.920 and, sure enough, there’s a carrier there. I can clearly see activity when my sensor tries to transmit, but with a constant carrier interfering rtl_433 is just not able to decode the messages from my sensors.

So, will I get lucky like the guy from 2021 and the neighbour with a bad 433 Arduino project will turn it off soon? Or will I forever lose my ability to use 433MHz the way I was using it?

Fortunately, the I2C sensors I wrote about a few days ago should arrive this week, so I’ll be able to switch over entirely to Wifi/Tasmota. I also have a spare (or, maybe two) RTL-SDR dongles I’ll have to find a use for. Maybe an ADS-B receiver is in my near future.


Leave a Reply