Testing CC1101 vs SX1278 reception on ESP32 + RTL_433 FSK

I’ve built 3 different ESP32 + OMG combinations and a Raspberry Pi Zero running RTL_433, to test my Ecowitt FSK temperature sensors (one WH32_EP outside and one WN34L inside, both 433MHz).

  1. The Pi is running RTL_433 with a USB SDR radio, using a magnetic-base omnidirectional antenna:

  2. ESP32 + CC1101 with a coil antenna:

  3. ESP32 + CC1101 with a rubber ducky antenna:

  4. ESP32 + SX1278 (AiThinker Ra-02) with a magnetic-base omnidirectional antenna:
    41FmdAioUkL.AC

Comparing the performance of these, I see that the CC1101 with the coil antenna is surprisingly doing the best. The SX1278 performs the worst (I tried switching the omnidirectional antenna with the rubber ducky but it still performed the worst).

Reliability of reception with the same outdoor sensor:

Reliability of reception with the same indoor sensor:

Thanks @NorthernMan54 for getting FSK to work with rtl_433_ESP. Last time I tried this a couple years ago, it wasn’t working, but looks like the CC1101 + coil antenna can safely replace my Pi + SDR setup. I’m surprised the SX1278 didn’t do better considering its fancier antenna, but I haven’t actually tested the viability of these antennae with Nanovna (nor would I know how to).

7 Likes

This is a really interesting work thank you! I too am trying to get FSK demodulation working on an ESP32 with the CC1101 however there doesn’t seem to be any documentation how to do this via the console or MQTT as far as I can see. How did you manage to achieve it?

Welcome @Vinblastine

Which binary did you install on your ESP32 with the CC1101 connected, and which version of OpenMQTTGateway?

And which device are you trying to receive and have decoded?

Thanks for getting back to me. So I initially tried esp32dev-multi_receiver 1.70 and then the esp32dev-rtl_433 1.7 from the web upload.
I have today tried the “Build from web” with the esp32dev-rtl_433 about an hour ago.
I am trying to decode a simplisafe v3 door contact sensor. Its listed on @NorthernMan54 rtl_433_ESP page as " Registering protocol [58] “SimpliSafe Gen 3 Home Security System” so I think it should be supported. What I think I am struggling with is change the modulation from OOK to FSK. (Or even if that is possible after the build process)
I can see the CC1101 ignoring the FSK signals via serial connection.

I would suggest you try the esp32dev-rtl_433 binary of the current development version.

Then you should be able to set the FSK modulation in the WebUI.

Sorry, my bad, the OOK/FSK switching is actually not possible in the WebUI.

Can you try the “Build from web” with the esp32dev-rtl_433 option, but also add the FSK required build_flag to the esp32dev-rtl_433 environment:

…
'-DOOK_MODULATION=false' 
…

which makes the FSK modulation activated.

1 Like

Ah! I was going to say I have just installed the dev version and couldn’t see it in RF configuration. Is it possible to set it via MQTT command or does it have do be done during the build process?

I have just seen your reply! Thanks I will give it a go.

I’ve been trying to find the best CC1101 antenna for FSK and bought like 6 different ones.

I have the original coil one I got from Amazon 2 years ago (SOLU is the brand). I got 2 more of them last month. I bought one with an SMA connector and antenna from AliExpress. I bought 2 from Tindie with SMA connectors and a high gain antenna.

Surprisingly, the old SOLU coil one does much better than the others every time.

  • The new SOLU ones look darker, the coil is less shiny, and the solders look cold, but otherwise identical to my older one, but perform markedly worse.
  • The SMA one from AliExpress is terrible
  • The SMA ones from Tindie have highest RSSI but still have twice as many missed signals as the original coil one

I even tried soldering my own straight wire 17.3cm antenna to one of the SOLU ones and it still did worse than the original SOLU. At a loss with this magic CC1101 I can’t seem to replicate

CC1101 antenna

Inspired by this text, I have removed the cover from the Aliexpress antenna and stretched the copper coil a little. The reception of stations is more frequent and better. Maybe it’s just a coincidence that the antenna is now better aligned. Perhaps the coil coating is not optimal and shortens the antenna in the original.

I opened up the Aliexpress antenna too, and inside it found… a very short piece of stranded wire. No coil or anything. It’s hilarious

1 Like

I have been experimenting with receiving data from Ecowitt WN32 and WN31 temperature / humidity sensors. I have been using an 868 MHz CC1101 module connected to an ESP32 WROOM board. I got it working using the RTL_433_ESP library. The range is terrible - just a couple of metres with the helical wire antenna supplied with the module. I managed to increase this to about 8 metres using a 1/4 wave monopole antenna (82 mm copper wire). I spent some time trying different settings, but I can’t improve upon:

frequency: 868.35 Mhz
receive bandwidth: 270 kHz
bit rate: 17.2 kHz
frequency deviation: 33.5 kHz

I suspect that the poor range is due to the CC1101 module.

I get at least 100 metres range using the Ecowitt gateway but I’d rather not have this connected to my home network for security reasons.

I think I’m going to switch to the Ecowitt gateway (GW1200) based on your experience. Tired of battling the CC1101, though I got a pretty good experience with the EBYTE SMA-connector CC1101 and the EBYTE TX433-JKD-20P antenna. I’ll see if the Ecowitt gateway can surpass its performance and decide on one of those at the end.

The gateway definitely gives better performance. The issue for me is that I don’t like having hardware with questionable security logged into my home network. If that is not a problem for you then the simplest solution and best performance is with the gateway.

https://pizzapower.me/2022/06/30/the-incredibly-insecure-weather-station/

It is just an ESP32 in there. I’d say just deny it WAN access and let HA read it locally and be done with it. At least that’s what I’ll try to get going once mine is delivered

Thanks for the link, that’s hilarious. I am glad they didn’t pull what some other companies do and encrypt the MQTT messages and send them to their own servers on the other side of the world, making local API access impossible.

1 Like

Let us know how it goes. I am looking at using the RFM69 transceiver module. I read a report of someone getting the best range with their sensors using that instead of a CC1101.

For a Davis weather station:

https://github.com/dekay/DavisRFM69

EDIT

A bit more searching, and it looks like Ecowitt (or Fine Offset) use a RFM22 transceiver module in at least one of their weather stations, and transmissions can be picked up with an RFM69. There is good information here:

https://www.sevenwatt.com/main/category/weatherstations/

To follow up on my last post. I have been experimenting with an RFM69HCW module. I get much better reception of the Ecowitt sensors than with a CC1101. I have one of the temperature/humidity sensors in a louvred aluminium radiation shield about 15m from the radio module and get -70dB. Line-of-sight in free air, I reckon I would get 100m range - similar to an Ecowitt gateway.

Obviously I am not using the RTL_433_ESP code as it not compatible with this transceiver. Instead,I hacked together some code using Radiolib.

Transceiver settings:

FREQUENCY 868.35 MHz
BIT_RATE 17.2 kHz
BANDWIDTH 250 kHz
FREQUENCY_DEVIATION 33.5 kHz
PREAMBLE_LENGTH 32 bits