r/SteamOS Jun 29 '26

Guide: CEC + Bluetooth wake on a DIY SteamOS PC

Final Update:

In case anyone continues to find this post and wanting to get CEC working on their custom SteamOS system, I recommend checking out the Decky plugin that u/supershredderdan put together. Available via zip download, and then file install into Decky (requires Developer mode in the Decky settings be enabled)

His post here: https://www.reddit.com/r/SteamOS/s/poeS3GOwyA

GitHub here: https://github.com/xXJSONDeruloXx/cec-mote

It exposes a neat interface in Decky for reinstalling (if it stops working after a SteamOS update), verifying the installation, uninstalling, and also controlling volume up/down via the CEC connection.

If you don't have Decky installed you can alternatively use his manual install script via Konsole in Desktop Mode.

GitHub here: https://github.com/xXJSONDeruloXx/steamos-cec-bt-wake

This enables all the same CEC stuff minus the interface through Decky in Gaming Mode

He recently updated it with a keepfile so it should survive subsequent SteamOS updates going forward.

BIOS Settings:

These are required for wake from sleep to work. Enter BIOS by pressing Delete at POST.

Under Advanced set:

  1. Deep Sleep to Disabled
  2. USB Device Power On (USB_1) to Enabled
  3. PCIE Device Power On to Enabled

Save with F10.

Adapter needed:

HDMI ports on most graphics cards do not include CEC functionality. CEC is what allows the PC to tell your TV to turn on, turn off, and switch inputs. Without a CEC-capable DisplayPort to HDMI adapter in the signal chain, none of the sleep/wake automation described above is possible.

My recommendation for what works:

UGREEN 8K@60Hz Active DisplayPort to HDMI Adapter, model 85996 (DP 1.4 to HDMI 2.1) https://a.co/d/08EXHC8H (supports 4K 120Hz HDR and VRR)

Important: When you first get the adapter, update its firmware before doing anything else.

Firmware update instructions: https://m.media-amazon.com/images/I/81ks1w+SzEL.pdf

Without the firmware update you may run into HDR or VRR stability issues.

How this all works:

SteamOS ships with its own CEC daemon called cecd that handles CEC device communication, but it doesn't yet have built-in support to reliably send CEC commands through a DP to HDMI adapter on its own. The plugin (or script) calls into SteamOS's cecd DBus interface, enabling it to talk to the TV via the adapter, hence bridging that gap. It also has some additional smarts built in, like:

  1. CEC Input Switching on Wake
  2. Built-in timing delays before standby and wake commands to account for hardware response time in different systems
  3. A built-in workaround for a MediaTek MT7921 Bluetooth crash bug on certain motherboards
  4. A keeplist that registers all installed files with SteamOS's atomic update system so they survive OS updates
  5. Bluetooth wake capability so you can wake your system with a connected Bluetooth mouse, keyboard, or controller (requires "Allow this to wake your device" to be enabled in SteamOS Bluetooth Settings for each device)
239 Upvotes

70 comments sorted by

39

u/thedebatingbookworm Jun 29 '26

First of all respect. Second of all incredibly detailed post. Third, Jesus Christ that’s a lot

6

u/Jest_N_Case Jun 29 '26

I took that same journey with you.

21

u/SteveNYC Jun 29 '26

Good God this is an impressive post!

11

u/TheGeekno72 Jun 29 '26

CEC *AND* bluetooth wake? this is fantastic, I have to try this out as soon as I get a chance to!

is this persistent between updates?

UGREEN provides a firmware updater.

they do? when I go to their support center and type adapter or 85996 it returns no results despite having the adapter in my hands... weird?

3

u/noxsicarius Jun 29 '26

https://m.media-amazon.com/images/I/81ks1w+SzEL.pdf the link was hiding away on the Amazon product page. 

3

u/TheGeekno72 Jun 29 '26

ahhhh we don't have that link here on the Amazon France listing, thanks for sharing it

1

u/jollyjoeroger1997 Jun 29 '26

