Build Your Own Ambilight: WLED + ESP32 + Hyperion Ambient Lighting Guide

Transform your TV viewing experience with DIY ambient lighting. Complete guide to setting up WLED, ESP32, and Hyperion for immersive bias lighting.

• 13 min read
homelabledwledhyperionambient-lighting
Build Your Own Ambilight: WLED + ESP32 + Hyperion Ambient Lighting Guide

Want that immersive Philips Ambilight effect without the Philips price tag? This guide walks you through building your own ambient TV lighting system using WLED, an ESP32 microcontroller, and Hyperion. It’s the exact setup I show in the video above — affordable, customizable, and seriously cool.

What You’ll Build

Ambient lighting (also called bias lighting) projects colors from your screen onto the wall behind your TV, creating an immersive viewing experience that:

  • Reduces eye strain by softening the contrast between bright screens and dark rooms
  • Extends perceived screen size by bleeding colors onto the wall
  • Looks amazing for movies, games, and everything in between

How It Works

┌─────────────┐      ┌─────────────┐      ┌─────────────┐      ┌─────────────┐
│   Screen    │──────│  Hyperion   │──────│    WLED     │──────│  LED Strip  │
│  (Content)  │  →   │ (Captures)  │  →   │ (Controls)  │  →   │  (Lights)   │
└─────────────┘      └─────────────┘      └─────────────┘      └─────────────┘
     PC/TV             PC/RPi              ESP32               Behind TV
  1. Hyperion runs on your computer (or Raspberry Pi) and captures what’s displayed on screen
  2. Hyperion processes the image and determines what color each LED should show
  3. Hyperion sends that data over your network to WLED running on an ESP32
  4. WLED tells the LED strip exactly what colors to display
  5. Boom — ambient lighting synced to your content

Hardware Shopping List

Budget Build (~$40-60)

Perfect for starting out. Uses 5V LEDs and a basic ESP32.

ItemSpecificationEst. Price
LED StripWS2812B 5V, 60 LEDs/m, 2-3m$12-18
ESP32 BoardESP32 DevKit V1$6-10
Power Supply5V 10A switching supply$8-12
Level ShifterSN74AHCT125 module$2-4
Jumper WiresFemale-to-female, various lengths$3-5
DC Barrel JackFor power supply connection$2-4

Total: ~$33-53

Pro Tip

Save yourself headaches later — buy a level shifter. The ESP32 outputs 3.3V signals while WS2812B LEDs expect 5V data. Without a level shifter, you’ll get random flickering and color glitches, especially on longer runs.

Mid-Range Build (~$60-100)

12V LEDs with backup data line. More reliable for larger setups.

ItemSpecificationEst. Price
LED StripWS2815 12V, 60 LEDs/m, 3m$25-35
ESP32 BoardQuinLED-Dig-Uno (includes level shifter)$20-25
Power Supply12V 5A (quality brand)$12-18
Corner ConnectorsFor clean TV mounting$5-8
CablingHigh-quality silicone cables$5-8

Total: ~$67-94

Premium Build (~$100-200)

For large TVs (65”+) or if you want the cleanest installation.

ItemSpecificationEst. Price
LED StripWS2815 12V, 60 LEDs/m, 4-5m$40-60
ESP32 BoardQuinLED-Dig-Quad (4 outputs)$30-40
Power Supply12V 10A industrial grade$20-30
HDMI Capture CardUSB (for external sources like game consoles)$15-25
Aluminum ChannelsLED diffusers for cleaner look$20-35
Corner PiecesFlexible silicone connectors$8-12

Total: ~$133-202

Which LED Strip Should You Choose?

Use CaseRecommended StripWhy
Small monitor (24”)WS2812B, 30 LEDs/m, 2mLower power, cheaper
Medium TV (40-55”)WS2812B, 60 LEDs/m, 3mGood density, affordable
Large TV (65”+)WS2815, 60 LEDs/m, 4-5m12V reliability, backup data line
Bright roomAPA102/SK9822Higher brightness, clock line
Color accuracySK6812 RGBWDedicated white channel
Note

WS2815 vs WS2812B: The WS2815 runs at 12V and has a backup data line. If one LED fails, the rest keep working. For the small price difference, it’s worth it for a TV setup you’ll use daily.


