ESP32 Arduino framework: esp32_rmt_led_strip fails with multiple SK6812 strips – working setup using neopixelbus

Hi all,

I want to share my specific setup and outcome, in case it helps others or if somebody can help me to get the best practises implemented.

My setup:

  • ESPHome 2025.11.5
  • ESP32 (Wemos D1 Mini ESP32)
  • 5 × SK6812 RGBW LED strips (GRBW)
  • Each strip on its own GPIO
  • Hardware RMT intended (not bit-banging)

Code with esp32_rmt_led_strip

 light:
   # ZIJDE 1 (GPIO 16)
   - platform: esp32_rmt_led_strip
     chipset: SK6812
     id: lightvoor
     pin: GPIO26
     num_leds: 12 
     rgb_order: GRB
     is_rgbw: True
     rmt_symbols: ${rmt_symbols}
     name: "Zuil 4 - voor"
     default_transition_length: 0s
 
   # ZIJDE 2 (GPIO 17)
   - platform: esp32_rmt_led_strip
     chipset: SK6812
     id: lightlinks
     pin: GPIO18
     rgb_order: GRB
     is_rgbw: True
     num_leds: 12 
     rmt_symbols: ${rmt_symbols}
     name: "Zuil 4 - links"
     default_transition_length: 0s
 
   # ZIJDE 3 (GPIO 18)
   - platform: esp32_rmt_led_strip
     chipset: SK6812
     id: lightachter
     pin: GPIO19
     rgb_order: GRB
     is_rgbw: True
     num_leds: 12 
     rmt_symbols: ${rmt_symbols}
     name: "Zuil 4 - achter"
     default_transition_length: 0s
 
   # ZIJDE 4 (GPIO 19)
   - platform: esp32_rmt_led_strip
     chipset: SK6812
     id: lightrechts
     pin: GPIO23
     num_leds: 12 
     rgb_order: GRB
     is_rgbw: True
     rmt_symbols: ${rmt_symbols}
     name: "Zuil 4 - rechts"
     default_transition_length: 0s
 
   # ZIJDE 4 (GPIO 19)
   - platform: esp32_rmt_led_strip
     chipset: SK6812
     id: lightboven
     pin: GPIO5
     num_leds: 14
     rgb_order: GRB
     is_rgbw: True
     rmt_symbols: ${rmt_symbols}
     name: "Zuil 4 - boven"
     default_transition_length: 0s

Problem:
Using esp32_rmt_led_strip, the last light consistently failed at boot with:
esp32_rmt_led_strip.light is marked FAILED: unspecified
(tried everything with rmt_symbols 32/48/64/92)

This happened without compile errors and regardless of GPIO choice or LED count.

Working solution:
I switched to neopixelbus, still using ESP32 RMT, with fixed RMT channels per strip.

light:
   # ZIJDE 1 (GPIO 16)
   - platform: neopixelbus
     id: lightvoor
     type: GRBW
     variant: SK6812
     method:
       type: ESP32_RMT
       channel: 0
     pin: GPIO26
     num_leds: 12
     name: "Zuil 4 - voor"
     default_transition_length: 0s
 
   # ZIJDE 2 (GPIO 17)
   - platform: neopixelbus
     id: lightlinks
     type: GRBW
     variant: SK6812
     method:
       type: ESP32_RMT
       channel: 1
     pin: GPIO18
     num_leds: 12
     name: "Zuil 4 - links"
     default_transition_length: 0s
 
   # ZIJDE 3 (GPIO 18)
   - platform: neopixelbus
     id: lightachter
     type: GRBW
     variant: SK6812
     method:
       type: ESP32_RMT
       channel: 2
     pin: GPIO19
     num_leds: 12
     name: "Zuil 4 - achter"
     default_transition_length: 0s
 
   # ZIJDE 4 (GPIO 19)
   - platform: neopixelbus
     id: lightrechts
     type: GRBW
     variant: SK6812
     method:
       type: ESP32_RMT
       channel: 3
     pin: GPIO23
     num_leds: 12
     name: "Zuil 4 - rechts"
     default_transition_length: 0s
 
   # ZIJDE 4 (GPIO 19)
   - platform: neopixelbus
     id: lightboven
     type: GRBW
     variant: SK6812
     method:
       type: ESP32_RMT
       channel: 4
     pin: GPIO5
     num_leds: 14
     name: "Zuil 4 - boven"
     default_transition_length: 0s

I assigned channels 0–4 to the five strips.

Result:

  • All 5 LED strips initialize correctly
  • No FAILED components
  • Stable operation

This still uses hardware RMT, just via neopixelbus instead of esp32_rmt_led_strip.

Is there a way to achieve this same RMT channel sharing and allocation control using the native esp32_rmt_led_strip platform? I would prefer to use the native component if possible.

Can you find evidence that they are valid parameters on rmtls?

Hi Karosm,

Thanks for your reply.

rgb_order: GRB
In the documentation i cannot find these parameters, but in the ESPhome code editor it lights up as a problem if you Do Not set this parameter.

is_rgbw is documented: ESP32 RMT LED Strip - ESPHome - Smart Home Made Simple

You are right, ignore my previous comment (it was time to bed)…
Can you try just with 4 lights?

Hi,

No worries, four works.

Grtx Marcel

So I think you are limited to 4 rmt tx channels . Did you try with IDF?

Also, do you use other rmt components on your configuration? Esp has only 8 RMT channels in total…

Hi,

No other rmt components. In my knowledge an esp32 has 8 RMT channels. Should be because the neopixel component works with 5.
Yes olso tried idf, exactly the same problem.

Grtx Marcel

I think you should debug this on IDF in any case. Maybe you get some more specific error.