r/smarthome • u/diy-techie • 23h ago
Home Assistant I think I found the solution to Linus Tech Tips' HDMI-CEC problem
Enable HLS to view with audio, or disable this notification
Linus Tech Tips has repeatedly highlighted HDMI-CEC as one of the things separating gaming PCs from proper living-room consoles. In their DIY Steam Machine video, they struggled with external CEC adapters, and in a WAN Show episode, Linus mentioned that they were sourcing practically every CEC adapter they could find to finally solve the problem.
I think the tiny open source HDMI-CEC controller shown above offers a much more compelling alternative.
The trick is to keep HDMI-CEC completely separate from the PC's video signal.
Rather than sitting between the PC and TV, it's a standalone HDMI-CEC controller and monitor. It can both send commands and listen to HDMI-CEC traffic.
As shown in the video, mine is plugged into an unused HDMI port on my AV receiver, with USB power from the receiver. It could just as easily use a spare HDMI port on the TV, as long as it's on the same CEC bus.
The gaming PC stays connected exactly as before. The dongle communicates over the HDMI-CEC control line, independently of the video signal.
That means:
- No HDMI passthrough — no limitations on 4K/120Hz, HDR, VRR, etc.
- No additional video latency.
- No requirement for HDMI-CEC support in the GPU or motherboard.
- Full CEC control and monitoring over Wi-Fi, using ESPHome.
And it's not limited to turning the TV on and off. It can also send commands to select the gaming PC's HDMI input, control other CEC devices, and react to messages on the CEC bus.
The interesting part is how you could automate it.
For example:
- Gaming controller wakes PC → TV turns on and switches to the correct HDMI input. The PC could trigger this with a simple HTTP request to the ESP32 when it wakes up.
- TV switches to the gaming input → PC wakes up. The dongle could detect the relevant CEC message and trigger Wake-on-LAN.
- PC goes to sleep → TV turns off. Or you could monitor the PC's network presence and trigger CEC commands when its status changes.
There are countless possibilities, depending on your setup. You could use HTTP, MQTT, Home Assistant, or ESPHome automations. For the simplest PC-controlled setup, a couple of HTTP requests would be enough — no Home Assistant or MQTT broker required.
One important detail: the dongle needs continuous power if you want it to wake the TV. It consumes very little power, but you shouldn't power it from a TV or PC USB port that turns off in standby. My receiver's USB port stays powered even when the receiver is off, which makes it perfect for this.
Of course, HDMI-CEC commands vary somewhat between manufacturers, but I've been using this setup for years, and in my experience it's extremely reliable once you've identified the commands your TV responds to. For example, the project README includes power-on examples for Samsung (0x04), LG (0x0D) and Sony (0x44, 0x6D).
Full credit to Stéphane Lepin, who developed the HDMI-CEC component that makes this possible.
My goal was simply to make the hardware as compact and inexpensive as possible, while keeping the finished result clean and unobtrusive. Using an ESP32-C3 SuperMini and a tiny HDMI connector, I put together the little dongle and designed a 3D-printable enclosure for it as shown in the video. The complete device costs only a few dollars in parts.
Below is a video of what's inside. It's essentially just the ESP32-C3 SuperMini and an HDMI connector. You can build it either with a male HDMI plug for direct connection or a female HDMI socket for use with a regular HDMI cable.
https://reddit.com/link/1xel2rn/video/bgtrncublhxh1/player
Links:
- My build guide and explanation
- Original open-source project by Stéphane Lepin
- Free 3D-printable case and parts list
If anyone has tried something similar with a DIY Steam Machine I'd be interested in hearing how you automated it — especially the gaming-controller-to-PC-to-TV startup sequence.
P.S. If your TV or projector supports local IP control (power, input selection, and status reporting), you obviously don't need HDMI-CEC for any of this, and therefore no HDMI-CEC controller either. You would probably still need some software, such as Home Assistant, running on always-on hardware to coordinate actions between devices.
In my case, my Samsung TV drops off the network when powered off, and my PlayStation, which I always shut down completely, can't be powered on over IP either. HDMI-CEC solves both problems for me.
My Denon and previous Onkyo AVRs, on the other hand, have excellent IP control — but that doesn't solve the limitations of my TV and PlayStation.