Wiring It All Together

The Basic Circuit

                    ┌─────────────────┐
                    │     ESP32       │
                    │                 │
Power Supply ───────│ GND        GPIO │────── Data In ──────► LED Strip GND
   5V/12V       │   │                 │                      │
   GND ─────────┼───│ GND             │                      │
                │   │                 │                      │
   +5V/+12V ────┼───│ (not connected) │                      │
                │   └─────────────────┘                      │
                │                                            │
                └────────────────────────────────────────────┘
                          Power to LED Strip

Connection Reference

FromToWire Color (suggested)
Power Supply +LED Strip VIN (+)Red
Power Supply -LED Strip GND (-)Black
Power Supply -ESP32 GNDBlack (critical!)
ESP32 GPIO 16LED Strip Data In (DI)Any color
Warning

Never power more than a few LEDs directly from the ESP32! The ESP32’s 5V pin can only supply around 500mA. A 60-LED strip at full white draws 3.6A (60 × 60mA). Always use an external power supply for the LEDs.

ESP32 GPIO ─────► Level Shifter Input (3.3V side)
ESP32 3.3V ─────► Level Shifter VCC (Low side)
LED Strip 5V ───► Level Shifter VCC (High side)
Level Shifter Output ───► LED Strip Data In
All GNDs connected together

Power Requirements

Each WS2812B LED draws up to 60mA at full white brightness.

Formula: Total Amps = Number of LEDs × 0.06

LED CountRecommended SupplyMinimum Wattage
60 LEDs (1m @ 60/m)5V 4A20W
144 LEDs (2.4m)5V 10A50W
180 LEDs (3m)5V 12A60W
300 LEDs (5m)5V 18A90W
Pro Tip

Power injection matters for strips longer than 2-3 meters. Connect power at the start AND end of the strip. For very long runs, inject power every 2-3 meters. This prevents voltage drop that causes LEDs to flicker or show wrong colors at the far end.


Step 1: Flash WLED to Your ESP32

The easiest method is the web-based installer — no command line needed.

Web Installer Method

  1. Open Chrome or Edge browser (Web Serial support required)
  2. Go to install.wled.me
  3. Connect your ESP32 via USB
  4. Click “Connect” and select your ESP32’s COM port
  5. Click “Install WLED” and wait for the flash to complete
  6. When done, connect to the “WLED-AP” WiFi network
  7. Configure your home WiFi credentials in the popup
Note

The default WLED access point password is wled1234. After connecting, note the IP address assigned to your ESP32 — you’ll need it for Hyperion configuration.

Initial WLED Configuration

Once connected to your network:

  1. Open a browser and go to the ESP32’s IP address (or wled-xxxxxx.local)
  2. Click ConfigLED Preferences
  3. Set up your LEDs:
SettingValue
LED CountYour total number of LEDs (measure your TV perimeter)
GPIO16 (or whichever pin you wired)
LED TypeWS2812B (or your strip type)
Color OrderGRB (most common, adjust if colors are wrong)
  1. Enable Automatic brightness limiter and set max current to ~80% of your power supply rating
  2. Click Save

Calculating LED Count

Measure your TV:

Example for 55" TV:
- Width: 48" (121 cm)
- Height: 27" (69 cm)
- Perimeter: 48+48+27+27 = 150" (380 cm)

With 60 LEDs/m strip:
380 cm ÷ 100 cm/m × 60 LEDs/m = 228 LEDs
Pro Tip

Add 10-20 extra LEDs to account for corners and mounting. It’s easier to cover extras with tape than to extend the strip later.


Step 2: Install and Configure Hyperion

Hyperion.NG is the modern, actively-maintained version — use it over the discontinued Classic version.

Installation Options

Windows:

  1. Download from hyperion-project.org
  2. Run the installer and follow prompts
  3. Access at http://localhost:8090

Raspberry Pi (HyperBian):

  1. Download HyperBian from GitHub releases
  2. Flash to microSD card with Raspberry Pi Imager
  3. Insert card and power on the Pi
  4. Access at http://hyperbian.local:8090 or the Pi’s IP address