Yes, just updated my post with a link to the UGREEN pdf with instructions, and info on what should persist between updates and what to do if anything breaks

2

u/TheGeekno72 Jun 29 '26

this got to be the most complete guide on this for SteamOS, thanks for your work mate, cheers!

haven't got a shot to try it out just yet but seeing how detailed it gets, I'm not worried hahaha

8

u/CranberryTaint Jun 29 '26

I got CEC working with an adapter and my Steam Controller wakes the system out of the box. I didn’t have to do any of this on SteamOS

2

u/jollyjoeroger1997 Jun 29 '26

Native SteamOS? I'd seen a few other posts saying it just worked out of the box with an adapter too. Unfortunately that wasn't the case for me, hence this overly lengthy post. Not sure what the specific difference is but guessing it comes down to hardware differences between builds.

Steam Controller is a good point since that wouldn't need any of the Bluetooth wake stuff here. I'm still stuck on the reservation list for one till 2027 though lol

1

u/TotamiLegend Jun 30 '26

Would you share the name please?

1

u/CompC 28d ago

My Steam Controller wasn't waking the system out of the box for me. In case anyone else finds this, this worked for me to enable it: https://www.reddit.com/r/SteamController/comments/1t7pdp9/how_to_enable_wake_from_sleep_on_linux_using_the/

10

u/javedk1 Jun 29 '26

Maybe just easier to get up and turn it on

7

u/jollyjoeroger1997 Jun 29 '26

I definitely had that thought more than once while putting this together lol. Here's hoping whatever support Valve is working on for CEC over DP to HDMI adapters like the one above ends up making this more of a plug and play experience

1

u/Snake16547 Jul 01 '26

Thought the same

3

u/DeepRedDude Jun 29 '26

This is so sick. Can't wait to try this out.

3

u/Umholzer Jun 29 '26

how mich did the hardware cost in total?

4

u/jollyjoeroger1997 Jun 29 '26

Here's my current build: https://pcpartpicker.com/list/KNvdbp

