katzmatt/cec4htpc-daemon — explained in plain English
Analysis updated 2026-05-18
Automatically power on and switch a home theater TV to the right HDMI input when a Linux HTPC boots.
Put the TV into standby automatically when the HTPC shuts down, sleeps, or reboots.
Control the TV's volume from any application by rerouting the system volume keys over CEC.
| katzmatt/cec4htpc-daemon | 0marildo/imago | 0xdfi/glm-5.2-1m-4x-dgx-spark | |
|---|---|---|---|
| Stars | 3 | 3 | 3 |
| Language | Python | Python | Python |
| Setup difficulty | moderate | easy | hard |
| Complexity | 4/5 | 2/5 | 5/5 |
| Audience | ops devops | general | researcher |
Figures from each repo's GitHub metadata at analysis time.
Requires a libCEC-compatible USB-CEC adapter and root-level systemd/udev setup.
CEC4HTPC-Daemon, also called cecd, is a background service for Linux home theater PCs that controls a television over HDMI-CEC. It takes ownership of a USB-CEC adapter, most commonly the Pulse-Eight USB-HDMI CEC Adapter, for as long as the computer is running, and uses it to turn the TV on, switch it to the right input, and put it into standby automatically around boot, sleep, resume, and shutdown, without anyone needing to log in first. Because it runs as a system level daemon started by udev rather than a service tied to a login session, the TV is already on and switched to the correct input by the time any login screen would normally appear. It is also the only process allowed to talk to the adapter, which avoids conflicts with other tools that might otherwise fight over the same connection. An optional feature lets the daemon grab the volume up, volume down, and mute keys system wide and send them to the TV or receiver over CEC instead of the desktop's own volume control, so this works even with no desktop environment running at all. Other programs can control the daemon through a D-Bus API on the system bus, with methods for powering on, standing by, switching inputs, adjusting volume, scanning the CEC bus, and checking connection status. Installation is handled by shell scripts that detect whether the system is Arch based or Debian and Ubuntu based, install the needed dependencies, and set up the systemd unit, udev rule, and D-Bus policy. Configuration lives in a JSON file where a user sets the HDMI input number, retry counts, and whether the TV's power button should be allowed to wake the computer. The README states plainly that this is a heavily AI assisted project and warns readers to review it carefully before relying on it for anything critical. It is written in Python, and companion tools for Windows and a simpler user space Linux setup exist as separate related projects from the same author.
A Linux background service that automatically turns a TV on, switches its input, and puts it to standby using an HDMI-CEC USB adapter.
Mainly Python. The stack also includes Python, systemd, D-Bus.
Setup difficulty is rated moderate, with roughly 30min to a first successful run.
Mainly ops devops.
This repo across BitVibe Labs
Don't trust strangers blindly. Verify against the repo.