Linux:

# Download and install
wget https://github.com/hyperion-project/hyperion.ng/releases/download/v2.0.15/hyperion_2.0.15_linux_x86_64.deb
sudo dpkg -i hyperion_2.0.15_linux_x86_64.deb
sudo apt-get install -f

Connect Hyperion to WLED

  1. Open Hyperion web interface (port 8090)
  2. Go to LED HardwareController
  3. Configure the WLED connection:
SettingValue
TypeWLED
HostYour ESP32’s IP address
Port19446 (DDP protocol)
Number of LEDsSame as WLED configuration
  1. Click Save
Note

WLED supports multiple protocols. DDP (port 19446) is the recommended option for Hyperion.NG — it’s efficient and auto-discovers WLED devices on your network.

Configure LED Layout

  1. Go to LED HardwareLED Layout
  2. Select Classic layout type
  3. Configure based on your TV:
Example for 3-sided setup (bottom + sides):

        [Top LED count: 0]
    ┌───────────────────────┐
    │                       │
    │   TELEVISION          │ Left ─────►  Right
    │                       │ 30 LEDs      30 LEDs
    │                       │
    └───────────────────────┘
       Bottom: 60 LEDs ◄─────
  1. Set:

    • Top Gap: LEDs at top of TV (or 0 if not using top)
    • Right Gap: LEDs along right side
    • Bottom Gap: LEDs along bottom
    • Left Gap: LEDs along left side
    • Direction: Clockwise or counter-clockwise (check with preview)
  2. Use the visual preview to verify LED positions match your physical layout

Set Up Screen Capture

  1. Go to Capturing HardwareScreen Capture
  2. Enable your capture method:
PlatformRecommended Method
WindowsDirectX 11 or Desktop Duplication
macOSOS X Framebuffer
LinuxX11 or Frame Buffer
  1. Set Capture Frequency to 20-25 Hz (balance between responsiveness and CPU usage)
  2. Click Save
Warning

On macOS and Windows 11, you may need to grant screen recording permissions to Hyperion. Check your system privacy settings if the preview shows a black screen.


Step 3: Fine-Tuning Your Setup

Color Calibration

  1. In Hyperion, click the Magic Wand icon (calibration)
  2. Run through the color wizard:
    • Display test patterns (red, green, blue)
    • Verify each color appears correctly on your LEDs
    • Adjust color temperature to match your wall

Fixing Wrong Colors

If red appears as green (or other color swaps):

  1. Open WLED web interface

  2. Go to ConfigLED Preferences

  3. Try different Color Order settings:

    • GRB (most common for WS2812B)
    • RGB
    • BGR
    • BRG
  4. Test each by setting WLED to solid red, green, then blue

Note

Different LED manufacturers use different color orders. There’s no “correct” setting — just pick whichever matches your strip.

WLED Settings for Hyperion Mode

To make WLED respond properly to Hyperion:

  1. Go to ConfigSync Interfaces
  2. Enable Receive UDP Realtime
  3. Set Timeout to 25000ms (25 seconds)
  4. Enable Force max brightness — ensures Hyperion controls brightness
  5. Save settings

When Hyperion sends data, WLED automatically switches to “realtime” mode. After 25 seconds of no data (you close the video, etc.), WLED returns to its normal effect/preset.

Adjust for Lag

If LEDs feel behind the screen:

  1. Lower capture frequency in Hyperion (try 15 Hz)
  2. Reduce smoothing time in Hyperion (ProcessingSmoothing)
  3. Use wired Ethernet for the ESP32 (add an Ethernet shield or use an ESP32 with built-in Ethernet)
  4. Check WiFi signal strength on the ESP32

Troubleshooting Common Issues

LEDs Not Lighting At All

CheckSolution
Power supply on?Verify power supply LED/output
GND connected?ESP32 and LEDs must share ground
Correct GPIO?Match WLED config to your wiring
Data direction?Check strip arrows — data flows one direction only
First LED dead?Skip the first LED in WLED settings

Random Flickering or Wrong Colors

Warning

This is almost always a signal problem. The ESP32 outputs 3.3V logic, but WS2812B expects 5V. Without a level shifter, the data signal is on the edge of not being recognized.