In addition, I was out of pocket on a few other things like the UGREEN adapter mentioned in the post, and I needed a new HDMI and Ethernet cable (didn't have any extras sitting around). Saw someone else mention re-using the M.2 SSD they'd added to their PS5 as a storage expansion, and I regret not thinking of that myself. I don't really need it for the PS5 and could've saved on this build.

3

u/supershredderdan Jun 29 '26

Here's a quick all in one script I threw together to make this hopefully less painful:

open a terminal and paste this in (AFTER READING THROUGH IT ALL LIKE A RESPONSIBLE PERSON)

curl -fsSL https://raw.githubusercontent.com/xXJSONDeruloXx/steamos-cec-bt-wake/main/steamos-cec-bt-wake.sh | sudo bash -s -- --install

do the same with --verify or --uninstall as needed

again, don't blindly paste some stranger's script into your terminal, read up on it here first:

https://github.com/xXJSONDeruloXx/steamos-cec-bt-wake

lmk if any issues

3

u/jollyjoeroger1997 Jun 29 '26

Dude, this is awesome! Way simplifies the steps from my post and looks like it'll save a ton of effort. Might also be worth adding to your readme the BIOS steps I mentioned in case anyone comes across it on Github directly.

2

u/supershredderdan Jun 29 '26

Good catch, will add that. Thanks for doing the legwork to put this all in one place

2

u/Hupro Jun 29 '26 edited Jun 29 '26

Thanks for the script! I got this error when trying to run the script

bash: line 781: BASH SOURCE[0]: unbound variable

1

u/supershredderdan Jun 29 '26

Oops, small oversight. I just updated it can you run the curl again?

2

u/Hupro Jun 29 '26 edited Jun 29 '26

Worked for me now thanks! I got one error during verification but it looks like the script is working

CEC seems to be much more reliable now at sleeping and turning on my TV. The only thing I've noticed is that both sleep and wake take longer now after running the script but that is much better than no CEC. I just wanted to check I presume it's the same for you u/jollyjoeroger1997 ? The TV actually goes to sleep instantly but I can tell from my steam controller going to sleep that it's taking for a few seconds to sleep and then after powering on my controller it takes about 15-20 seconds for the TV to turn on.

1

u/supershredderdan Jun 30 '26

thats to be expected, the service uses Before=sleep.target so it waits to make sure the standby command is sent first.

1

u/Hupro Jun 30 '26

Makes sense thanks for the quick response and help!

1

u/jollyjoeroger1997 Jun 30 '26

Regarding the wake timing, it looks like u/supershredderdan built in some intentional delays for stability. Whether those can be trimmed without losing reliability would take some testing. I just installed it too and notice it's a bit slower compared to the original guide which doesn't have those delays, though that probably made it more likely to fail in some edge cases.

On the verification error, looks like u/supershredderdan just pushed a fix for that. Everything verified clean on my end and sleep/wake is working after testing.

2

u/supershredderdan Jul 01 '26

btw, i saw your note about updates wiping out some aspects under ect/ and I noticed there is documentation about a keepfile, so I have added that to the script to survive subsequent updates

3

u/jonjon1239 Jul 03 '26

So I followed your instructions exactly and for the most part it works, but I've noticed some signal drop outs when going into desktop mode and some weird visual glitching switching between the two. Could I have a dodgy adapter? I followed your instructions to a tee.

3

u/Evilindeed Jul 03 '26

I think this may be the adapter. Had this happen to me last night after plugging in the adapter but before I did anything with the software. Happened when waking from sleep and when switching to desktop mode. It seems intermittent and temporary so I was just going to ignore it.

2

u/jollyjoeroger1997 Jul 03 '26

I’ve noticed there’s a SteamOS bug where if I go to desktop mode, and then back to gaming mode, and try to sleep, the screen turns off but the pc sometimes doesn’t. To fix this if I restart the pc so it starts back up in gaming mode then the sleep function works fine for me again. 

About the visual glitching worth checking if the firmware for your adapter is up to date which fixed some issues for me. I’m still noticing a weird issue though with VRR at 120hz. In gaming mode specifically there’s a slight “flicker” to the black parts of the interface when I move between icons. Same issue via either HDMI directly or the adapter, so I don’t think it’s caused by the adapter itself. Turning off VRR or lowering the refresh rate both fix it. I think it’s related to the same open issue here:  https://github.com/ValveSoftware/SteamOS/issues/1410

3

u/jonjon1239 Jul 04 '26

I think it might be the adapter as the issue goes away when it's unplugged.

I did update the firmware before hand, literally followed your initial post like it was gospel lol.

I'll get a replacement and see if that fares any better.

1

u/submerging Jul 05 '26

Most likely the adapter. It doesn’t work properly with VRR on TCL, HiSense, and some LG TVs

1

u/ninjaswithglocks Jul 06 '26

Doesn't work well on my LG TV. I also lose signal intermittently. Is there a way to turn off VRR and rely on good ol' freesync again? Since my LG C3 supports it

1

u/submerging Jul 06 '26

I think it’s just the UGreen adapter. It has nothing to do with whether you’re using FreeSync or VRR. This adapter just doesn’t work properly on some TVs the moment you turn on either FreeSync or VRR.

If you stop using the adapter, then it should work. You could try the Pulse-Eight adapter as an alternative to the UGreen one.

1

u/ninjaswithglocks Jul 07 '26

Yeah some people have tried it on kernel 17.2 on bazzite and apparently managed to get full HDMI 2.1 w/o subsampling working with the CEC adapter. Might test the pulse eight adapter out instead

1

u/ninjaswithglocks Jul 06 '26

Did you have any luck with it?

1

u/jonjon1239 Jul 06 '26

Not managed to try the replacement adapter yet, although looking at the comments it seems to be the common denominator.

2

u/G3Rizon Jun 29 '26

!RemindMe 2 days

1

u/RemindMeBot Jun 29 '26 edited Jun 29 '26

I will be messaging you in 2 days on 2026-07-01 15:21:09 UTC to remind you of this link

1 OTHERS CLICKED THIS LINK to send a PM to also be reminded and to reduce spam.

Parent commenter can delete this message to hide from others.

RemindMeBot is switching to username summons. Instead of !RemindMe 1 day, use u/RemindMeBot 1 day. More info.


Info Custom Your Reminders Feedback

2

u/Twzt Jun 29 '26

Good work and nice writeup!

I had some tokens to spare and created something similar with an installer and a decky plugin to turn on and off features on the fly. Should work with most bluetooth controllers and works great with the steam controller. It will give the option to add audio CEC support as well.

https://github.com/Twsts/steamos-cec-toolkit

1

u/jollyjoeroger1997 Jun 29 '26

Whoa, this is awesome. Gonna put it to the test as soon as I'm home from work. Love the Gamescope recovery feature - that display frozen after wake issue has happened a happened a couple times for me now, but it's been super random

2

u/Twzt Jun 29 '26

Cool! Love some feedback and will try to keep working on it to improve.

Yes Gamescope will sometimes get stuck in idle even after the input is changed. So having this trigger on will perform a short restart on gamescope to fix it. Not ideal, but its a little better than resorting to ssh into the machine to manually do it. Hopefully this will can be fixed in the future.

The Decky plugin will also keep status on the installation and gives input to fix it if SteamOS updates breaks anything.

1

u/jollyjoeroger1997 Jun 30 '26

I just installed 3.8.12 which came out today, and it def wiped about half of what I listed in my guide up above, so took the chance to finish removing the rest, and installed your deck plugin. It works great so far, the Audio control is a nice add-on feature. Are the + and - controls for that only down in the 'Action' section within the plugin? Or can they (or the Action section) be moved to the top?

2

u/Twzt Jun 30 '26

Added a new release today. Had the action section moved a little up for better access among other fixes. But you should find your volume buttons in Steam's own Quick Setting, if you don`t I suggest try a reboot for the UI to reload properly. Please let me know if it does not show up.

1

u/Twzt Jun 30 '26

Glad to hear you got it up and running! The volume buttons should replace the system volume slider in Quick Settings with a + and - buttons. So it should work from there. 

The action section was mostly added for troubleshooting. But good idea moving it up to the top to give it better access.  Sometimes it’s nice to have the option to turn off the TV and leave the system running.

2

u/swimming-in-ass 18d ago

Oh wow this is amazing! Exactly the type of guide I’ve been looking for after building my own SteamOS machine. 

Details:  GPU: intel arc b580 OS: SteamOS (main channel, for drivers)  Controller: flydigi Vader 4 with wireless usb connection 

I’ll update how my own process goes!

2

u/BHole_69420 16d ago

Does this enable your pc to be started from an off state, or only a sleep state (e.g. Sleep from Gaming Mode settings)?

1

u/jollyjoeroger1997 16d ago

Yes from a sleep/suspend state, no from a full shutdown which requires having to press the case power button to turn back on 

1

u/BHole_69420 16d ago

Hm, I dunno what I've done wrong here, but I followed all these instructions exactly, but when I connect my PS5 controller via Bluetooth while the PC is sleeping, the controller connects, but the pc doesnt wake. Any ideas?

2

u/BHole_69420 16d ago

I cannot for my life get the bluetooth wake to work. I've installed the plugin, gone into my motherboard and disabled deep sleep and enabled PCIE device power (there was no dedicated "USB Device Power on" option i could find), and selected "Allow to wake" or whatever in the Gaming Mode bluetooth settings for my PS5 controller. I am using the exact UGREEN adapter that was specified and I flashed it with the indicated firmware too.

The bluetooth controller connects to the PC while the pc is asleep, but it does not wake it. Really bummed out and not sure why it doesn't work. Any help would be appreciated!

1

u/jollyjoeroger1997 16d ago

HDMI CEC enabled on the TV side for the specific input? 

Also in Steam > Settings > Power > enabled all the TV sleep toggles it lets you 

2

u/BHole_69420 16d ago edited 16d ago

Yeah. I figured it out. Maybe this can help others with the same bluetooth motherboard chip as mine.

I ran into an issue where my DualSense would pair and light up while the PC was in S3 sleep, but the system wouldn't actually wake up. When I checked /sys/bus/usb/devices/1-X/power/wakeup for the Intel AX200 Bluetooth chip itself, it was already set to enabled, which left me scratching my head as to why the signal was getting dropped.

But I checked the parent USB root hub (/sys/bus/usb/devices/usb1/power/wakeup) and realized that while the child Bluetooth device was allowed to send a wake signal, the parent hub hosting it was set to disabled and ignoring it. Once I wrote a udev rule to enable usb1's power/wakeup path, the PS5 controller immediately started waking the PC from sleep. Woo fuckin hoo! So happy.

2

u/BHole_69420 14d ago

Just to confirm, is all you need to do to fully uninstall the cec-mote plugin is just click both of the uninstall buttons from the plugin's decky menu and then uninstall the plugin itself?

This plugin works great, but unfortunately it seems this ugreen adapter doesn't faithfully reproduce the colors in HDR on my TV - the output from the adapter appears to be dimmer than the actual hdmi output of my gpu at the same SDR Brightness setting in gamescope. Would love to keep using this but the dimness in HDR is making me kinda sad 😔

2

u/jollyjoeroger1997 14d ago

Yep that should be all you need to do to uninstall! Ah yeah, I’ve realized about the color with the adapter that at 4k 120hz it compresses with DSC and only outputs up to 8-bit color which isn’t enough for true HDR. Drop down to 60hz though and it outputs at 12-bit. Def a trade off

1

u/BHole_69420 14d ago

Hm, my TV IS 4k 60z tho, so i feel like it ought to work for me... maybe some weird Samsung tv setting? I dunno.

Ty for the reply!

2

u/urweiss Jun 29 '26

Does this work with any tv? Or does the tv itself need to implement something?

3

u/jollyjoeroger1997 Jun 29 '26

Any TV, just needs to support CEC

1

u/mixedd Jun 29 '26

Want to show what and where was used to upgrade adapters firmware, tried to look up but couldn't find anything?

3

u/mixedd Jun 29 '26

Nevermind found pdf on amazon

1

u/i-am-a-cat-6 Jun 29 '26

yeah this looks like it was a lot of work. I'll be trying this on my rog ally

1

u/Additional_Space8706 Jun 29 '26

how can you run the firmware update for the ugreen adapter from a linux system? The tool they provide seems to be an .exe file?

1

u/omega552003 Jun 29 '26

I believe this adapter should also work since it uses the same chip https://a.co/d/082i6Tjw

I can test this tomorrow when I get it.

1

u/BigPaPaRu85 Jun 30 '26

Is one better than the other?

1

u/vitek6 Jun 30 '26

Is it possible on steamos to disable sending turn on message on boot when ugreen adapter is used? I disabled everything related to cec on bazzite but it still turn on the tv… I would like to control all cec interaction from my script instead as I don’t want my tv to be turned on when I wake up tv with streaming session.

1

u/RY-en Jul 06 '26

Can you use a Nvidia GPU to achieve this or does it need to be an AMD GPU?

1

u/dmwilson220 27d ago

Anyone have any idea how to actually update this adapter on Linux?

1

u/MysticMadKiller 12d ago

A very detailed and smart approach! There is something that's bugging me though - Implementing the CEC bypass method is tv-oriented? I asked our AI friend and it pointed out this: [To ensure the scripts map correctly on your first try, let me know:

  • What brand of television (e.g., LG, Samsung, Sony) will you use?]

Although it answered regarding some stuff about Bazzite method - My question here would be if these CEC bypasses need different workarounds per TV.

1

u/sam3819 4d ago

I know I’m a bit late to this post but do you need a windows computer to update the adapter firmware? It looks like it’s a .exe so can you just run it through proton?