Hardware Matrix

Is WS2812B Addressable RGB LED Strip Compatible with Home Assistant (ESPHome)?

Verdict Badge
VERDICT: [ COMPATIBLE (MANUAL CONFIG REQUIRED) ]
Protocol: GPIO RMT / 3.3V to 5V Level Shift
Bridge Needed: NO

Variants covered by this page

LED strip (ESP32-S3) WS2812B Addressable RGB LED Strip
Interface: GPIO RMT / 3.3V to 5V Level Shift
Platform: Home Assistant (ESPHome)
5V power supply for LED strip; GPIO16 data output (74HCT125 level shifter to 5V recommended).
LED ring (ESP32-C3) WS2812B RGB LED Ring
Interface: GPIO RMT / 3.3V
Platform: Home Assistant (ESPHome)
5V power for LEDs; GPIO8 data signal.

Electrical Specifications

Always confirm pin assignments against the manufacturer datasheet before wiring.

Not yet documented. Electrical specifications for this device have not been confirmed against a manufacturer datasheet, so none are shown here rather than showing estimates. Submit verified specifications if you have the datasheet to hand.

Compatibility Overview

High-speed addressable RGB LED driver leveraging ESP32-S3 RMT hardware peripherals for smooth ambient lighting and animations.

Wiring WS2812B Addressable RGB LED Strip to ESP32-S3

Module pin ESP32-S3 Note
5V / VCC external 5V supply Not the board's 5V pin beyond a handful of pixels. Size the supply at 60mA per LED for full white — 60 LEDs is 3.6A.
GND GND Shared between the supply, the strip and the ESP32. A data line with no common ground does nothing.
DIN GPIO48 Through a 330Ω series resistor, ideally after a 74AHCT125 level shifter. GPIO48 is also the DevKitC-1 v1.0's onboard LED, which is why the config lights something with no strip attached.
1000µF capacitor across 5V and GND at the strip Takes the edge off the power-on surge that kills the first pixel.

Host pins are the ones the configuration on this page uses. Move a pin here and change it in the YAML — they are documented together so they cannot disagree.

Technical Specification Matrix

Feature / Attribute Specification / Status
Hardware Protocol GPIO RMT / 3.3V to 5V Level Shift
Bridge Required NO
Border Router Needed None
Hardware Capabilities & Peripherals
Light Strip (RGB) Color Effects Brightness Speed

Note: these entities come from the ESPHome configuration you flash — each one needs its matching component in that YAML before it appears.

Pairing Complexity Plug-and-Play
Factory Reset Instruction Hold BOOT button while powering on.

Wire, Flash, Adopt, Check

1

Wire it up

Follow the wiring table above. The ESP32-S3 pins there are the ones the configuration uses, so if you move one, change it in both places.

2

Flash the configuration

Create a new device in the ESPHome dashboard (the Home Assistant add-on) and paste the configuration below into it, or save it as emb_esp32s3_ws2812b_esphome.yaml and run esphome run emb_esp32s3_ws2812b_esphome.yaml. The first flash goes over USB. If it is not detected, hold BOOT button while powering on to put it in download mode. Every update after that is over the air.

3

Adopt it in Home Assistant

Settings → Devices & Services. A node on the same network shows up as a discovered ESPHome device within a minute of joining Wi-Fi; choose Configure and enter the API encryption key from your secrets.yaml. If discovery does not find it, add the ESPHome integration by hand with the node's IP address.

4

Check it works

The light entity appears in Home Assistant with an effect list. Turn it on white at full brightness: every pixel white to the far end means power is sufficient; a red cast at the end means inject power; a first pixel that flickers or shows the wrong colour means the level shift.

ESPHome Configuration

Starting configuration for WS2812B Addressable RGB LED Strip on ESP32-S3. Untested on hardware — verify wiring and pins against your own board.

# ESPHome configuration for WS2812B Addressable RGB LED Strip
# Host: ESP32-S3. Pin numbers below are host-side defaults — any free
# GPIO will do, and you should change them to match your own wiring.

esphome:
  name: emb_esp32s3_ws2812b_esphome
  friendly_name: "WS2812B Addressable RGB LED Strip"

esp32:
  board: esp32-s3-devkitc-1
  framework:
    type: esp-idf

logger:

api:
  encryption:
    key: !secret api_encryption_key

ota:
  - platform: esphome
    password: !secret ota_password

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

# GPIO48 is the onboard RGB LED on the ESP32-S3-DevKitC-1 v1.0, so this
# block lights something before any strip is wired. (v1.1 moved that LED
# to GPIO38.) For an external strip, any output-capable GPIO will do.
light:
  - platform: esp32_rmt_led_strip
    name: "LED Strip"
    pin: GPIO48
    num_leds: 60
    chipset: WS2812
    rgb_order: GRB
    # The S3 allocates RMT memory in 48-symbol blocks; raising this is the
    # fix for flicker or dropped frames on long strips.
    rmt_symbols: 96
    effects:
      - addressable_rainbow:
      - addressable_color_wipe:
      - addressable_scan:
      - addressable_twinkle:
      - addressable_fireworks:

Before you flash: the !secret values come from your secrets.yaml, and the GPIO numbers are host-side defaults rather than properties of this part — change them to match how you actually wired it.

What Appears in Home Assistant

LED Strip
light

RGB colour and brightness, plus an effect selector carrying the five addressable effects in the config. Add more under effects: as you want them.

Known Problems and Fixes

3.3V data into a 5V strip

The WS2812B wants a high level of at least 0.7 × VDD, which is 3.5V on a 5V strip. A 3.3V ESP32 output is under that, and the result is a strip that works on the bench and flickers, drops the first pixel or shows the wrong colours once the wire is longer. A 74AHCT125 or 74HCT245 shifter fixes it. The cheaper trick is feeding the first pixel through a diode so it runs at about 4.3V and re-drives the rest.

Inject power along the strip

Copper on a 5V strip drops voltage fast. Past about a metre the far end goes red-tinted at full white because blue is the first channel to starve. Run 5V and GND to both ends, or every metre on dense strips.

NeoPixelBus is not on the S3

The neopixelbus platform does not build for the ESP32-S3, and fastled_clockless needs the Arduino framework. esp32_rmt_led_strip in the config is the platform for this chip on either framework.

GPIO48 or GPIO38

The onboard RGB LED sits on GPIO48 on the ESP32-S3-DevKitC-1 v1.0 and moved to GPIO38 on v1.1. If nothing lights before you have wired a strip, try the other pin.

Flicker under Wi-Fi load

The S3 hands out RMT memory in 48-symbol blocks and the default is tight for long strips. rmt_symbols: 96 in the config is the first thing to raise; use_dma where the chip supports it is the second.

SK6812 and RGBW

RGBW strips need chipset: SK6812 and a four-channel colour order. WS2812B is GRB; some WS2811 pixel strings are RGB. A wrong order is obvious — ask for red and get green.

🛠️ Hardware Correction & Field Contributions

Report a Pinout Error or Submit Tested Code Snippets

Found a pin mapping quirk or built a custom ESPHome YAML driver for WS2812B Addressable RGB LED Strip? Submit a pull request or report corrections to our index.

Frequently Asked Questions

Does WS2812B Addressable RGB LED Strip work without an internet connection?
Local FastLED / Light component controls over Wi-Fi.
How is WS2812B Addressable RGB LED Strip powered and wired to the host board?
5V power supply for LED strip; GPIO16 data output (74HCT125 level shifter to 5V recommended).
How does the host board reach Home Assistant (ESPHome)?
Wi-Fi 2.4GHz.

Alternatives

Related Compatibility Matrix Guides