SolutionPriority
Add a level shifter (SN74AHCT125)High — do this first
Inject power at multiple pointsMedium
Keep data wires away from power linesLow
Check for cold solder jointsMedium

Hyperion Can’t Connect to WLED

CheckSolution
Same network?Both devices need to be on the same subnet
Firewall?Allow Hyperion through Windows Firewall
Correct IP?Verify WLED’s IP in your router’s client list
mDNS?Try direct IP instead of wled-xxxx.local
UDP enabled?WLED needs “Receive UDP Realtime” ON

Colors Don’t Match What’s On Screen

CauseFix
Wrong color orderChange in WLED (GRB → RGB → try each)
Double gamma correctionDisable in WLED OR Hyperion (not both)
Blackbar detectionAdjust threshold in Hyperion
Wall color affecting lightRecalibrate white point for your wall

Going Further

HDMI Sources (Game Consoles, Blu-ray)

To sync lights to external HDMI devices:

  1. Buy an HDMI-to-USB capture card ($15-30 on Amazon)
  2. Connect: Console → Capture Card → TV (pass-through) AND USB to PC
  3. In Hyperion, add USB capture as a source under Capturing Hardware
Pro Tip

Look for capture cards that support 4K pass-through so you don’t downgrade your console’s output quality just for ambient lighting.

Multiple LED Setups

With Hyperion.NG, you can run multiple “instances” — perfect for:

  • Dual monitors with separate LED strips
  • Room lighting plus TV backlight
  • Different color zones for creative effects

Each instance can have its own capture source and LED configuration.

Audio Reactive LEDs

WLED supports audio reactivity with a cheap microphone module:

  1. Add an I2S microphone (INMP441 or MSM261S4030)
  2. Wire to ESP32 (SCK, WS, SD, VCC, GND)
  3. Enable in WLED: ConfigAudioAudio Reactive

Your LEDs can now pulse to music even when Hyperion isn’t running.


My Setup (From The Video)

For reference, here’s what I’m running in my YouTube setup video:

ComponentMy Choice
TV Size55”
LED StripWS2812B 60 LEDs/m, ~3.5m total (~210 LEDs)
ControllerESP32 DevKit V1
Power5V 15A switching supply
Level ShifterSN74AHCT125
Hyperion HostRaspberry Pi 4 (HyperBian)
CaptureX11 screen capture

The total cost was under $60, and the effect is genuinely transformative for movie nights and gaming sessions.


Quick Reference

Essential WLED Settings for Hyperion

SettingValueLocation
LED CountYour total LEDsLED Preferences
GPIO16 (or your wiring)LED Preferences
Color OrderGRB (try others if needed)LED Preferences
Brightness LimiterONLED Preferences
Max Current80% of PSU ratingLED Preferences
UDP RealtimeONSync Interfaces
Realtime Timeout25000msSync Interfaces
Force Max BrightnessONSync Interfaces

Essential Hyperion Settings

SettingValueLocation
Controller TypeWLEDLED Hardware → Controller
HostESP32 IP addressLED Hardware → Controller
Port19446 (DDP)LED Hardware → Controller
Capture MethodPlatform-specificCapturing Hardware
Capture Frequency20-25 HzCapturing Hardware

Resources


Wrapping Up

Building your own ambient lighting setup is one of those projects that sounds complicated but comes together surprisingly smoothly. The combination of WLED and Hyperion handles all the heavy lifting — you’re really just wiring up an LED strip and pointing two pieces of software at each other.

The result? Every movie night, every gaming session, every YouTube video becomes just a bit more immersive. And for under $60, it’s one of the best bang-for-buck upgrades to your home theater setup.

Questions? Hit me up in the comments of the video or check the WLED and Hyperion Discords — both communities are incredibly helpful.

Pro Tip

Take photos of your wiring before you mount everything behind the TV. You’ll thank yourself when you need to troubleshoot months later.

Anthony Lattanzio

Anthony Lattanzio

Tech Enthusiast & Builder

I'm a tech enthusiast who loves building things with hardware and software. By night, I run a homelab that's grown way beyond what any reasonable person needs. Check out about me for more.

Comments

Powered by GitHub Discussions