I have bought a set of 433 MHz transmitters (XY-FST) and receivers (XY-MK-5V)

The only way I got reliable readings out of them so far was with the pigpio library (rpi-rf for Python and 433-utils didn't work and I don't know if they would have this issue that this post is about)

I also want to use the Neopixels library (WS2812B strips) in this project. They are to be controlled with a 433 MHz remote. pigpio and Neopixel library don't seem to go together well, because both of them use the hardware PWM module, if I understood correctly

I have thrown everything into a Python script and it works until the neopixel library sends it's first update command to the strip. Then the receiving stops

The only idea I have right now is to offload the control of the pixels to another piece of hardware, be it another Pi or Arduino or whatever. Maybe communicating via I2C or for simplicities sake via MQTT as that will be part of the project anyway

Where do I go from here? Is the hardware solution above the only one? Is there another reasonably convenient way to control the pixels?

To boil it down to one question: what is the easiest way to combine 433 MHz receiving and LED strip control in one project?


  • One option I would just like to mention is to use WS2801 LEDs, because they use SPI and not PWM
    – Sandro
    Apr 1, 2022 at 10:30

2 Answers 2


pigpio uses at least one of the PWM or PCM peripherals for timing purposes. It uses both of the peripherals if pigpio waves or the hardware PWM function are being used.

In your case you are transmitting 433 radio and that uses pigpio waves (receiving 433 radio does not use waves).

So you are stuck with the conflict.

  • Oh, that's interesting! All I really need, when I am past the test setup I have right now, is the receiver. You are saying that it might/should work when I only combine neopixels and a 433 receiver? Do I have to change anything?
    – Sandro
    Mar 31, 2022 at 19:35
  • All you need to do is make sure the neopixel code and pigpio are using different peripherals. By default pigpio will be using PCM. If needed you can select PWM via a configuration option,
    – joan
    Mar 31, 2022 at 20:59
  • Alright! 1. I tried without sending and it works like a charme! 2. From what I could gather pigpio uses PCM by default, Neopixels probably uses the PWM peripheral by default. At least in the rpi_ws281x library, it is possible to change which peripheral to use for driving the LEDs. Not sure how neopixels and rpi_ws281x relate though. I can confirm that switching to PWM for pigpio (sudo pigpiod -t 0) messes things up again and the LEDs go crazy. Receiving still works though, whereas that stopped before Thanks Joan
    – Sandro
    Apr 1, 2022 at 10:28

Unless you understand how signal modulation works, those bare radios will bring you nothing but pain. Go for something with a UART interface: there are Bluetooth radios such as HC-05/HC-06 and a whole bunch of custom radios, e.g. HC-11/HC-12. With UARTs you can at least deal with complete bytes, and not to debug the transmission on bit level.

  • Thanks Dmitry. 433 MHz is a given though, because I want to replace existing electronics without changing the human interface (which contains a 433 MHz remote). Thanks for Joans awesome work though, I believe I won't have to dive into the nitty gritty of signal modulation. Or do I?
    – Sandro
    Mar 31, 2022 at 19:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.