Valve made steamOS general availability and I want to use it as my primary OS.
background – what is steamOS and why do I care?
Skip a couple sections if you just want the technical details or opinions because I want to give some background to explain my choices. This whole project is silly and extraneous and makes no sense for most people. Probably. So here’s the backstory on why I landed on this particular set of use cases.
I have a Home Theater PC (HTPC) in my house. This means, I basically have a PC in my living room hooked up to my TV and serving content. In the modern world (July 2026 at the time of writing), most people use a roku or a fire stick or even just the apps on their smart TV. Of course, this wasn’t really an option for me when I started this because of how I used to use the PC. Now, I mostly use it as a jellyfin client so I can watch my self-hosted content library of movies and shows and to play controller based games (racing games, action games, etc). I have a separate gaming PC that I use for keyboard and mouse based games (shooters, MMOs, RTS, etc). The reason for this separation now is purely comfort and because I already have all the hardware.
This PC began life in like 2013 or 2014 as remote desktop server so I could offload some work from my at the time only PC. I needed to do a bunch of video rendering (for previously mentioned self-hosted content library) and I wanted to be able to play games while I just set up a batch render job and checked it on the weekends. This worked out pretty well for me and I continued the trend due to ease of use. I regularly upgraded this machine over the years with hand-me-down parts that got pulled out of my gaming PC so this PC has always had a reasonably good GPU and CPU, albeit perhaps a couple generations old. In its original configuration, I had it hooked up to my TV simply because I needed to plug it in to a monitor and, well, the TV was right there. I was in a small apartment at the time so, even though I did have dedicated closet space, it didn’t really save me any room.
After getting the bulk of my rendering done, the PC started sitting idle for most of its time and I started looking into things I could use it for since it seemed like a waste to me to have it and not use it. Eventually I realized that I could stop storing my content library on external hard drives and move those hard drives into the PC case and share them over my local network. From there, I naturally started just watching videos off the machine since it was already hooked up to my TV and things evolved from there.
Eventually I stopped using network shares and setup a dedicated network attached-storage (NAS) appliance. This gave me quite a bit more control over the structure of my setup and greatly increased the reliability by allowing me to setup redundant drives, snapshots, file history, drive health monitoring, and more. For this, I used software called trueNAS (and I still use it today). I liked trueNAS because it was a dedicated operating system that you could load, attach drives to, and it just worked. Very easy to use, very easy to manage. Ideally, I would have installed this operating system on bare-metal and then hosted a Windows VM that I could use for remote desktop and continue with my existing workflow. However, at the time, trueNAS did not offer PCIe pass-through which is what would have allowed me to attach my GPU directly to the VM for use with rendering. Competitors like unraid did offer this functionality, but this is paid software that I didn’t want to pay for and, more importantly, the current iteration of this computer was using an Intel Q67 chipset which did NOT offer PCIe pass-through despite having an integrated GPU on the i7-4770k and then a whole separate AMD Fury X. Which, yes, I achnowledge is complete and utterly ridiculous overkill for a NAS/HTPC but by virtue of me upgrading my hardware, it was effectively free.
So, with both these hardware and software limitations in mind and a hard requirement for accessing this GPU in a Windows operating system, I ended up installing Windows 10 on bare metal and then hosted my trueNAS instance via Hyper-V on the machine. This is the exact opposite thing to do for hardware reliability and ease of use. This setup meant that drive health monitoring was no longer available via trueNAS and I never setup anything dedicated on the Windows host. Additionally, because it’s Windows, regular restarts happen and this means shutting down the NAS every single time. I had it setup to automatically handle the power state transitions and the lack of reliability wasn’t really a big issue because I was the only real client for this machine. I know when it goes down so there’s no need to schedule down-time.
Anyway, years go by and I got the reliability issues laregely worked out but then I started using the HTPC more and more via remote desktop for my regular computing and browsing. It got to the point where I stopped using my laptop and gaming PC almost entirely aside from accessing this device via remote desktop. Why bother worrying about transferring browser sessions when I can just literally use the same browser regardless of the device I’m on? I’d use it on mobile, and at work too by this point. It was an extremely convenient setup for me and I even installed a couple new (instead of hand-me-down) upgrades to give this machine enough of a boost to handle VR gaming too. My gaming PC has always been in a home office type space and I’ve never had enough room around it for VR. This PC changed that.
Now we’re in my modern era. Over the past year, I ended up splitting off the NAS appliance entirely into its own dedicated PC. I wanted to continue the trend of hand-me-down hardware since I had more than enough to make it work but alas, Murphy’s law struck and I ended up completely bricking donor machine while I tried splitting it off into two separate machines. I’m still not 100% the exact cause but the end result was me purchasing two new MSI B550 motherboards and an AMD 5600G for the NAS. I was going to roll back to the intel i7-4770k for the NAS since that CPU is still overkill for this use but I didn’t realise how unreliable the ASUS Q67 had gotten. I probably could have recapped the board and gotten it working better but I picked this opportunity to get something I won’t have to tinker with. Well, turns out the 5600G came with bent and missing pins so it was a tinker job anyway but at least that was a one-time thing. Tangentially, I learned that soldering new pins on an AM4 CPU is both easier and more difficult than I had imagined. But in the end, it worked out and I’ve now got three separate PCs, all filling a dedicated role and networking together to make my life more easy and comfortable.
current hardware and current use cases
So, the NAS role has been split off and is no longer a requirement for this box. Before beginning this project, I was only using the HTPC for playing controller based games on the big screen, for watching content off my NAS, and for general computing via remote desktop. Here’s the current hardware configuration:
CPU: AMD 5600x w/ Wraith Prism Cooler (because RGB and it came with the AMD 1700x I bought years ago) RAM: 16GB DDR4 (@3733 MT/s) GPU: Asrock 9070 XT (Challenger) Motherboard: MSI Pro-B550M-VC-WIFI (with newish intel wifi card instead of that Mediatek garbage it came with) Storage: Adata XPG SX8800 1 TB NVME (Gen 3, OS drive) + Crucial MX500 1 TB SATA (additional game storage, currently unusued) PSU: 800W CoolerMaster OEM supply intended for an HP Omen 30L Case: JONSBO D32 Pro Monitor: Samsung Smart TV from 2015, 1080p@60 (UN60H6300AF) Input (M&KB): Logitech K400 trackpad and wireless keyboard combo Input (Game): Xbox Series Controller with OEM Dongle
After splitting off the NAS, I moved most of the RAM over which left this machine with only a small amount of really fast memory. I can make the numbers go up but then performance goes down since this is the only dual stick kit I have. Performance in games is important to me and 16GB is enough for doing pretty much anything these days, just not all at the same time.
problem statement
I’m actually relatively happy with my current setup. I like having a sort of test machine that I can just throw things at without impacting my “primary” PC and see what sticks (my day job is in IT if it wasn’t already obvious), and this machine fulfils nearly all of my current wants. Except one thing. I really want to play Echoes of Aincrad. Opinions on the game aside, this single game (demo) exposed a massive flaw with my current gaming setup. It seems that my HTPC is incapable of running unreal engine games with ray tracing enabled. I never noticed this previously because I usually don’t play unreal engine games (coincidence) on this PC or, when I do, I turn off hardware ray tracing features for performance reasons. For whatever reason, the developers decided to not include that toggle in the settings for this game.
This is how I discovered that AMD has been releasing absolute garbage drivers for the past year and change. Something broke at one point and was just never fixed. In hindsight, this could be related to the fact that this machine had an AMD 5700 XT before I got the 9070 XT and there could have been something left behind, despite running DDU. In troubleshooting this issue, I ruled out my RAM itself, the RAM overclock, my CPU, the CPU overclock, and just about everything else other than the GPU. I was starting to get seriously concerned that there was a hardware defect in my 9070 XT but since I broke my usual rule with this hardware purchase (it was an impulse buy driven by rising memory prices before the GPUs went up in price too instead of the usual hand-me-down), I know this thing should be covered by the factory warranty still. Researching this issue points to several possible culprits, either a mismatch in API versions on AMD’s side, broken RT configs in the hardware, or just bad drivers. There’s no real consensus on the cause but there are many different work-arounds to the problem, including rolling the driver version back to one made before the GPU even released. I hate this and it’s extremely frustrating to have this kind of issue.
All of this for literally one game. And I haven’t even bought the game yet, I just keep putting hours upon hours into the demo trying to see if I have the issue resolved. At one point, I even loaded the game up on my gaming PC and played through it there to rule out the game itself. Of course, it ran with zero issues on my Nvidia GPU.
Incidentally, right around the time I was dealing with this inane bullshit, Valve release steamOS 3.8 which includes official support for non-Valve hardware. And the machine that I’m currently struggling with just so happens to look an awful lot like a steam machine between the hardware specs and use-case. So, I decided to try it as a last ditch effort in getting my silly little game demo working. I acquired the recovery image per Valve’s instructions, wrote it to a flash drive, and dropped it on my machine. Of course, I disabled bitlocker on my OS drive and pulled it entirely for a blank SSD I had laying around in case I wanted to roll back or if I needed some files left behind, then I turned off secure boot in the BIOS, and just went to town.
initial experience – day 0
I’m somewhat security conscious so turning off secure boot does irk me a little. That being said, since secure boot is for Microsoft software and I’m no longer using Microsoft software, it only makes sense. From turning off secure boot to logging into the device after install, I think everything took about 15 minutes total. Initial boot off the USB was extremely quick, as is typical for a “Live Instance” of a Linux-based OS. Install consisted of repartitioning the SSD and copying a static image from the flash drive, all of which is handled automatically by the included installer scripts as long as you’ve got the appropriate hardware (which in this case means a NVME SSD–SATA devices won’t work with Valve’s script, regardless of if they’re mSATA, M.2, or full-fat 2.5”). Start the installer by clicking on the desktop icon, confirm that you’re good with wiping your internal storage, and then the installer handles everything else. Reboot the PC and the first start scripts finish formatting the drive to take advantage of remaining space (image sets up an ~8gb partition that gets expando’d on next boot), the OS installs an update and reboots, and then you’re dumped at the Steam login. From there, just login, install games, and play. At least, that’s the idea.
My setup wasn’t so straightforward. I purchased a Steam Deck when they first launched so I’m not unfamiliar with how the OS works. But this hardware is not a Steam Deck and many of the modules still assume it is. Before getting into the tweaks I had to do to the machine, let’s go over the tweaks I had to do with my workflow.
First and most important is that my remote desktop use case is wholly incompatible with non-Windows operating systems. This is due to the fact that I’m using Windows only software to fascilitate the connection. The alternative requires static IPs from my internet service provider (which usually incurs additional cost because ISPs are greedy), a domain, and a gateway. I don’t want to manage all that overhead for a thing I don’t need but just want because it’s convenient. This will make it stop being convenient. As a result, I’ve moved this workload back to the PC I started it on originally and now I just use my gaming PC for remote desktop work. This is probably something I should have done years ago but it was always more effort to change compared to the benefit it would provide.
As a result of this change, there is no longer a need for my HTPC to remain always on, nor is there any need for functionality beyond games (which, conveniently, SteamOS is designed around), and watching my content library on the big screen. So here are my thoughts on day-0, before I started diving into tinkering and fixing things.
Pros of switching to SteamOS over Windows 11
- OS is significantly faster to boot and open software
- PC seems to run cooler when idle or watching jellyfin based on significantly reduced fan noise (curves set in BIOS and unchanged between OS)
- No windows bullshit constantly nagging me (onedrive, edge, automatic updates (os and windows store both), automatically changing my fucking settings to their optimized defaults). Oh and I know you can turn a lot of this stuff off. The fact that I no longer have to research and write custom scripts for this is definitely a pro.
- K400 trackpad no longer trying to bring up the widget menu (mouse gestures that I admittedly never looked into disabling)
- Unreal Engine games (Echoes of Aincrad) no longer seem to intermittently crash
- 10 ft interface by default (though I could have just used Steam Big Picture on Windows so this barely counts)
- HDMI-CEC support (in the OS level)
- Weird frame rate jitter that I never noticed in some games (for example Forza Horizon 6 and Apple TV via web browser) until I swapped
- Forza Horizon 6 runs significantly better on the same hardware. 16GB of RAM is no longer a limiter with a more lightweight OS.
Cons (note: none of these are deal breakers and several would have been broken on windows too due to my specific hardware)
- Sleep timer based on inputs, not screen content. SteamOS sleeps with jellyfin running. Potential workaround involves fixing CEC, disabling sleep timer, and letting the TV put the box to sleep via CEC. Or just turn off sleep entirely. Not ideal.
- Can’t play Xbox games at all unless I want to stream them (but I don’t own any for PC and game pass kinda fuckin sucks now anyway so no longer a deal breaker)
- Gog and Epic games aren’t push button receive bacon anymore (but I’m not sure I’ll install any on this HTPC, maybe Divinity Original Sin 2 from Gog)
- Chrome Remote Desktop (host) will not work on linux, only windows (and maybe macos, idk, I’m not tim apple)
- 10 ft interface requires manual controller mapping for non-steam games (or just use k400 but would like to eliminate entirely)
- Controller Configurator for Steam Input is broken on my machine. Values will update but the UI will not. You have to set inputs, save and close, then open again and continue. Some options will refuse to set at all. Community configs work fine.
- Xbox Controller dongle unsupported, fixable with XONE – https://github.com/SavageCore/xone-steam-deck-installer
- USB wake seems to be broken? seems fixable with third party script – https://github.com/Solaris17/SteamOS-USB-Wake/
- BT wake not implemented with my hardware (untested with windows), maybe fixable with above or workaround via xbox controller dongle
- HDMI-CEC not implemented with my hardware, only Valve’s Steam Machines and Steam Deck Dock have this support at the hardware level
- No encryption support (but with roles swapped, there’s less of a desire for hardware encryption – potentially fixable since the base OS should support encryption)
- Backlight dimming seems to have been hijacked by the mobile brightness controls in KDE and is no longer working in jellyfin (but appears working in games), potentially resolvable at the same time as adding CEC support
- Game mode very aggressively sleeps mouse controls in favor of non-existent touch screen or controller button input–requires workflow change for me since used to k400 for navigation
- Signing into twitch so I can continue watching riot on the big screen is gonna be a fuckin task with my password manager, might just change my password
- No apple tv app. I expect HDCP to be an issue but I haven’t tried yet (waiting for Silo S3) but MS Edge is available so that might be a workaround if it works the same way as it does on windows. Alternatively, piracy is an option since I already have a jellyfin setup.
- Things that require fixing are above my skill level due to minimal linux experience. I have to rely on someone else having the same issue with the same hardware and publishing their fix in detail.
At this stage in my adventure, I’m feeling pretty bad. I am cautiously optimistic now that my games are running much more smoothly but the different OS introduced many curveballs to my normal routine. I want to continue trying SteamOS and give it a solid shake but I also really want to roll back to Windows 11 because I know it can be made to work and I know how to do so. Windows 11 is familiar and that makes it comfortable. SteamOS is new and that makes it scary. Despite this, I’ve decided to press forward because my games not working is a deal breaker for me whereas the SteamOS differences and quirks are just things to find workarounds for, tweak until it works, or just get used to.
post-honeymoon phase
I’m a bit miffed I had to move workloads to my gaming PC from this PC but overall, I think it was for the better because it made me consciously aware of many of my silly processes that were they way they were simply because that’s how they were. Functionally, my remote desktop experience is the same after moving it. Practically, I’m no longer leaving a computer on 24/7 in case I might want to access it when I’m not home. I now also only have to maintain the single device instead of maintaing both. In hindsight, it was getting kinda silly remoting into a PC 12ft away. Regardless, let’s move on to tweaks so I can resolve some of the cons from my list above.
Biggest thing was my issues waking the device. Turns out the issue was in my BIOS. PC was set to ONLY wake by a power button press. No inputs, no PCIe state changes, no RTC events, nothing. That was an easy fix though I do wonder why MSI decided on those defaults. My gaming PC has an ASROCK motherboard with the same chipset and more sane defaults. I just assumed they’d behave the same and that definitely was not the case. That being said, I cannot get the GPU or Bluetooth card to wake the machine. Not sure if there’s a hardware setting I’m missing, a hardware incompatibility, or something else. This is another path to the same end result as something else I’ve tweaked though so I’m not going to invest any more time into it.
Next on my list was getting HDMI-CEC working. The TL;DR of HDMI-CEC if you’re not already aware is that devices connected to each other via HDMI have some measure of control over anything and everything else in the chain. In practical terms, this means navigating SteamOS with the TV remote or having the one device boot up everything else when powered so that only one “power on” action needs to be taken for everything. For example, turning on the TV will turn on the PC too and vice versa. To my knowledge, Windows doesn’t support this at all and, other than the custom GPUs Valve is putting in their hardware, no desktop computers support this either.
Apparently, HDMI-CEC is commonly implemented in DisplayPort to HDMI adapters yet also rarely documented. My ASROCK 9070 XT does not have this feature on the native HDMI port but with a DP->HDMI adapter, the feature becomes available over DisplayPort. I don’t know why this is the way things are but here we are. Well, I was already using an adapter because I left the native HDMI port open for my VR headset. Again, this was a legacy decision since WMR VR headsets ONLY work on Windows 10. However, my generic dongle didn’t seem to expose this feature. I bought this UGREEN one because the reviews mention this specific feature. No dongle maker seems to document that they are enabling CEC over these things but I can confirm that this specific one is. At least, until UGREEN decides to change what device that listing goes to. Plug in dongle, make sure CEC is enabled on TV (Samsung calls it “Anynet+”), and it just works.
As mentioned previously, PCIe devices seem to be unable to wake my PC but the opposite is working. Proper support should be bi-directional but the end result is the same so long as I control power states from the PC instead of the TV. After switching to this dongle, now my TV automatically turns when the PC does and switches to the HDMI input I have it plugged into. This could be inconvenient if I only wish to use the TV and not the PC but I never do so it’s unlikely to become an issue. This behavior was inconsistent for me until I installed this vibe-coded CEC toolkit I found when researching HDMI-CEC. I don’t like the idea of using third party scripts for this kind of thing but it does work.
Last is my controller situation. I have an old Xbox One controller (the model without bluetooth) that I like using because I built it custom and it has several mods (case, sticks, battery). Without a working dongle, I cannot use this controller except via wire. This is not something I’m interested in. However, my Xbox Series controller will work fine over bluetooth but, again, PCIe wake doesn’t seem to work on my machine so I can’t turn on the PC with the controller and, now that I know it’s an option, that’s a function I desire. From here, I can think of three solutions, 1) use my old steam controller (the single stick one from 2015, not the dual stick one that just came out) but I never really liked that controller in the first place, 2) Use the XONE driver I discovered earlier in my research but, again, I don’t really like using third party scripts for stuff like this, especially when I can’t reverse engineer what the script is doing (my linux ignorance is showing), and 3) buy a new controller like the 8bitdo ultimate 2 that allegedly can wake a steam machine.
I tried the steam controller first and immediately remembered why I stopped using it in the first place. Technically, it works fine and solves my problem. It also provides additional functionality since SteamOS is designed to be used with a Steam Controller. But I just don’t like it. Next I tried the driver. Installing was straightforward but it did require setting a sudo password. SteamOS has no password by default and this breaks sudo. It’s easy enough to set a password, do the work, then remove the password later, however. I’m unsure if any SteamOS features will break by having the password so I removed it when I was done. The end result? My dongle just works now. I paired my controller to the dongle instead of bluetooth and now I’m able to use the controller I want to use and I did get some extra functionality out of it too. One of the power menus no longer has an option to switch the controller off when connected via the dongle but that option didn’t seem to work with xbox controllers anyway.
The end result? TV in standby and PC sleeping, I can just sit down on the couch, turn on my xbox controller, and it just pairs with the PC, triggers a wake event (dongle is USB and not PCIe and I explicitely enabled USB wake in the BIOS–there is no PCIe wake option for me to enable) which boots the PC and then the PC wakes the TV and switches it to the input. This is a much MUCH better experience than my previous setup and I don’t ever want to go back. I’m fully sold.
Yes, I can go back to managing my content library from this device, even with SteamOS. I can do my regular internet browsing and shitposting. I can do my video encodes and 3D modelling. I can even recompile my custom FFMPEG setup since doing that on Windows is an excercise in frustration (that involves using WSL anyway). I can do everything I used to do. But it’s easier to use Windows for that stuff and since I can, it doesn’t even bother me anymore. That being said, as an every day desktop OS, I’m still not convinced SteamOS is there. It can technically do everything you’d get on another PC but Steam is and always will be the primary use of this OS. To me, the console-like behavior of the OS trumps any and all of the cons I’ve still got on my list. The behavior that ONLY SteamOS can offer overrides the desire to do PC-like things. If this were my only PC, I might be a little more critical, especially since Valve’s whole deal with this OS is that it’s a normal PC that you can use for normal PC things. And it is. Mostly.
I am fully cognizant of the irony in being unable to use this gaming OS on my gaming PC too. I’d originally wanted SteamOS for my gaming PC but my gaming PC has an Nvidia GPU and Nvidia GPUs are unsupported in SteamOS. I’m sure it can be made to work, mostly, but, again, I don’t like having to rely on third parties for this stuff. I want the push button, receive bacon experience. If I wanted to tinker, I’d just go do that. I want this to work and I want it to be easy.