DIY Ambilight for Any TV: Shield TV + scrcpy + HyperHDR, No HDMI Capture Card Required
If you've ever wanted Philips Ambilight on a TV that isn't a Philips, you've probably hit the same wall everyone else does: capturing the video signal. HDMI capture cards work great for external sources, but what about content from streaming sticks? What about when you pause the movie? What about doing it all wirelessly?
After weeks of dead ends, kernel module builds, and more v4l2loopback configurations than any human should endure, I built a fully wireless ambilight system that captures an Nvidia Shield TV's screen over ADB, maintains a rock-solid 30fps frame stream even during paused content, and drives 300 SK6812 RGBW LEDs behind a 65" Samsung S90F QD-OLED. No HDMI capture card. No camera pointed at the screen. No extra remotes. Here's how.
The Architecture
Shield TV Pro ──(ADB over wifi/ethernet)──> ZimaBoard (scrcpy + HyperHDR) ──(WiFi)──> ESP32 (HyperK) ──> SK6812 LEDs
The key insight: scrcpy runs as the Android shell user via app_process, completely outside Android's app lifecycle. Unlike every Android screen grabber app (which dies the moment you switch away from it), scrcpy survives app switches because it was never an app to begin with. Switch to Stremio, Netflix, Kodi, whatever. The capture keeps running.
The Hardware
Here's the full buy list. Everything is available on Amazon.
LED Strip and Power
SK6812 RGBW LED strip (5V, 60 LEDs/m, 5 meters, 300 LEDs) -- $25-40 The actual light strip mounted behind the TV.
Mean Well LRS-100-5 (5V, 18A, 90W) -- $18-22 AC-to-DC power supply. Takes wall power in, outputs 5V. Based on QuinLED's measured data, 300 SK6812 LEDs draw ~76W at full RGBW white. This supply gives headroom.
18 AWG silicone wire (red + black) -- $8 Power runs from PSU to strip. The thin stock wires on LED strips can't handle 15A. Also needed for power injection at the far end of the strip.
AC power cord (3-prong) -- Free (junk drawer) The Mean Well has screw terminals for AC input. Cut the device end off an old PC/monitor cord.
Signal Electronics
ESP32 dev board -- $8 Runs HyperK firmware. Receives color data from HyperHDR over WiFi and drives the LED strip.
SN74AHCT125N (DIP-14 level shifter, 12-pack) -- $8
Converts 3.3V data signal from the ESP32 to 5V for the SK6812 strip. The chip is a quad buffer; you only need one channel.
Breadboard -- $8 You'll need a wide one or a second breadboard, the ESP is slightly too big to connect properly with just one.
Dupont jumper wires -- $5 For connecting everything. Female-to-female or female-to-male depending on your board headers.
Optional: Raspberry Pi Pico (RP2040, NOT Pico 2/RP2350) -- $5-8 Alternative to the ESP32 for USB serial setups via HyperSerialPico. Not needed if using the ESP32 + HyperK WiFi approach.
Video Capture and Processing
Nvidia Shield TV Pro 2019 (the model with USB ports) -- $150-200 Streaming device that replaces your TV's built-in apps. We capture its screen via ADB. Must be the 2019 Pro model (Tegra X1+, USB ports, gigabit ethernet).
ZimaBoard (or any x86 Debian/Ubuntu box) -- $70-120 Runs CasaOS with HyperHDR in Docker, scrcpy, and the frame sustainer. A Raspberry Pi 4/5 would also work.
Why Not Just Use [Other Approach]?
Before I explain what works, here's what doesn't, so you don't waste your time:
"Just use the TV's built-in apps and capture that" Samsung Tizen has no screen capture API. Period. The only native option is the Philips Hue Sync TV app ($130 + Hue ecosystem). There is a community project called HyperTizen but it doesn't reliably work on Tizen 9 and can't capture DRM content.
"Use an Android screen grabber app on the Shield" Every grabber app (Hyperion Grabber Reloaded, hyperion-android-reborn, etc.) uses MediaProjection, which Android kills when you switch to another app. We tested MediaProjection, Scrcpy-in-app, ADB Stream, Accessibility service (can't even see video surfaces), and Screencap...
Read more »
LandonP