The Raspberry Pi HDMI-CEC bridge

Turn the TV on from your phone — even when your PC can't · updated July 8, 2026

The short version

Most TVs can be powered on and off over their HDMI cable using a protocol called HDMI-CEC — but most gaming PCs (almost all Windows rigs, and many graphics cards) can't speak it. The bridge is a tiny service you install on a Raspberry Pi plugged into a spare HDMI input on the TV. Your Couchside box quietly hands TV commands to the Pi, the Pi speaks CEC to the TV, and your phone's TV power, volume, and mute buttons just work.

How it works

When you press TV power in the app, the app talks to the service on your box like always. The service sees it has a cec_bridge configured and forwards the command to the Pi over your home network. The bridge runs the matching CEC command out its HDMI port, and the TV reacts exactly as if a remote had told it to. Supported commands: power on, power off (standby), volume up/down, and mute — and on TVs with an ARC soundbar or receiver, volume is forwarded there automatically.

Everything stays on your LAN. The bridge accepts commands only with a secret token generated at install time, and it should never be exposed to the internet.

What you need

Set it up

1Flash Raspberry Pi OS Lite onto a microSD card. The official Raspberry Pi Imager does everything — pick Raspberry Pi OS Lite (choose the 32-bit build for a Pi 2B or older), and use the Imager's settings gear to enable SSH and set a username and password before you flash.

Raspberry Pi Imagerflashes the OS for you — recommended Raspberry Pi OS imagesdirect .img.xz downloads (pick “Lite”)

2Plug it in. HDMI into a spare input on the TV, Ethernet into your router or switch, then power. Give it a couple of minutes on first boot.

3Install the bridge. From any computer on your network, SSH into the Pi (ssh you@raspberrypi.local, using the name you set in the Imager) and run:

curl -fsSL https://couchside.tv/install-cec-bridge.sh | sudo bash

The installer sets up the CEC tools, installs the bridge as a service that starts on boot, and generates the secret token. At the end it prints the exact config block for the next step.

4Tell your box about it. Paste the printed cec_bridge block into the Couchside service's config on your gaming PC, then restart the service:

// Windows: %ProgramData%\Couchside\config.json
"cec_bridge": {
  "host": "raspberrypi.local",
  "port": 8799,
  "token": "<the token the installer printed>"
}

The cec_bridge block is for the Windows service (0.2.0-win or newer) — the boxes that need it. A Linux box (SteamOS, Bazzite, Steam Deck, most mini PCs) drives the TV over its own HDMI-CEC or RS-232 directly, so it doesn't use the bridge and ignores the block; install and pair the Pi, and TV control just appears. If your box can already send CEC from its own HDMI port, you don't need the bridge at all.

5That's it. Open the Couchside app — TV power (and TV volume, if you select the TV as your volume target) now appears and works through the Pi. To sanity-check the bridge itself, run curl -s localhost:8799/api/ping on the Pi.

Good to know

Questions?

Open an issue on GitHub or email support@couchside.tv.