The Steam Machine certainly is a Linux Computer
I recently got a Steam Machine and wanted to write about the parts that other reviews I have seen left out, and give my own opinion.
Looking for a new device
I have been looking to upgrade my main computer (the device on my Desk that I use to connect to all the other computers I use) for some time now, the one I had before the Steam Machine was a 2021 14” MacBook Pro, which is still performing way better than the Steam Machine on paper, but lost nearly all its appeal after the software turned into unusable slop.
I already tried running Linux on the MacBook but that had its own issues and I went back to macOS on that device in the end.
But I decided I wanted to go back to Linux as my main OS, and the last time I used Linux that way was back in the Crunchbang Waldorf/Jessie days, (after that MacOS X turned into my main OS, and I only used plain Debian on servers and an old laptop for legacy things), so I knew the device should be at least coming with a proper option to have Linux installed (so no Apple, no Microsoft).
For some reason, none of the devices made by Linux-first vendors like Tuxedo or System76 really captured my interest, those all look like nice work machines, but not what I was looking for for my desk. I also looked at Framework computers but their devices look kind of weird and the prices were too high already before the Slopocalypse ate up all the worlds memory/storage for the next ten years.
Valve announces new hardware
I already had multiple hardware devices from Valve, the first Steam Controller, the Steam Link, (both of which I don’t use anymore but liked back in the day) and then a Steam Deck, which disappointed me immensely from the “it’s a Linux computer” side of things, when I found out that using the terminal is basically impossible due to the software keyboard being buggy (which the Steam Support describes as expected behavior), but I still use it to play games almost daily, and it does that very well, so I knew that at least the Steam Controller wouldn’t disappoint, and I registered to order one (I was too late for the pre-order phase).
Timing and Luck
At the point where sign-ups for the Steam Machine started, my registration for the Steam Controller was still waiting, so I registered for both Steam Machine variants that came with the Controller and unregistrered from the Steam Controller.
I guess I was lucky because I got put in the reservation queue for a 512GB Steam Machine with the Controller.
So basically this took the descision from me, the Steam Machine with controller was cheaper than all other options I had collected at that point, but worse performance-wise. Still, it was supposed to be better than the Steam Deck, which was my benchmark at the time (my “Chonk” gaming computer is a DDR3 dinosaur, it’s only better than the Steam Deck for some big titles, and always slower than it in single-core/ram related things).
“Your games on the big screen”
When the Steam Machine arrived I frist tried it out on my TV (so the way it was supposed to be used), it was a really nice experience, simply plug it in, wait a bit, sign in with the QR code on your phone and you can basically start installing games and play right away.
The games I play all work fine, but I don’t play any newer large games. I also can’t put most of them on Ultra Settings at 4K and get 60FS, so if you are after that, the Steam Machine is probably not a good choice for you.
But it’s enough for 4K gameplay on medium (large titles) or high (smaller titles) settings, which is enough for me.
NumLock
One thing that was really annoying but I am not sure what causes it is the NumLock state for the Steam Controller compared to the Steam Deck controls.
The Steam Controller layouts sync via the Steam Account (I think). And the layout I use for a game is using the numpad keys (2,4,6,8) to look around. The game works fine on the Steam Deck, but in the Steam Machine I have to reassign controls, because it inputs the arrow keys that are on the numpad keys when NumLock is Deactivated.
So to me it appears that NumLock is always on for the Steam Deck but off by default on the Steam Machine.
Steam Support refused to help me with this, as I was not using SteamOS anymore at the point in time I reported this, and thus couldn’t record a YouTube video about this issue for them (ridiculous but whatever).
LEDs
The only other thing I noticed was that the options for the LED strip in SteamOS are somewhat limited, it seems to be more annoying than useful (literally the only helpful thing is that it shows the download progress while a different source is shown on the TV).
“…and it’s a PC”
After I was done playing around with it, I decided to transfer it to my desk, and install plain Debian on it. SteamOS has multiple very annoying limitations, for example you can’t encrypt the system drive, have a properly locked user account, the RootFS does some weird read-only wannabe macOS things to lock you out and you can only properly install FlatPak Sandbox apps. On top of that, KDE is the main UI and since you can’t modify system files you can’t install alternatives or configure it to not be annoying (in my opinion, I know some people like that kind of UI and the way those appliKations are designed).
Weirdness ensues
Plain, encrypted Debian installed, I tried a basic stress test: “stress -c12”. Oh boy.
One thing about the Steam Machine which I think is weird is the power budget. According to the Hardware Specifications, the CPU seems to be limited to 30W TDP while the GPU has 110W available, both seem to be connected to the same cooler (according to the GamersNexus teardown, I haven’t yet amassed enough courage to try and not break the ribbon cables myself), so I’d think that this whole cooler has 140W TDP, and when the GPU is running with only 20W (according to lm-sensors, ran with watch -n1 sensors), the CPU should be more than able to run at full blast the whole time without breaking a sweat, right?
Then why does my “stress -c12” command cause the Steam Machine CPU to go up to 100°C and stay there, thermal throttling down to ~2GHz before the whole device just turns off after not even 30 seconds?
And why can I compile the Linux Kernel normally, which takes longer than that? (Valve Support refused to help me with this since I am not using SteamOS)
The LED Strip and Power LED both turn red almost immediately after starting the test, indicating an overheat situation according to Valves Steam Machine LED Reference, then fan does spin up, but the air coming out of the back of the device is kind of cold.
I have not yet checked if they left “REMOVE BEFORE USE”-foil on the Cooler/CPU-interface, since I am (still) scared of breaking the ribbon cables or making the cooling goop less effective. I will update this post if I do.
“There’s an LED strip, y’all!”
After wasting a bit of time with the thermal issue, I glanced toward the LED strip, which was still running the same boring single-color animation I had configured in SteamOS. There must be some way to control it, but /sys/class/leds only showed the power and keyboard LEDs.
Excuse me but what even is this, Valve?
Turns out there is a Kernel Module for that, which Valve doesn’t publish separately but only buried in their 4GB kernel source code git repo archive.
I want to emphasize my utter disappointment in the way they share the source code.
There is an existing SteamOS GitLab, where Valve published a proper GitLab hosted repo for the eInk Faceplate for the Steam Machine (among other things).
I don’t understand why the Linux Kernel source code is not just hosted at something like gitlab.steamos.cloud/SteamOS/linux
Instead they force you to go to a “secret” (support called it that) link (you can also find via Google on various Forums and Reddit) in SteamOS via “Settings > System > Compliance and Licenses > Source Code” (or similar), where you then have to manually sift through multiple folders and files (for the Steam Machine you need the “jupiter” version, “holo” source code seems to be for non-valve devices) until you find the 4GB linux kernel GIT REPO ARCHIVE, so what you download and extract is not the code itself, but the whole git repo in a non-checked out state.
So if you have downloaded and extracted the archive to ~/sources/kernel, and the HEAD file is in the kernel directory, you need to run git clone file://~/sources/kernel checked-out-folder in order to have the actual source files in “checked-out-folder” in your workdir.
In those files you should be able to find all needed files in order to make your custom kernel more compatible with the Steam Machine.
And in addition to that, they have a GitHub Organization, the kernel code in there hasn’t been updated since 9 years ago but this is the thing the Google Clankerbot will point you to with utmost confidence that this is the current kernel code for the Steam Machine (it it even understands what you mean, most of the time it thinks I am talking about a Dell Alienware device from 2014).
Controlling the LEDs from non-SteamOS
Regarding the LEDs, I already published a simple shell script to control the LEDs from the command line to GitHub: lfuelling/steam-machine-ledctl, the needed kernel module is in there too so you don’t have to manually extract it from the huge archive if you don’t use SteamOS.
One cool thing this script allows is to set a gradient between two colors over the length of the LED strip and then have the patrol effect run over the gradient instead of a single color, and of course changing the effect speed and colors to all possible values.
You can also use the script to hook into your notification handler in order to have certain notificaionts flash the LEDs or build a binary clock for the LED strip, etc.
Desktop UI
After the installation of Debian, I started with bringing up a setup as close to CrunchBang as possible, I ended up using labwc with waybar for the main UI.
Initially I used greetd with the tui greeter as login screen and swaylock as a lockscreen, but due to my weird monitor setup I had to wrap the tuigreeter in a blank labwc session so I can configure display resolution and scaling before the greeter is shown, in order to be able to read any text on the screen.
After login the first labwc was existed, terminal stuff came back and then my session started, this annoyed me already, and additionally, swaylock is just plain weird, a black screen with some circle thing showing up as you type…
I have probably turned into a super noob again after not being in the ecosystem for such a long time but I also kind of wasn’t in the mood for wasting more time with trying different solutions, all with their own quirks.
“Coding” a custom login/lockscreen
Since my Claude test subscription wasn’t expired yet I used the remaining quota I had on there to make it code a custom login screen that kind of looks like macOS.
You can set a video which will play when the screen is locked or nobody is logged in yet, after unlock the video will gradually slow down (there is still a short blank screen period, I can’t get rid of, where the terminal is visible due to some required handover which has to happen upon login) until it turns into a static desktop background whereever it stops, then resuming when the screen is locked again. You can also press escape on the lockscreen to put the system into hibernation.
If I get it into a non-garbage(/experimental) state before my subscription expires I might publish it, although I am still not sure if I should do it, since I don’t really understand (yet) what all the code does and I would also have to keep maintaining it, which would mean not being able to cancel the subscription…
If you know Rust and Wayland, would you be interested in taking a look at the code and maybe take over maintainership?
Gaming on Debian
I also installed Steam on Debian, and downloaded a few games, they all work fine, the GPU can go to it’s max TDP without the system overheating for some reason…
The only issue I saw was regarding In-Home Streaming using the Steam Link App, it seems that something in my wayland/labwc UI setup is causing problems with the screen recording, which in turn causes the main menu overlay to be centered in the middle as its own window instead of being shown above the main UI, as it happens in SteamOS.
Everything else seems to work the same on Debian as in SteamOS, of course mounting SD card, networking, etc. are all not handled by Steam anymore.
Summing it up
The Steam Machine certainly is a Linux Computer, if you are willing to work around the weirdness Valve added to it in order to keep people on SteamOS.
I also think it’s nice hardware, even tough it’s all plastic on the outside. The fan has a nice sound, not too annoying, although it’s not silent.
Another cool thing is the silent and relatively quick startup, there is no BIOS beep, the only thing shown before GRUB is a 2-second hint that you can press ESC to launch the BIOS setup (which is okay-ish to use, but made mainly for controllers). There is no way (or I didn’t find it) to change BIOS boot entries in the BIOS setup, you have to use efibootmgr in Linux to do that.
Vent Fumes
Sadly there are no vent fumes, the Steam Machine just smells like soldered PCB when it gets warm.
BUT: The vent fume smell is available a little bit on the Steam controller this time, but since it doesn’t have an actual vent I doubt the smell will stick around as long as it did with the Steam Deck (mine also stopped smelling at this point, and I didn’t get withdrawal symptoms).
Would I buy it again?
Probably. Maybe if the AI bubble pops, the price will get lower and a few more can be made. I would like to get a second one to use it with the TV running SteamOS, since the experience was pretty much perfect.
But not for the full price, that was main computer money that I had to spend because of the Clankerslopocalypse.
I hope NVIDIA pulls a Nortel sooner rather than later.
I hope this post was useful. If you have any comments, suggestions, or found errors please let me know!