Home / Peripherals / RMT (IR & WS2812)

ESP32 RMT Guide: Infrared, WS2812 LED Strips and Pitfalls

RMT is the most underrated ESP32 peripheral: IR remotes, WS2812 strips and one-wire sensors all depend on it. Channels, resolution and the Wi-Fi interference problem.

What RMT is for

RMT (Remote Control) was designed for infrared remotes, but really it is a programmable precision waveform generator. It emits arbitrary high/low sequences at ~12.5 ns resolution and does so without the CPU — you write the data to memory and the hardware plays it out while the core does something else.

Besides IR it is now the standard way to drive:

Channels and resolution

ItemOriginal ESP32Note
Channels8Shared between TX and RX
Clock source80 MHz APB≈12.5 ns per tick
S2 / S3 / C3 / C6 / H2 / P4Verify against official docs (counts differ; C3 has notably fewer)
Check the documentation for channel counts: they vary a lot between chips, so only the original ESP32 figures are stated here.

The big one: Wi-Fi makes your LEDs flicker

WS2812 timing is tight (a "0" bit is about 0.35 µs high). While Wi-Fi is active the radio briefly stalls the bus and delays the interrupt that refills RMT memory, stretching a bit — which shows up as randomly wrong colours or a flickering strip.

Common mitigations:

Other gotchas

Data verified:2026-10-20 · Cross-checked against Espressif documentation. Anything that varies between chips or ESP-IDF releases is marked rather than guessed. Official peripheral docs →

Related