<?xml version="1.0" encoding="utf-8" standalone="yes"?><?xml-stylesheet type="text/xsl" href="/index.xsl"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>./techtipsy</title><link>https://ounapuu.ee/tags/steam-deck/</link><description>Recent content on ./techtipsy, a blog written by Herman Õunapuu.</description><generator>Hugo -- gohugo.io</generator><language>en-GB</language><managingEditor>ihavesomethoughtsonyourblog@ounapuu.ee (Herman Õunapuu)</managingEditor><webMaster>ihavesomethoughtsonyourblog@ounapuu.ee (Herman Õunapuu)</webMaster><lastBuildDate>Sun, 24 May 2026 06:00:00 +0300</lastBuildDate><atom:link href="https://ounapuu.ee/tags/steam-deck/index.xml" rel="self" type="application/rss+xml"/><item><title>You can run Forza Horizon 6 on an unsupported AMD RX 400/500 series GPU on SteamOS</title><link>https://ounapuu.ee/posts/2026/05/24/forza/</link><pubDate>Sun, 24 May 2026 06:00:00 +0300</pubDate><author>ihavesomethoughtsonyourblog@ounapuu.ee (Herman Õunapuu)</author><guid>https://ounapuu.ee/posts/2026/05/24/forza/</guid><description>Compatibility layers can work in more ways than I thought.</description><content:encoded><![CDATA[<img src="https://ounapuu.ee/posts/2026/05/24/forza/media/cover_hu_ee486cb9b26a259d.jpg" width="1200" height="630" alt="You can run Forza Horizon 6 on an unsupported AMD RX 400/500 series GPU on SteamOS" /><p>This post serves as a personal bookmark and a mirror
of <a href="https://www.reddit.com/r/linux_gaming/comments/1ti2xpd/fixes_for_forza_horizon_6_fh101_cpu_cores_or/">this fantastic guide by Ok-Pace-1900 on /r/linux_gaming</a>
to ensure that this information does not get lost.</p>
<p>I learned the hard way that the GPU I have in a DIY Steam Machine PC, the AMD RX
480, <a href="https://forza.net/news/forza-horizon-6-thank-you">is strictly unsupported by Forza Horizon 6.</a></p>
<blockquote>
<p>Forza Horizon 6 will not work for AMD users with GPUs based on the Polaris or Vega architectures and older (for
example Radeon 400 and 500 series players). These architectures are below our minimum supported specification.</p>
</blockquote>
<p>I knew that asking for a refund on Steam would be the easy way out. Deciding against it, I did a quick search for the
FH201 error code and stumbled on the Reddit post mentioned above. My CPU is good enough for Forza Horizon 6 (Intel
i5-10500), so the additional launch options command that worked for me is the following:</p>
<pre tabindex="0"><code>VKD3D_FEATURE_LEVEL=12_1 VKD3D_CONFIG=descriptor_heap,no_upload_h_vram RADV_EXPERIMENTAL=heap,sync2 radv_wait_for_vm_map_updates=true %command% 
</code></pre>








<figure class="center">
  <a href="/posts/2026/05/24/forza/media/gaming.jpg">
    <img src="/posts/2026/05/24/forza/media/gaming_hu_6d44b8474b83d8ff.webp"
     width="1000"
     height="591"
     loading="lazy"
     decoding="async"
     alt="It&#39;s Forza time!">

  </a>
  <figcaption class="center">It&#39;s Forza time!</figcaption>
</figure>

<p>Simple fix, but the context around this is actually kind of funny. The way a lot of Windows-only games work on SteamOS
is via a translation layer referred to as Proton. With this trick, you can pretend that your GPU has some DirectX
features that it actually does not have, but it doesn&rsquo;t matter since it can be successfully emulated via translation to
Vulkan, which the GPU supports well!</p>
<p>As a result, I can play Forza Horizon 6 on a hacky SteamOS build, with 1080p low or medium settings. Low settings is a
60 FPS experience, with medium settings some areas like Tokyo can struggle a bit and drop below it to ~40 FPS.</p>
<p>Now all I need to do is to get rid of the urge to splurge on a great GPU, which would also require a case and PSU
upgrade&hellip;</p>
<p>Slightly off-topic, but can <em>you</em> monitor your gaming PC via Prometheus Node Exporter and visualize it in Grafana? :)</p>









<figure class="center">
  <a href="/posts/2026/05/24/forza/media/node-exporter.png">
    <img src="/posts/2026/05/24/forza/media/node-exporter_hu_5c71223cb1c6ecfe.webp"
     width="1000"
     height="373"
     loading="lazy"
     decoding="async"
     alt="DIY Steam Machine metrics, visible in Grafana. Because I can.">

  </a>
  <figcaption class="center">DIY Steam Machine metrics, visible in Grafana. Because I can.</figcaption>
</figure>

]]></content:encoded></item><item><title>SteamOS on a ThinkPad P14s gen 4 (AMD) is quite nice</title><link>https://ounapuu.ee/posts/2026/02/09/year-of-the-linux-desktop/</link><pubDate>Mon, 09 Feb 2026 06:00:00 +0200</pubDate><author>ihavesomethoughtsonyourblog@ounapuu.ee (Herman Õunapuu)</author><guid>https://ounapuu.ee/posts/2026/02/09/year-of-the-linux-desktop/</guid><description>This is the year of the Linux (gaming) desktop. Or laptop.</description><content:encoded><![CDATA[<img src="https://ounapuu.ee/posts/2026/02/09/year-of-the-linux-desktop/media/cover_hu_fedc9f8a0aa21ac7.jpg" width="1200" height="630" alt="SteamOS on a ThinkPad P14s gen 4 (AMD) is quite nice" /><p>In April 2024, I wrote on the Lenovo ThinkPad P14s gen 4
and <a href="/posts/2024/04/12/lenovo-p14s-gen4/">how it does not suck under Linux.</a></p>
<p>That is still true. It&rsquo;s been fantastic, and a very reliable laptop during all that time.</p>
<p>The P14s gen 4 comes with a CPU that is still solid today, the AMD Ryzen 7 PRO 7840U, and that comes with impressive
integrated graphics in the form of an AMD Radeon 780M.</p>
<p><a href="/posts/2024/06/02/steam-deck/">I&rsquo;ve had a Steam Deck.</a></p>
<p><a href="/posts/2025/12/01/steam-machine/">I&rsquo;ve also accidentally built a Steam Machine.</a></p>
<p>I <em>had</em> to put SteamOS on this laptop to see how well it does. I did a quick Bazzite test the last time around, but
after being impressed with how well the stock SteamOS image runs on a random machine with an AMD GPU, I had to test
that, too.</p>
<h2 id="installing-steamos-on-usb-storage">
  <a class="heading-anchor" href="#installing-steamos-on-usb-storage">Installing SteamOS on USB storage<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>The normal way to install SteamOS on a machine is
to <a href="https://help.steampowered.com/en/faqs/view/65B4-2AA3-5F37-4227">take the Steam Deck recovery image</a> and to install
it on your own machine that has one NVMe SSD.</p>
<p>I didn&rsquo;t want to do <em>exactly</em> that, I wanted to run it off of an USB SATA SSD, which the recovery image does not
support, as it hard-codes the target SSD for the SteamOS installation to <code>/dev/nvme0n1</code>. There&rsquo;s a handy project out
there <a href="https://github.com/louij2/steamos_custom_install">that customizes the recovery script</a> to allow you to install
SteamOS to <em>any</em> target device, but I learned about that after the fact.</p>
<p>I went a slightly different route: I imaged the SteamOS installation from
my <a href="/posts/2025/12/01/steam-machine/">DIY Steam Machine build,</a> wrote it to the 4TB USB SSD that I had available for
testing, and after that I resized the <code>/home</code> partition to take up the full disk. <em>Bam,</em> clean SteamOS on a USB SSD!</p>
<p>Oh, and before I did that, I did the same process but to a 128 GB Samsung FIT USB 3.0 thumb drive.</p>
<p><strong><em>It worked.</em></strong></p>
<p>The game library images did load a bit slowly, but it was a great demonstration of how low you can go with the hardware
requirements. I wouldn&rsquo;t recommend <em>actually</em> installing games on such a setup as that would likely kill the USB thumb
drive very quickly.</p>
<h2 id="performance">
  <a class="heading-anchor" href="#performance">Performance<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>I ran the SteamOS setup on this laptop over a USB-C dock that only supports running at up to 4K at 30Hz, so I did
testing at 1080p 60Hz setup. You&rsquo;re unlikely to want to run this setup at 4K anyway, unless you&rsquo;re a fan of light, easy
to run games like Katamari or Donut County.</p>
<p>In most games, the experience was enjoyable. 1080p resolution, maybe change the settings to medium or low in some cases,
and you&rsquo;ll likely have a solid gaming experience.</p>
<p>Forza Horizon 4? No problem, 1080p high settings and a solid, consistent experience.</p>
<p>Need for Speed Hot Pursuit Remastered was an equally enjoyable experience, and I did not have to turn the settings down
from high/ultra.</p>
<p>God of War Ragnarök was pushing the setup to the limits. With 1080p, low/medium settings you can expect 30+ FPS. If you
include AMD FSR settings in the mix and also enable FSR frame generation, you can have a perfectly enjoyable 50-60 FPS
experience. Some UI hints were a bit &ldquo;laggy&rdquo; with frame generation, but I&rsquo;m genuinely surprised how well that rendering
trick worked. I&rsquo;ll admit it, my eyesight is not the best, but given the choice of a crisp but laggy picture, and a
slightly blurrier but smoother experience, I&rsquo;d pick the latter. After a pint of Winter Stout, you won&rsquo;t even notice the
difference.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup></p>
<p>Wreckfest was also heaps fun. It did push the limits of the GPU at times, but running it at 1080p and medium/high
settings is perfectly enjoyable.</p>
<p>The observed power usage throughout the heaviest games measured via SteamOS performance metrics (<code>mangohud</code>) were around
30-40 W, with the GPU using up the most of that budget. In most games, the CPU was less heavily loaded, and in the games
that required good single thread performance, it could provide it.</p>
<h2 id="the-steamos-revolution">
  <a class="heading-anchor" href="#the-steamos-revolution">The SteamOS revolution<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>I like SteamOS. It&rsquo;s intentionally locked down in some aspects (but you can unlock it with one command), and the
Flatpak-only approach to software installation will make some people mad, but I like this balance. It almost feels like
a proper console-type experience, <em>almost</em>.</p>
<p>Valve does not officially support running SteamOS on random devices, but they haven&rsquo;t explicitly prevented it either.
I <em><strong>love</strong></em> that.</p>
<p>Take any computer from AMD that has been manufactured from the last 5 years, slap SteamOS on it, and there is a very
high chance that you&rsquo;ll have a lovely gaming experience, with the level of detail and resolution varying depending on
what hardware you pick.</p>
<p>A top of the line APU from AMD seems to do the job well enough for most casual gamers like
myself, and if <a href="https://frame.work/ee/en/desktop?tab=gaming">the AMD Strix Halo based systems were more affordable,</a> I
would definitely recommend getting one if you want a small but efficient SteamOS machine.</p>
<p>Last year, we saw the proliferation of gaming-oriented Linux distros.</p>
<p>The Steam Machine is shipping this year.</p>
<p><a href="https://www.youtube.com/watch?v=URbW3j_GYKg">DankPods is covering gaming on Linux.</a></p>
<p>2026 <em><strong>has</strong></em> to be the year of the Linux (gaming) desktop.</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>that&rsquo;s the <em>tipsy</em> part in <em>techtipsy</em>&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded></item><item><title>Oops, I accidentally built a Steam Machine</title><link>https://ounapuu.ee/posts/2025/12/01/steam-machine/</link><pubDate>Mon, 01 Dec 2025 06:00:00 +0200</pubDate><author>ihavesomethoughtsonyourblog@ounapuu.ee (Herman Õunapuu)</author><guid>https://ounapuu.ee/posts/2025/12/01/steam-machine/</guid><description>I was longing for a Steam Deck that had more oomph. Guess Valve felt that way, too.</description><content:encoded><![CDATA[<img src="https://ounapuu.ee/posts/2025/12/01/steam-machine/media/cover_hu_1163f60b6daf33d9.jpg" width="1200" height="630" alt="Oops, I accidentally built a Steam Machine" /><p><a href="/posts/2024/06/02/steam-deck/">I like the Steam Deck.</a> It&rsquo;s what convinced me that gaming on Linux is actually viable
now.</p>
<p>But after playing through games like God of War Ragnarök<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>, I felt like I needed an upgrade. I love playing with the
Steam Deck, but what I love more is playing without having to worry about playing around with graphics settings a lot.
Great story and gameplay can only hide the fact that you&rsquo;re running at 720p 30Hz on a big screen for a little bit.</p>
<p>I also get to play relatively rarely, so I might as well make it a better, more enjoyable experience. Quality vs
quantity.</p>
<h2 id="the-specs">
  <a class="heading-anchor" href="#the-specs">The specs<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>I went on a look-out for a used PC with roughly these requirements:</p>
<ul>
<li>any modern 6-core CPU or better
<ul>
<li>includes both Intel and AMD as the CPU does not matter much here<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup></li>
</ul>
</li>
<li>an AMD GPU that can do 1080p/4K gaming, depending on the game
<ul>
<li>NVIDIA was out of the question due to lack of support on SteamOS</li>
<li>Intel GPUs are a risk that I was not willing to take right now</li>
</ul>
</li>
<li>16+GB RAM</li>
<li>has to support an NVMe drive
<ul>
<li>using the SteamOS recovery image method is dependent on this</li>
</ul>
</li>
<li>acceptable case, PSU and cooling setup
<ul>
<li>if it does not burn the house down and makes the machine cool and quiet, then I&rsquo;m fine with anything</li>
</ul>
</li>
</ul>
<p>The AMD GPU being a hard requirement turned out to be an interesting challenge. I wasn&rsquo;t looking into putting together a
custom build, but was rather going for a setup that works and that I can customize according to my specific needs. Turns
out that most of the PC-s out there on the market are all based around NVIDIA GPU-s, and AMD builds of this range are
relatively rare, with a guesstimate of the ratio being roughly 10 NVIDIA-based machines to 1 AMD-based machine. The good
side of this is that the selection process was made way simpler as I got to choose between 3-4 options in the end.</p>
<p>During my search I also saw some machines that I would call absolute overkill, and I <em>almost</em> got one in a bidding war,
but eventually I found a more sensible option. It also included a monitor, keyboard, mouse and three SSD-s that I didn&rsquo;t
really need, but the PC itself was decent.</p>
<p>Here&rsquo;s what I landed on:</p>
<ul>
<li>Intel i5-10500
<ul>
<li>6 cores 12 threads at a reasonable speed (4.2 GHz in real-life use)</li>
</ul>
</li>
<li>adequate Cooler Master CPU cooler that does a lot of RGB if needed</li>
<li>16 GB DDR4 RAM @ 2666 MT/s
<ul>
<li>I soon upgraded this to 32 GB because my brother had some leftover modules from his own memory upgrade</li>
<li>I forced the modules to run at 3200 MT/s. It&rsquo;s memtest-stable so good enough for me.</li>
</ul>
</li>
<li>AMD RX 6600XT with 8GB VRAM
<ul>
<li>some might scoff at the VRAM amount, but coming from a Steam Deck where 16GB was shared between CPU <em>and</em> GPU,
this is plenty!</li>
</ul>
</li>
<li>512GB NVMe SSD</li>
<li>three 256GB SATA SSD-s
<ul>
<li>previous owner put them in as RAID0, which is clever and works well as a game library</li>
</ul>
</li>
<li>some Gigabyte motherboard that works
<ul>
<li>it really doesn&rsquo;t matter here</li>
</ul>
</li>
<li>some Fractal Design case, possibly a Define-series one
<ul>
<li>all I know is that it&rsquo;s huuuuuuuuuge</li>
</ul>
</li>
</ul>









<figure class="center">
  <a href="/posts/2025/12/01/steam-machine/media/internals.jpg">
    <img src="/posts/2025/12/01/steam-machine/media/internals_hu_bf4c78ee5ba4e1f5.webp"
     width="1000"
     height="751"
     loading="lazy"
     decoding="async"
     alt="The inside look into the build.">

  </a>
  <figcaption class="center">The inside look into the build.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/12/01/steam-machine/media/rgb.jpg">
    <img src="/posts/2025/12/01/steam-machine/media/rgb_hu_7d50a9a9017e9a2e.webp"
     width="751"
     height="1000"
     loading="lazy"
     decoding="async"
     alt="The RGB glow doubles as a night light.">

  </a>
  <figcaption class="center">The RGB glow doubles as a night light.</figcaption>
</figure>

<p>All-in-all, it cost me 365 EUR in Estonia in October 2025, and so far I&rsquo;ve made about 25 EUR back from the SSD sales
alone, with some items still up for sale. It&rsquo;s not as portable as a Steam Deck, but it&rsquo;s cheaper even if we account for
the cost of the game controller and cables/accessories/adapters that you usually need.</p>
<h2 id="the-setup">
  <a class="heading-anchor" href="#the-setup">The setup<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>Regarding the operating system choice, I tried both SteamOS from the Steam Deck recovery image,
and <a href="https://bazzite.gg/">Bazzite</a>. Both work fine and in the default couch gaming mode you won&rsquo;t notice a difference,
but I ended up defaulting to SteamOS because I had my setup and configuration changes tuned around that. The SteamOS
recovery image approach does assume that you have an NVMe drive available, so if you lack one, you&rsquo;re better off trying
Bazzite as that can be installed on any drive.</p>
<p>I replaced the NVMe SSD with a cheap 128GB one and utilized the bigger drive
in <a href="/posts/2025/11/18/lattepanda-iota/">the LattePanda IOTA setup</a> that now serves as my home server.</p>
<p>As a game library drive, I took a 1TB Samsung SSD that I had around, which roughly matches the storage that I had
available on my Steam Deck that I ended up modding with a 1TB M.2 2230 SSD. With games like God of War Ragnarök taking
up around <strong><em>176GB</em></strong>, it&rsquo;s not going to be the most luxurious arrangement, but for now it&rsquo;s okay.</p>
<p>The Fractal case that it came up with was one that is fully metal, with sound dampening material present on the side
panels. It&rsquo;s a bit banged up, but still a pretty nice experience if you have the room for storing one in your setup. The
case had one flaw that I stumbled upon: the power button on the Fractal case liked to get stuck, which seems to be a
common issue with that model. I fixed that with a random power button that I sourced from a local electronic parts
supplier for a few euros and that works really well now, with the additional bonus of it being <em>slightly</em> more
cat-proof.</p>
<p>The default fan curves on the motherboard were a bit too aggressive, so I had to slightly tune them down, and now the
machine is quiet while doing a great job with keeping the internals cool. You can hear a subtle whirring when you&rsquo;re in
the same room with it, but during gaming it stays at reasonable volumes and is not noticeable. Certainly quieter than a
Steam Deck would be.</p>
<h2 id="the-gaming-experience">
  <a class="heading-anchor" href="#the-gaming-experience">The gaming experience<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>The AMD GPU is a low/midrange model, but it gets the job done in 1080p gaming, and with a lot of titles it can do 4K
with ease. In God of War Ragnarök I stuck with 1080p and cranked the settings, but with games like Need for Speed Hot
Pursuit Remastered, I pushed the resolution to 4K with high/ultra settings, and it runs smoothly at 60Hz.</p>
<p>This setup also taught me that <em><strong>Linux supports HDR now</strong></em>, which was news to me! My tech setup usually lags behind the
state of the art, mostly because I don&rsquo;t really see a need to upgrade to the latest and greatest thing out there if the
current one works well enough, but this was a really nice surprise. My TV has a crappy HDR implementation, so I don&rsquo;t
get the full HDR experience, but it&rsquo;s nice to see the TV show that HDR logo when I start up the machine.</p>
<p>Regarding the gaming experience, I&rsquo;ve only noticed a few sore spots.</p>
<p>For whatever reason, the Need for Speed (2015) just does not start up on anything but an actual Steam Deck. It just
doesn&rsquo;t work here. I can&rsquo;t be arsed to investigate this yet, the wonky physics in this game are perhaps not worth that
effort.</p>
<p>It&rsquo;s also clear that the choice of an Intel CPU is generally fine, but in God of War Ragnarök it was running <em>too</em> well,
so the CPU kept dropping down to lower clock speeds, which then made the game performance inconsistent. Finding that
this was the issue was actually quite straightforward: when I first loaded the game, the shader compilation was taking
place in the background and even though the CPU was at a constant 100% usage, the game ran quite smoothly. It only
started stuttering after that was done, and the integrated <code>mangohud</code> setup helped confirm the issue as its most
detailed preset shows the frame time and CPU clock speed graphs really well.</p>
<p>Since this is just a Linux box, then you can of course run a few commands to fix it.<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup></p>
<p>Here&rsquo;s how I fixed it.</p>
<p>Create a desktop entry at <code>/home/deck/.local/bin/its-gaming-time.desktop</code> with the contents:</p>
<pre tabindex="0"><code>[Desktop Entry]
Name=Gaming Time!
Exec=/home/deck/.local/bin/its-gaming-time
Comment=
Icon=
Type=Application
Terminal=true
</code></pre><p>Create a file <code>/home/deck/.local/bin/its-gaming-time</code> with the contents:</p>
<pre tabindex="0"><code>#!/bin/bash
# Set performance mode
echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

# Set min_perf_pct to 100 (forces min freq = max freq)
echo 100 | sudo tee /sys/devices/system/cpu/intel_pstate/min_perf_pct
</code></pre><p>Don&rsquo;t forget to mark the script as executable with <code>chmod +x /home/deck/.local/bin/its-gaming-time</code>.</p>
<p>Note that the script above does require that you have set up passwordless <code>sudo</code> on the SteamOS installation.
This can be configured in <code>/etc/sudoers.d/wheel</code>, just make sure that the line starting with <code>%wheel</code> looks like this:</p>
<pre tabindex="0"><code>%wheel ALL=(ALL) NOPASSWD: ALL
</code></pre><p>With all that set up, in desktop mode, right-click on the desktop shortcut, &ldquo;Add to Steam&rdquo;, and now you can run this
script any time in Steam gaming mode, even while a game is running!</p>
<p>All-in-all, I&rsquo;m very satisfied with the experience that a cheap gaming PC box provides with SteamOS. The installation is
painless, my wireless controllers just work, and aside from a few rare exceptions, my games run really well.</p>
<p>It&rsquo;s also way easier on my eyes and with the 4K resolution I can actually see oncoming cars better in games like Need
for Speed Hot Pursuit Remastered.<sup id="fnref:4"><a href="#fn:4" class="footnote-ref" role="doc-noteref">4</a></sup></p>
<h2 id="the-gabecube">
  <a class="heading-anchor" href="#the-gabecube">The GabeCube<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>Less than three weeks after buying that gaming
PC, <a href="https://store.steampowered.com/sale/steammachine">the Steam Machine was officially announced.</a></p>
<p>The <strong><em>rumored</em></strong> specs suggesting a 6 core/12 thread CPU, 16GB DDR5 RAM, and a custom 8GB VRAM AMD GPU that seems
to be roughly comparable to an AMD RX 6600XT-ish level of performance.</p>
<p>It seems that I have accidentally built a Steam Machine. Oops.</p>
<p>Of course, the specs and final performance are not public at the time of writing, and the Steam Machine has many
benefits (better SteamOS compatibility, good WiFi, smaller size, likely more efficient and quiet), but it&rsquo;s still
interesting how close I got with my setup and selection criteria.</p>
<p>I was slightly disappointed that I got this machine right before that announcement, but then I reminded myself of the
fact that I can enjoy games on the big screen <em><strong>right now,</strong></em> and the Steam Machine is scheduled for a release in Q1
2026, which can be as late as 31st of March 2026.</p>
<p>And hey, when the Steam Machine <em>does</em> come out and I decide to get one, the current gaming desktop will make for a very
good home server candidate with all the room that it has available, and all the six SATA ports on the motherboard
sure look tempting. I&rsquo;m pretty sure that the Fractal case also allows something crazy like 17+ hard drives installed in
it.</p>
<p>This approach of building my own Steam Machine of sorts did lead to me selling my Steam Deck. Better to have someone
else enjoy it than having it sit in a box until its battery dies. That also serves as a major sign of confidence for
this big box that makes my sparse downtime sessions more fun.</p>
<p>If you have a machine with a modern AMD GPU, then give SteamOS a try, you might be surprised at how well it works. Even
a laptop with an AMD APU can do it, as long as you temper your expectations regarding the image quality.</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>it&rsquo;s a banger, try it if you&rsquo;re into the story, or you just want to indiscriminately smash and kill.&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>this is called <em>foreshadowing</em>&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:3">
<p>some might see it as &ldquo;ugh, Linux moment&rdquo; type of thing, but I see it as freedom to fix issues that you would
otherwise be unable to even diagnose and address. Power to the players!&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:4">
<p>you can probably tell that I had a blast replaying that game for the 5th time recently. It&rsquo;s not even the best NFS
game, and yet I love playing it over and over again.&#160;<a href="#fnref:4" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded></item><item><title>Steam Deck: I like it</title><link>https://ounapuu.ee/posts/2024/06/02/steam-deck/</link><pubDate>Sun, 02 Jun 2024 06:00:00 +0300</pubDate><author>ihavesomethoughtsonyourblog@ounapuu.ee (Herman Õunapuu)</author><guid>https://ounapuu.ee/posts/2024/06/02/steam-deck/</guid><description>It runs Linux and you can peek under the hood if you want to, but that's not the point.</description><content:encoded><![CDATA[<img src="https://ounapuu.ee/posts/2024/06/02/steam-deck/media/cover_hu_de171b612b822e85.jpg" width="1200" height="630" alt="Steam Deck: I like it" /><p>I got a <a href="https://store.steampowered.com/steamdeck">Steam Deck</a>.</p>
<p>Only took me a year or so of contemplating getting
one, <a href="/posts/2022/12/01/holoiso-steam-deck-experience/">and trying out HoloISO, the unofficial SteamOS installer</a>
finally convinced me to get one.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup></p>
<p>It took another year to actually get down to writing down my thoughts on it.</p>
<p>This post is written from the perspective of a software developer who used to play video games a lot as a teenager,
less so as an adult, and as someone who dabbles with Linux as a hobby.</p>
<h2 id="overview">
  <a class="heading-anchor" href="#overview">Overview<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>The <a href="https://www.steamdeck.com/en/oled">Steam Deck OLED exists now</a>, but back when I got my Steam Deck, it came in three flavours, and in the interests of my
budget I opted for the cheapest option that came with
only 64 GB of storage (eMMC based).</p>









<figure class="center">
  <a href="/posts/2024/06/02/steam-deck/media/deck-packaging.jpg">
    <img src="/posts/2024/06/02/steam-deck/media/deck-packaging_hu_61f9f98d0950e0bc.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="Steam Deck, the packaging, and cat.">

  </a>
  <figcaption class="center">Steam Deck, the packaging, and cat.</figcaption>
</figure>

<p>I also got a 512 GB microSD card to hold all the games.
All in all, this setup cost about 470 EUR. Certainly cheaper than the 512 GB NVMe SSD model that sold for 679 EUR at
the time of writing. The shipping estimate to Estonia was about 1-2 weeks, and mine arrived in almost exactly 1 week,
which was nice. And in one piece as well!</p>









<figure class="center">
  <a href="/posts/2024/06/02/steam-deck/media/deck-storage.jpg">
    <img src="/posts/2024/06/02/steam-deck/media/deck-storage_hu_64cca68031d3f7fe.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="Half a terabyte of games, all in that small microSD card.">

  </a>
  <figcaption class="center">Half a terabyte of games, all in that small microSD card.</figcaption>
</figure>

<p>I don&rsquo;t have the official <a href="https://www.steamdeck.com/en/dock">Steam Deck Dock</a> (try saying that 10 times in a row), but what I do have is a vertical laptop
stand and a Dell WD19TB dock. As long as you leave a gap for airflow, then this combination works quite well if you
want to use the Steam Deck in a docked mode. The combination of this dock and the Steam Deck also works nicely, the
3440x1440p ultrawide monitor gets picked up fine and even the gigabit Ethernet port works at the rated speed.</p>
<p>However, it seems like the Steam Deck USB-C compatibility can be dependent on your monitor and dock choice. While the Dell
WD19TB dock worked great with an ultrawide monitor, a Lenovo Thinkpad USB-C dock would fail to output anything to
the same monitor quite often. Turning on the setting to enable safe resolutions for the external display
and setting the resolution manually usually fixes it, but it&rsquo;s still quite annoying.</p>









<figure class="center">
  <a href="/posts/2024/06/02/steam-deck/media/deck-dock.jpg">
    <img src="/posts/2024/06/02/steam-deck/media/deck-dock_hu_39dbc18f3acf6a04.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="Steam Deck docked. ">

  </a>
  <figcaption class="center">Steam Deck docked. </figcaption>
</figure>

<h2 id="its-booting-linux">
  <a class="heading-anchor" href="#its-booting-linux">It&rsquo;s booting Linux!<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>Not long after I set the Steam Deck up, I switched to desktop mode and opened a terminal window to confirm that yes,
this thing is running Linux. Arch Linux, in fact, or at least a modified version of it.</p>









<figure class="center">
  <a href="/posts/2024/06/02/steam-deck/media/deck-terminal.jpg">
    <img src="/posts/2024/06/02/steam-deck/media/deck-terminal_hu_a5e83bb27b56f91c.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="btw I run Arch">

  </a>
  <figcaption class="center">btw I run Arch</figcaption>
</figure>

<p>But in all other aspects, it&rsquo;s just like a normal computer, with an actual UEFI setup that you can browse.
With the Steam Deck, you get the polished experience of a gaming console and the
freedom to do whatever you want to with the software and hardware.</p>
<p>You can also boot any x86-based Linux distro, like Fedora Linux.</p>









<figure class="center">
  <a href="/posts/2024/06/02/steam-deck/media/deck-fedora.jpg">
    <img src="/posts/2024/06/02/steam-deck/media/deck-fedora_hu_2ee4a7319253bc45.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="If all my other computers stopped working, then I could totally work out of a Steam Deck.">

  </a>
  <figcaption class="center">If all my other computers stopped working, then I could totally work out of a Steam Deck.</figcaption>
</figure>

<p>Or if SteamOS 3 is too limiting for you, then check out projects like <a href="https://bazzite.gg/">Bazzite.</a>
The experience will be very similar, but it&rsquo;s easier to tweak the setup to your
liking. Bazzite also allows you to format storage as <code>btrfs</code> with compression
enabled, meaning that you can fit more games on your device with a very slight
increase in CPU usage. I&rsquo;m sticking with the official Steam Deck experience for
now, but I&rsquo;m tempted to try Bazzite for the <code>btrfs</code> aspect alone.</p>
<p>The desktop experience on the Steam Deck is quite nice. You can easily boot into it
from the graphical interface, and it runs on KDE Plasma. The design language of KDE is an eyesore, but it makes up for it with the responsive UI.</p>
<p>The touchpads are not that big, but they&rsquo;re plenty good for
clicking around. Manually popping up the on-screen keyboard by pressing <code>STEAM + X</code> is a bit annoying at first,
but it gets the job done.</p>
<p>Installing software can be done in the graphical environment via the &ldquo;Discover&rdquo; app that ships with the desktop
environment.
One thing you&rsquo;ll probably notice is that the selection of software is a bit limited, and that&rsquo;s mainly down to how
the Steam Deck is set up by default. All the apps you install are installed via <a href="https://flatpak.org/">Flatpak</a> and while the selection of apps
that are available as a Flatpak grows with time, not everything is yet present there.</p>
<p>I was surprised to see that the <a href="https://help.steampowered.com/en/faqs/view/671A-4453-E8D2-323C">Steam Deck Desktop FAQ</a>
actually has useful information for an enthusiast like myself, even mentioning what a flatpak is.</p>
<h2 id="peeking-under-the-hood">
  <a class="heading-anchor" href="#peeking-under-the-hood">Peeking under the hood<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>During the first couple of months I went the tinkerers&rsquo; path, enabled the SSH server, unlocked the root partition for
modifications and automated the setup of my Steam Deck. While this thing is running a flavor of Arch Linux, it&rsquo;s not
really designed for these types of manual modifications. I had to mess around to get the Arch default package manager
<code>pacman</code> to work, but at one point messing with <code>pacman</code> and running commands that I didn&rsquo;t know much about, I blew up
the OS by force-installing some packages and throwing out a crucial dependency. Whoops.</p>
<p>Well, at least the Steam Deck OS recovery setup is quite straightforward. Download the OS recovery image, put it on an
USB stick, boot it on the Steam Deck and re-image the OS. There are also options to attempt repairs or open a terminal
window in case you know how to fix the mess you&rsquo;ve created.</p>
<p>One downside of the SteamOS recovery setup became apparent when Valve released a buggy software update around
summer/fall of 2023. The update was buggy for many users, including myself, with games crashing or running poorly. On my
Deck the SD card was also automatically reformatted for some reason so I had to redownload all the games I had on that. When I went to
download the recovery image, I discovered that you could only go back to the current, buggy version of Steam Deck OS.</p>
<p>By fiddling with the download link I could navigate to a web directory where older recovery images were present. Those
weren&rsquo;t much help though. Although you could boot into an older version during the initial Steam Deck setup, it would
auto-update to the newest version automatically, with no obvious way to bypass it.</p>
<p>The real workaround would have been
to manually boot into the older version of the OS that sits on the other partition and not update for a while. I unfortunately
discovered that <em>after</em> I had re-imaged the Steam Deck, which formats the whole drive.</p>
<p>I&rsquo;ve now stopped with the tinkering. I still have an SSH server running on it, but it&rsquo;s
there so that I can install my favourite applications as flatpaks and deploy the
backup script, via Ansible. That&rsquo;s it.</p>
<h2 id="its-booting-windows">
  <a class="heading-anchor" href="#its-booting-windows">It&rsquo;s booting&hellip; Windows?<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>









<figure class="center">
  <a href="/posts/2024/06/02/steam-deck/media/deck-windows.jpg">
    <img src="/posts/2024/06/02/steam-deck/media/deck-windows_hu_bae718fc31869609.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="Cursed Steam Deck.">

  </a>
  <figcaption class="center">Cursed Steam Deck.</figcaption>
</figure>

<p>Don&rsquo;t worry, Valve doesn&rsquo;t even officially support running Windows on this thing,
and <a href="https://store.steampowered.com/news/app/1675200/view/3131696199122435099">while you can do it</a>, I don&rsquo;t
really recommend it. You&rsquo;ll be giving up all the nice things about SteamOS while
also taking on the hassle of running Windows, including unexpected Windows updates.</p>
<h2 id="games-are-too-damn-big">
  <a class="heading-anchor" href="#games-are-too-damn-big">Games are too damn big<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>512 GB of storage on something as small as a fingernail was something I would have never expected to see 10 years ago,
but here we are. There are even bigger microSD cards out there, but those also cost a lot more.</p>
<p>And even with this marvel of technology I ran into issues when installing games. Install GTA V, Forza Horizon 4, and
God of War, and just like that about half of all that storage is gone.</p>
<p>The 64 GB internal drive was also quite limiting, especially due to shader cache and compatibility layer (Proton) related
files taking up a majority of it. The situation has improved now, but I still went ahead and replaced it with a 1 TB
M.2 2230 NVMe SSD that I ordered online for 74 EUR in May 2023, which still makes it a cheaper option than the 512 GB model sold at the time.</p>
<p>The new SSD works well, it&rsquo;s fast and doesn&rsquo;t seem to affect battery life negatively.
Changing it was quite simple, all you need is an appropriate screwdriver, good fingernails or a plastic spudger to get
the case off, and some delicate care when working inside the Steam Deck.</p>
<p>Before I replaced my SSD, I tried all sorts of wild-ass ideas to fit more games on my Steam Deck.</p>
<p>First, I tried <a href="https://nextcloud.com/">Nextcloud</a>.
The idea is simple: I&rsquo;m not going to be playing all my games all the time, so it makes sense to offload some of those
to my home server and retrieve them over the fast local network whenever I want to play them. This idea makes even more
sense
if your internet speeds are not that great.</p>
<p>The results were mixed. The syncing part was working surprisingly well with the transfer speeds capping out at 1 Gbit/s
over Ethernet
and actually being faster than the microSD card itself at times. However, the usability of this setup is not that great.
You can select which folders to sync in the Nextcloud Client application, but Steam will still believe that a game is
installed even if the game files are missing as long as the app manifest file is present. This can lead to annoying
situations where you try to play a game and discover that the games files are not present on your Steam Deck.</p>
<p>The second solution I tried out was <code>iSCSI</code>. I
followed <a href="https://www.reddit.com/r/SteamDeck/comments/z7sh8v/how_to_connect_to_an_iscsi_disk/">this guide on Reddit</a>.
Getting iSCSI to work was tricky even for someone like myself who should be able to do this technical stuff properly,
but I ended up getting it working. I formatted the iSCSI device as ext4, mounted it and made it a Steam library folder
in Steam desktop mode.</p>
<p>The benefit of this solution is that as long as you have access to the server, the iSCSI storage device will show up
on your Steam Deck as any other drive and games will just work. If your network is good enough, you can play games that
are stored on your server, which might make a lot of sense for games that you generally play in docked mode.
Transferring games to your internal storage is also simple, performant and can be done entirely within the Steam UI.
The iSCSI setup is not that great mainly due to the technical complexity of the setup, making it a no-go for the more
casual audience. The performance over Wi-Fi was also lousy, and it&rsquo;s also difficult to justify having a good chunk of
your
home server storage being permanently held up by Steam games.</p>
<p>After all that hassle, I went with the solution that most people would have gone with already: store games on an
external SSD. Duh. It has the same benefits as the iSCSI setup, but it&rsquo;s faster and you can bypass
a lot of the technical complexity. The external SSD is also automatically mounted
when you connect it to the Steam Deck if it&rsquo;s formatted as <code>ext4</code>, making it a very convenient option for docked play.</p>









<figure class="center">
  <a href="/posts/2024/06/02/steam-deck/media/deck-extra-ssd.jpg">
    <img src="/posts/2024/06/02/steam-deck/media/deck-extra-ssd_hu_5ce32880716602dc.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="Not as janky as you&#39;d think.">

  </a>
  <figcaption class="center">Not as janky as you&#39;d think.</figcaption>
</figure>

<p>If you happen to have a fast desktop PC with plenty of storage, or a home server,
then consider using the <a href="/posts/2023/09/11/steam-cache/">Steam local network game transfers.</a>
You won&rsquo;t fit more games onto the Steam Deck, but redownloading them will be
much faster.</p>
<p>We really need to start decoupling high resolution textures and other high quality assets from the base game at some
point because the current approach is just silly. For a device like Steam Deck you&rsquo;re rarely going to run those games with
the highest quality settings, meaning that those assets will just sit there on the disk taking up space.</p>
<p>A free optional DLC could work well in theory. In practice I&rsquo;m sure that game
publishers would quickly turn
a high quality texture pack into a paid DLC.</p>
<h2 id="the-part-where-i-play-games">
  <a class="heading-anchor" href="#the-part-where-i-play-games">The part where I play games<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>Enough about the part where I tinker with the system. Let&rsquo;s talk about the games.</p>









<figure class="center">
  <a href="/posts/2024/06/02/steam-deck/media/deck-art-of-rally.jpg">
    <img src="/posts/2024/06/02/steam-deck/media/deck-art-of-rally_hu_e98a579c7f21a9c2.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="&#34;art of rally&#34; is a great game to play on the Steam Deck.">

  </a>
  <figcaption class="center">&#34;art of rally&#34; is a great game to play on the Steam Deck.</figcaption>
</figure>

<p>I had some idea about the game compatibility when I tried out <a href="https://github.com/HoloISO/holoiso">HoloISO</a>.
I&rsquo;m happy to report that the game compatibility is even better on the Steam Deck.
This fact alone is a minor miracle. Some years ago I was convinced that the only way to properly play games on Linux
was to <a href="/posts/2021/08/29/testing-gpu-passthrough-on-amd-ryzen-5700g/">set up a VM with Windows installed in it.</a></p>
<p>With the Steam Deck, you download the game and run it. Simple as.<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup></p>
<p>The Steam Deck is not the most powerful machine in the world, but it has a decent CPU in it. The GPU
is more akin to integrated GPU-s that ship in modern AMD Ryzen based laptops, it&rsquo;s still plenty of power
to run games at the native 1280x800 resolution.</p>
<p><a href="https://store.steampowered.com/app/1593500/God_of_War/">God of War (2018)</a> did stutter a bit, but in most situations you can expect around 40-60 FPS.</p>
<p><a href="https://store.steampowered.com/app/271590/Grand_Theft_Auto_V/">GTA V</a> was running fine as well, although the game is CPU limited at times and can drop to around 40 FPS in certain
sections of the map, especially in GTA Online.</p>
<p><a href="https://store.steampowered.com/app/1167630/Teardown/">Teardown</a> runs alright
after you lower the settings, and it&rsquo;s best
played in docked mode due to some fun mods being designed around keyboard
controls. It&rsquo;s really fun, but it will bring
the Steam Deck to its knees when you do some heavy destruction. Totally playable
though, and I&rsquo;ve had a lot of fun with this game.</p>
<p><a href="https://store.steampowered.com/app/228380/Wreckfest/">Wreckfest</a> runs well with medium or high settings. I feel the framerate dropping
a bit when heading into the first corner
and being part of a 24-car pile-up, but in all other situations it&rsquo;s smooth
enough.</p>
<p><a href="https://store.steampowered.com/app/47870/Need_For_Speed_Hot_Pursuit/">Need for Speed Hot Pursuit (2010)</a> runs very well and is an absolute blast on the
Steam Deck. Crank the settings to maximum and enjoy the thrilling police chases.</p>
<p><a href="https://store.steampowered.com/app/1262560/Need_for_Speed_Most_Wanted/">Need for Speed Most Wanted (2012)</a> is also great on the Steam Deck.</p>
<p><a href="https://store.steampowered.com/app/1262600/Need_for_Speed_Rivals/">Need for Speed Rivals (2013)</a> runs well after you apply the tweak that forces the game to run at
60 FPS. The game is a bit buggy even on Windows, so expect some bugs and crashes.</p>
<p>More modern Need for Speed titles, such as
<a href="https://store.steampowered.com/app/1262540/Need_for_Speed/">Need for Speed (2015)</a>,
<a href="https://store.steampowered.com/app/1262580/Need_for_Speed_Payback/">Need for Speed Payback (2017)</a>
and
<a href="https://store.steampowered.com/app/1222680/Need_for_Speed_Heat/">Need for Speed Heat (2019)</a>
are playable, but will typically run anywhere between 40-60 FPS. The handy
framerate capping
feature of the Steam Deck will help a lot in those cases since a stable 40-45
FPS is a much better experience than
a wildly fluctuating and unstable framerate.</p>
<p>More lightweight games run like a charm while using very little power. This includes titles
like <a href="https://store.steampowered.com/app/1794680/Vampire_Survivors/">Vampire Survivors</a><sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup>
and <a href="https://store.steampowered.com/app/702670/Donut_County/">Donut County</a>.</p>
<p>What I really like about the Steam Deck is that performance tuning is very accessible. You can toggle <code>mangohud</code> with
various levels of detail to narrow down any performance troubles, and you have great control over the CPU and GPU
speeds. All of this can be done while the game is running.</p>









<figure class="center">
  <a href="/posts/2024/06/02/steam-deck/media/deck-mangohud.jpg">
    <img src="/posts/2024/06/02/steam-deck/media/deck-mangohud_hu_22de1e96d972e4d2.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="It&#39;s like MSI Afterburner overlay, but built-in and all set up for you.">

  </a>
  <figcaption class="center">It&#39;s like MSI Afterburner overlay, but built-in and all set up for you.</figcaption>
</figure>

<p>The APU in the Steam Deck tries its best to share the limited power that the system can pull between the CPU and GPU,
and in most cases it works well, but there are games where the CPU or the GPU demands can fluctuate a lot. In those
scenarios it helps if you lock the GPU clock speed to an amount that keeps the GPU usage to around 80% or less. Being
able to play with settings like this is one of the reasons why I got Forza Horizon 4 to be playable within minutes of
tinkering.</p>









<figure class="center">
  <a href="/posts/2024/06/02/steam-deck/media/deck-fh4.jpg">
    <img src="/posts/2024/06/02/steam-deck/media/deck-fh4_hu_a181eba620c52096.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="Forza Horizon 4 on the Deck runs surprisingly well after you tweak a few settings.">

  </a>
  <figcaption class="center">Forza Horizon 4 on the Deck runs surprisingly well after you tweak a few settings.</figcaption>
</figure>

<p>There are a few games that I like to play but aren&rsquo;t working well on the Steam Deck, such as GTA III or Vice City, but
that is pretty much it. Over the one year that I&rsquo;ve had the Steam Deck, a lot of games have gained support, either
by Valve improving the Proton compatibility layer, or game publishers releasing updates that make the game work on the
Steam Deck.</p>
<p>One such example
is <a href="https://store.steampowered.com/app/12360/FlatOut_Ultimate_Carnage_Collectors_Edition/">FlatOut Ultimate Carnage</a>,
which seems to have been bought by a new publisher that removed the &ldquo;Games for
Windows Live&rdquo; mess and got the game &ldquo;Steam Deck Verified&rdquo; in the process.</p>
<p>The performance of the Steam Deck was actually quite surprising in a lot of
games. For example, I&rsquo;ve never
seen <a href="https://store.steampowered.com/app/12210/Grand_Theft_Auto_IV_The_Complete_Edition/">GTA IV</a>
run so well on any machine that I&rsquo;ve owned before.</p>









<figure class="center">
  <a href="/posts/2024/06/02/steam-deck/media/deck-gta4.jpg">
    <img src="/posts/2024/06/02/steam-deck/media/deck-gta4_hu_c09b521cf2150496.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="The best GTA IV experience I&#39;ve ever had. ">

  </a>
  <figcaption class="center">The best GTA IV experience I&#39;ve ever had. </figcaption>
</figure>

<p>If you want to see if your favourite games are compatible with the Steam Deck I recommend you check
out <a href="https://www.protondb.com/">ProtonDB</a> for a detailed overview.
YouTube is your friend if you want to see some specific games being tested on the Steam Deck.</p>
<p>When it comes to emulating PS1, PS2 and PSP games, the Steam Deck is fantastic. There&rsquo;s plenty of performance to emulate
those consoles well, and for whatever reason playing the childhood classics on the Steam Deck feels so right. With PSP
the comparison is even more apt as it&rsquo;s basically a bigger PSP but with a much better battery life.</p>









<figure class="center">
  <a href="/posts/2024/06/02/steam-deck/media/deck-psp.jpg">
    <img src="/posts/2024/06/02/steam-deck/media/deck-psp_hu_cf25b34000d41f15.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="Steam Deck and the whole PSP game library is a great match.">

  </a>
  <figcaption class="center">Steam Deck and the whole PSP game library is a great match.</figcaption>
</figure>

<p>More intensive games can discharge the battery in about 2-3 hours, but when
playing emulated games for older consoles you can expect up
to 7-8 hours of gameplay.</p>
<h2 id="non-steam-pc-gaming">
  <a class="heading-anchor" href="#non-steam-pc-gaming">Non-Steam PC gaming<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>It&rsquo;s clear from the name that this console is set up around Steam. As long as all
your games are purchased on Steam, you&rsquo;ll have a great time.</p>
<p>I do have some games from other sources, such as <a href="https://www.gog.com">GOG.</a></p>
<p>There exist community-supported launchers, such as <a href="https://heroicgameslauncher.com/">HeroicGamesLauncher</a>.
They work, but might require a bit of setup and fiddling to get things like cloud
synced game saves to work properly. In the case of <code>art of rally</code> on GOG, you&rsquo;ll
also lose out on multiplayer daily/weekly challenges.</p>
<p>If you have some older games on CD-s, or legally acquired archived copies of
PC games, then the situation gets tricky. There exist solutions like <a href="https://lutris.net/">Lutris</a>
or <a href="https://usebottles.com/">Bottles</a>, however I never quite had a good experience
with those, especially once you deviate from the happy path.</p>
<p>In my experience, if you want to have the best chance at playing your old
PC games, then you&rsquo;ll need to obtain a version of the game that has a no-CD patch
applied to it already, add it to Steam and set a version of the Proton compatibility layer.
Some legally dubious sources for these games label these packages as &ldquo;direct play&rdquo; as well.</p>
<p>There can also be a difference when running games via gaming or desktop mode.
Need for Speed Most Wanted (2005) did not work when started via gaming mode, but
it started up just fine in desktop mode.</p>
<p>Proton, the compatibility layer, is great for what it allows us to do, but I feel
like the concept and technical implementation is something that novice users
will never quite understand. This also becomes apparent when you look up discussions
online where novice users try to apply mods to their favourite games. It works out of the box on Windows, but
you need to grok the way Proton handles things for it to work on the Steam Deck.</p>
<p>I consider myself competent with computers and stuff,
but even I need to sit down and think about what&rsquo;s going on when working in this area.</p>
<h2 id="backups">
  <a class="heading-anchor" href="#backups">Backups<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>I rely on <a href="https://github.com/mtkennerly/ludusavi">Ludusavi</a> to collect all my
game saves,
and I use <code>rsync</code> to back them up to my home server.</p>
<p>I made a desktop entry for the backup script. By right-clicking it in desktop
mode and
selecting <code>Add to Steam</code>, it will appear in your Steam library like any other
game or application.
This means that I don&rsquo;t have to quit gaming mode to back up the Steam Deck.</p>
<p>The backup script also updates all the applications that I&rsquo;ve installed as a
flatpak, and shuts the device down after it&rsquo;s done.</p>
<h2 id="its-big">
  <a class="heading-anchor" href="#its-big">It&rsquo;s big.<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>The Steam Deck is big.</p>
<p>This does mean that Valve can pack a lot of compute power and cooling into it,
but it comes with the trade-off
of it not fitting that well into a backpack. The hardcase that it ships with is
great for preventing damage
to the Steam Deck, but it takes up a lot of space.</p>
<p>I don&rsquo;t find the size uncomfortable, quite the opposite actually, but for others
it might be a problem.</p>
<p>I&rsquo;ve had the opportunity to briefly play on a Nintendo Switch Lite. There&rsquo;s
something
that feels special about that form factor. The performance is not great compared
to the Steam Deck, but I feel like the Nintendo Switch is in its own class of
portable gaming consoles.</p>
<p>I wonder how a Nintendo Switch sized Steam Deck would perform.</p>
<h2 id="the-controls">
  <a class="heading-anchor" href="#the-controls">The controls<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>The controls on the Steam Deck are good. It takes the best aspects of the
<a href="https://en.wikipedia.org/wiki/Wii_U_GamePad">Nintendo Wii U</a>
and <a href="https://en.wikipedia.org/wiki/Xbox_360_controller">Xbox 360</a>
controllers and smashes them into one polished experience.</p>
<p>The Steam Deck has some extra mappable buttons on the back. They sound great in
theory, but I rarely use them. When I do, I find that the L4 and R4 buttons
are more easily reachable compared to L5 and R5 (the lower ones).</p>
<p>When I <em>do</em> use those extra buttons, they are invaluable.
In <a href="https://store.steampowered.com/app/1262600/Need_for_Speed_Rivals/">Need for Speed Rivals (2013)</a>,
I mapped L4 and R4 to the two power-up slots, which left my thumbs free to focus
on driving and looking around.</p>
<p>Using those extra buttons does require some readjustment. It was difficult to
reprogram my muscle memory and remember that I have those extra buttons there.</p>
<p>Steam also provides lots of controller templates, both Valve-approved and community ones.
If the game you want to play doesn&rsquo;t have official controller support, then it&rsquo;s
highly likely that someone else has created a controller configuration that
emulates keypresses and allows you to play your favourite game on the Steam Deck.</p>
<p>Sometimes that doesn&rsquo;t quite work, in which case you can create your own layout, or
improve an existing one.</p>
<p>There&rsquo;s also the gyro functionality, but I&rsquo;ve only used it
in <a href="https://store.steampowered.com/app/1902490/Aperture_Desk_Job/">Aperture Desk Job</a>,
which itself is like a fancy demo of the controller capabilities of the Steam
Deck. Never quite found a suitable use case for this input method in other
games.</p>
<h2 id="the-fun-factor">
  <a class="heading-anchor" href="#the-fun-factor">The fun factor<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>Based on what you read, you might think that I got the Steam Deck for the tinkering aspect. While that&rsquo;s certainly
part of the rationale behind getting one, it wasn&rsquo;t the main one.</p>
<p>I got one as an excuse to finally spend more time resting. I have had a bad habit of trying to be productive at all
times, which can lead to exhaustion and eventually burning out.</p>
<p>With the Steam Deck I&rsquo;ve been able to actually spend some time playing games and turning my brain off.</p>
<p>I love it.</p>
<p>And it gives my cats a great opportunity to snuggle up while I do some illegal street racing. Win-win.</p>
<p>There&rsquo;s something different about playing games on the Steam Deck. Perhaps it&rsquo;s related to the memories I had as a
teenager playing on my PlayStation Portable a lot, or knowing that I can replay all my favourite console games
without having to set up the physical consoles themselves.</p>
<h2 id="the-sad-reality-of-adulthood">
  <a class="heading-anchor" href="#the-sad-reality-of-adulthood">The sad reality of adulthood<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>I love using the Steam Deck. However, I still can&rsquo;t seem to make much time for it when life gets busy.</p>
<p>That&rsquo;s my only big gripe with it.</p>
<h2 id="conclusion">
  <a class="heading-anchor" href="#conclusion">Conclusion<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>If you&rsquo;ve been on the edge about getting a Steam Deck, then I hope that this post has helped you make a decision.
It has some rough edges, but when it works, it feels magical.</p>
<p>If you already have a gaming PC with a modern AMD GPU in it, then consider trying out
projects like <a href="https://bazzite.gg/">Bazzite</a>, <a href="https://github.com/HoloISO/releases">HoloISO</a> or <a href="https://chimeraos.org/">ChimeraOS</a> to get a taste of the Steam Deck experience.</p>
<p>Even if I can&rsquo;t put in as many hours as I&rsquo;d like to, I still love my Steam Deck
and don&rsquo;t regret getting it at all.</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>this makes Valve&rsquo;s silence on releasing SteamOS 3 to a wider
audience puzzling. Do they not want to sell more Steam Decks?&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>assuming that it&rsquo;s a Steam Deck Verified title.&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:3">
<p>it&rsquo;s really addicting, be careful.&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded></item><item><title>Steam local network game transfers are a game-changer</title><link>https://ounapuu.ee/posts/2023/09/11/steam-cache/</link><pubDate>Mon, 11 Sep 2023 06:00:00 +0300</pubDate><author>ihavesomethoughtsonyourblog@ounapuu.ee (Herman Õunapuu)</author><guid>https://ounapuu.ee/posts/2023/09/11/steam-cache/</guid><description>Setting up a Steam LAN cache has never been this easy, so I went ahead and did some testing with different configurations.</description><content:encoded><![CDATA[<img src="https://ounapuu.ee/posts/2023/09/11/steam-cache/media/cover_hu_8677bb4c48010087.jpg" width="1200" height="630" alt="Steam local network game transfers are a game-changer" /><p>Steam recently launched a new feature: <a href="https://help.steampowered.com/en/faqs/view/46BD-6BA8-B012-CE43">local network game transfers.</a></p>
<p>The idea is simple: if you have a game downloaded on another PC and you&rsquo;re both on the same local network, then Steam can download game data
from that PC, avoiding the need to download the game over public internet. Using this method you can reduce your internet
usage and enjoy faster download times.</p>
<p>I think this feature is absolutely brilliant. There are many homes out there, even in developed countries, where the
internet connection sucks. The speed might be capped at something very slow, such as 10 Mbit/s down, or you might
have a bandwidth cap in place. Perhaps you have multiple gaming PC-s and you want to avoid downloading 100+ gigabytes
worth of files over the internet to avoid hitting your bandwidth cap. In those situations being able to download your games to a PC that has a bunch of storage in it
makes a lot of sense.</p>
<p>This isn&rsquo;t the only way to achieve the same goal as <a href="https://lancache.net/">projects like LanCache exist.</a> However, with
Steam the setup is so simple that anyone who knows how to install Steam could achieve a similar result. The only caveat is that
you&rsquo;re limited to games installed through Steam, LanCache supports many other services.</p>
<p>Here are some ideas on how you can set up your own Steam cache.</p>
<h2 id="using-an-old-laptop">
  <a class="heading-anchor" href="#using-an-old-laptop">Using an old laptop<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>If you have an older laptop around and it has a gigabit Ethernet connection, then that can be a good candidate for
setting up a Steam cache.</p>
<p>The hardware I picked for this test is a ThinkPad T430. It has a 4 core CPU in it, 16 GB of RAM and plenty of ways
to attach storage to it. With storage I tried two approaches: using an older 1TB 2.5&quot; SATA HDD, and using
two Samsung 870 EVO 1TB SATA SSD-s in RAID0.</p>









<figure class="center">
  <a href="/posts/2023/09/11/steam-cache/media/image0.jpg">
    <img src="/posts/2023/09/11/steam-cache/media/image0_hu_ceb50a4db84a6f9c.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="It&#39;s a Steam cache. See, it says so right on the lid!">

  </a>
  <figcaption class="center">It&#39;s a Steam cache. See, it says so right on the lid!</figcaption>
</figure>

<p>The hard drive based solution isn&rsquo;t something I recommend, unless you plan on running two or more in a RAID-like setup.
The Steam cache use case seems to have hit the limits of the hard drive and that limited the transfer speeds
significantly.</p>
<p>The SSD-based setup was great! You might want to run something other than a RAID0 setup if you want to avoid a drive
failure taking your whole Steam library with you, I ran with this setup mainly to see where the limits are. The Steam
library is also something you can easily redownload, should things go really wrong.</p>
<p>One benefit of setting up an older laptop as a Steam cache is that you can take it with you to a place that has great
internet connectivity, download your games there and bring it back home with you. That&rsquo;s exactly what I did when
performing testing, I went to my local hackerspace, started the downloads, and came back half a day later to find
that over a terabyte worth of games had been downloaded. Doing the same on a slower home network would have taken days.
I guess the idea of <a href="https://en.wikipedia.org/wiki/IP_over_Avian_Carriers">IP over avian carriers</a>,
<a href="https://www.jeffgeerling.com/blog/2023/pigeon-still-faster-internet">or over humans</a>,
isn&rsquo;t dead yet.</p>
<p>When downloading the games, I noticed that Steam was hitting the CPU hard. Even on a decent 4-core Intel i7-3820QM the
CPU was often running at 100%. This meant that download speeds were usually around 500-700 Mbit/s, which is still good,
but nowhere near saturating the gigabit link that the laptop had.</p>









<figure class="center">
  <a href="/posts/2023/09/11/steam-cache/media/image1.jpg">
    <img src="/posts/2023/09/11/steam-cache/media/image1_hu_67e371a1c61477b.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="The CPU is really struggling here.">

  </a>
  <figcaption class="center">The CPU is really struggling here.</figcaption>
</figure>

<p>Now that I had all the games downloaded, it was time to test the performance. The maximum transfer speeds were around
400-500 Mbit/s over my local network. I used my Steam Deck over an USB-C dock to start the downloads and picked the
internal NVMe SSD as the download target to avoid any storage speed bottlenecks. I would have liked to see speeds
close to 1 Gbit/s, but these speeds are still a massive improvement if your network speeds are something like
50 Mbit/s down, that&rsquo;s a 10x improvement!</p>









<figure class="center">
  <a href="/posts/2023/09/11/steam-cache/media/image2.jpg">
    <img src="/posts/2023/09/11/steam-cache/media/image2_hu_a89d48392fef01f8.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="Typical transfer speeds observed with this setup.">

  </a>
  <figcaption class="center">Typical transfer speeds observed with this setup.</figcaption>
</figure>

<p>If you&rsquo;re worried about the fact that <a href="https://learn.microsoft.com/en-us/lifecycle/products/windows-10-home-and-pro">Windows 10 is going to lose support in October 2025</a>
and your Steam cache PC is not supported by Windows 11, then don&rsquo;t worry, you can do the same thing over Linux.</p>
<h2 id="using-a-virtual-machine">
  <a class="heading-anchor" href="#using-a-virtual-machine">Using a virtual machine<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>If you already have a NAS or a home server running, then you can create a new VM, add a bunch of storage to it,
setup the OS and Steam and you&rsquo;re good to go!</p>
<p>I did most of the testing on a Windows 10 VM and a 1TB HDD attached over USB 3.0. I setup the VM using a bog-standard
QEMU/KVM setup and set everything up through <code>virt-manager</code> in Linux. The only noteworthy part is that I set up the
network interface as a <code>macvtap</code> device, resulting in the VM showing up on my local home network as if it was a separate
PC. That step was taken to avoid any issues with the Steam instances on different PC-s not being able to transfer data
directly between each other.</p>
<p>My server runs on the <a href="/posts/2022/01/17/asrock-x300-future-of-desktops/">ASRock Deskmini X300</a>. It has plenty of CPU
performance, but during testing I ran into performance issues with the hard drive again. When I added SSD-based storage
to the VM, I found that the performance was great and quite similar to what I saw on the laptop.</p>
<p>The downside with the Windows 10 VM setup was the CPU usage. While the VM was idling, my server saw a noticeable
increase in idle CPU usage, utilizing about 10-20% of my CPU at all times. During transfers the VM was using most of
my CPU cores.</p>
<p>I did testing on a Linux VM to see if those are more efficient compared to a Windows 10 VM. The answer is obviously
&ldquo;yes&rdquo;, but there is one issue: I could not get Steam to work. At the time of testing, Steam had recently released a
bigger visual overhaul and I suspect that it might have something to do with those issues. The VM has no GPU
acceleration and opening Steam would result in &ldquo;Loading user data&rdquo; popup showing up, but nothing else happening.
I tried Ubuntu Desktop 22.04, Fedora Linux 38, and even Flatpak installations of Steam. All of them ran into the same
exact issue. There are probably ways to set Steam to not require GPU acceleration without opening its settings view
graphically, but I did not bother with that.</p>
<p>If you like to think in virtual machines, then this is a good option. However, it&rsquo;s not something I stuck with due to
the inefficient resource usage that a Windows 10 VM exhibited.</p>
<h2 id="using-containers">
  <a class="heading-anchor" href="#using-containers">Using containers<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>This is the solution that I am currently running.</p>
<p>I recently found the <a href="https://docs.linuxserver.io/images/docker-webtop">LinuxServer.io webtop Docker images.</a> These
containers allow you to run various Linux desktop environments and distros on the same machine. You can connect to them
using the integrated KasmVNC solution over a browser. You can even use your GPU on the container host machine to improve
the video rendering performance in the container!</p>









<figure class="center">
  <a href="/posts/2023/09/11/steam-cache/media/image3.png">
    <img src="/posts/2023/09/11/steam-cache/media/image3_hu_5e25b945f3eec876.webp"
     width="1280"
     height="697"
     loading="lazy"
     decoding="async"
     alt="Fedora XFCE desktop running in a container.">

  </a>
  <figcaption class="center">Fedora XFCE desktop running in a container.</figcaption>
</figure>

<p>I picked the <code>fedora-xfce</code> option because Fedora is great, and the XFCE desktop environment is not that resource
intensive. I also utilized <a href="https://github.com/linuxserver/docker-mods/tree/universal-package-install">the linuxserver.io package install mod</a>
to install Steam on container startup. For networking, I created a separate Docker network using the <code>macvlan</code> driver to
achieve something similar to the VM setup, resulting in the container showing up as a separate machine on the local
network. Inside the container I set up Steam to start on startup using standard GUI tools that XFCE provides for this
purpose.</p>
<p>I really like this setup. I can easily point the Steam downloads to a larger storage pool and make use of all the CPU
power that Steam needs to perform the transfers.</p>
<p>During testing the limitation seems to have been my Steam Deck. I could still not saturate the 1 Gbit/s link.</p>
<p>The KasmVNC solution is quite nice and performant. The fact that I could use it in the browser makes it very convenient
to use as well.</p>
<p>The CPU usage during idle is very small, except for when you accidentally leave the Steam window open with animated
content being displayed. During file transfers the CPU gets a beating, but it&rsquo;s nothing the AMD Ryzen 7 5700G can&rsquo;t handle.</p>
<p>For storage I eventually ended up using a 1TB Lexar NVMe SSD. That&rsquo;s not enough to download all the games I have in my
Steam library, but at least I can download those games that take 20+GB of space and not have to worry about downloading
those over a slower internet connection.</p>
<p>I have not ended up using this setup too much yet, but I imagine that with games growing in size this is going to become
much more relevant for my Steam Deck. And if I were to move to the countryside where the only internet connection
available is a mobile 4G connection capped at 10 Mbit/s down, then this setup would be fantastic to have.</p>
<h2 id="tech-tips">
  <a class="heading-anchor" href="#tech-tips">Tech tips<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>If you intend to run a similar setup, I recommend enabling &ldquo;Scheduled updates&rdquo; to run during the night. I set mine up
to auto-update games between 00:00 and 06:00, which is where I&rsquo;m likely going to sleep and not notice that game downloads
are taking place. Steam is notorious for hogging all of the bandwidth on the network and this nifty feature helps
avoid disturbing other users on the network.</p>
<p>If you&rsquo;re performing the initial mass download of your games but would like for it to take place during scheduled times, start downloading
all of the games and then restart your machine. When Steam starts up again, you&rsquo;ll notice that all your games are
queued up nicely to download during your scheduled updates time slot.</p>
<h2 id="caveats">
  <a class="heading-anchor" href="#caveats">Caveats<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>This setup is not ideal and <a href="https://help.steampowered.com/en/faqs/view/46BD-6BA8-B012-CE43">the Steam support page highlights it well.</a>
For example, this setup does not work in fully offline situations as internet connectivity is required for the initial
setup of the local network game transfer. I recommend giving that page a read to understand the requirements and technical specifics of this setup.</p>
]]></content:encoded></item><item><title>How I blew up my backup server (Valve pls fix)</title><link>https://ounapuu.ee/posts/2023/06/10/how-i-blew-up-my-backup-server/</link><pubDate>Sat, 10 Jun 2023 12:00:00 +0300</pubDate><author>ihavesomethoughtsonyourblog@ounapuu.ee (Herman Õunapuu)</author><guid>https://ounapuu.ee/posts/2023/06/10/how-i-blew-up-my-backup-server/</guid><description>All of this could have been avoided if I didn't insist on making backups of my Steam Deck.</description><content:encoded><![CDATA[<img src="https://ounapuu.ee/posts/2023/06/10/how-i-blew-up-my-backup-server/media/cover_hu_597e9432fe026b5c.jpg" width="1200" height="630" alt="How I blew up my backup server (Valve pls fix)" /><p>It all started with me getting a Steam Deck.</p>
<h2 id="background">
  <a class="heading-anchor" href="#background">Background<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>After getting familiar with the Steam Deck and how the Proton compatibility layer works, I decided to write a
backup script that would back up everything in the home folder, excluding the Steam games themselves due to the sheer <em><strong>girth</strong></em>
of modern games (how the hell has GTA V ballooned up to 100+GB???).</p>
<p>Among the folders that I backed up was <code>compatdata</code>, a folder that contains files that Proton needs
to make Windows games run. If you browse the folder, the contents look like a mini-Windows installation,
and among those files you can also find your savegames. It made sense to me to back up this folder, and
I was quite happy to know that no matter what happens, my game saves would be safe as long as I made a copy
of this folder.</p>
<p>Fast forward a few weeks: I&rsquo;m doing some changes to my self-hosting infrastructure and decide to
redeploy changes to a backup server that I have. Nothing fancy, just Ansible roles that make sure
that the backup server has some configuration present and that the backup folder has the right permissions.</p>
<p>The step looks something like this:</p>
<pre tabindex="0"><code>- name: Fix permissions
  ansible.builtin.file:
    name: /path/to/backups
    state: directory
    owner: user
    group: user
    recurse: yes
</code></pre><p>Everything was okay until I saw this.</p>









<figure class="center">
  <a href="/posts/2023/06/10/how-i-blew-up-my-backup-server/media/image-0.png">
    <img src="/posts/2023/06/10/how-i-blew-up-my-backup-server/media/image-0_hu_a3aee0eb19da0519.webp"
     width="1280"
     height="121"
     loading="lazy"
     decoding="async"
     alt="Uh-oh.">

  </a>
  <figcaption class="center">Uh-oh.</figcaption>
</figure>

<p>After trying to recover the backup server and giving up as soon as I found that I cannot log in as root or
use <code>sudo</code>, I gave up on doing that over the network and decided to get physical acccess to the server.
One reinstall and Ansible run later, the server is okay again.</p>
<h2 id="investigation">
  <a class="heading-anchor" href="#investigation">Investigation<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>How did we end up here though?</p>
<p>The backups from the Steam Deck are made to my home server using <code>rsync</code>. The Steam Deck is just a Linux
machine, after all, and it made the most sense to me as I could make a backup that preserves all the
permissions and links. Should I ever screw something up, I can run the same script in reverse and have everything working
as it used to. I would hate setting up all my games and customizations again.</p>
<p>The script looked something like this.</p>
<pre tabindex="0"><code>rsync -aAXzv --delete-before /home/deck/ backupuser@myserver:/path/to/steamdeck/ \
  --exclude .local/share/Steam/steamapps/common \
  --exclude .local/share/Steam/steamapps/downloading

sudo shutdown now
</code></pre><p><em>Free tech tip: you can create a desktop entry for any script, add it to Steam, and run it
within the Steam Deck UI when you&rsquo;re done playing. You&rsquo;ll have a backup and the
system will shut down automatically once it&rsquo;s done!</em></p>
<p>Nothing suspicious about the script, right?</p>
<p>There&rsquo;s one problem with it: <code>rsync</code> also sends over links. These come in various types (symlinks, hard links)
and act as a pointer to another file or folder. Turns out that Proton (or Wine) loves using symlinks. Most
usages I saw were pointing towards common distributions of Proton, which makes perfect sense since it saves
disk space.</p>
<p>There are also links that point to the root folder <code>/</code>. The use case for these seems also makes sense:
present the game with a drive like <code>Z:</code>, and point it to <code>/</code> on Linux side, and now the user can easily
navigate their whole file system within the context of the game they&rsquo;re running. Maybe you want to install
the game or its add-ons into a different folder, or maybe you want to load a save game that you
have somewhere on your Steam Deck.</p>









<figure class="center">
  <a href="/posts/2023/06/10/how-i-blew-up-my-backup-server/media/image-1.png" aria-label="View full-size image">
    <img src="/posts/2023/06/10/how-i-blew-up-my-backup-server/media/image-1_hu_7036cf8e5f4678a8.webp"
     width="1280"
     height="62"
     loading="lazy"
     decoding="async"
     alt="">

  </a>
  
</figure>

<p>Just one problem with this: what happens when you have this symlink on another machine, such as my backup server,
and you use Ansible to set the permissions for a folder containing this symlink, recursively?
And what if the <code>follow</code> setting in Ansible <a href="https://docs.ansible.com/ansible/latest/collections/ansible/builtin/file_module.html#parameter-follow">is on by default since Ansible 2.5</a>?</p>
<p>Turns out that the answer is that you&rsquo;re going to mess up the file permissions on the whole machine, and
most things stop working at that point. I could still login to one user on that box, but I could not do
anything that would help recover the state of the machine at that point.</p>
<h2 id="the-fix-">
  <a class="heading-anchor" href="#the-fix-">The fix (?)<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>There are many options for avoiding this problem, or at least working around it. I&rsquo;m not sure what the perfect
fix looks like. In case you know one, let me know.</p>
<p>One thing I added to my backup script was <code>--no-links</code>, which instructs <code>rsync</code> to not copy symlinks. That setting
has to appear after the first batch of arguments (<code>rsync -aAXzv</code>) because otherwise it will be overridden by the <code>-a</code>
parameter.</p>
<p>I also updated my Ansible setup to avoid setting the permissions for the Steam Deck backup folder as a precaution.</p>
<p>The major downside with my tweaks is that I don&rsquo;t really have a &ldquo;full&rdquo; backup of my Steam Deck anymore.
I do have backups of my game saves, but recovering from the backup will become a bit of a hassle due to
me having to find and copy the game saves manually to the new <code>compatdata</code> folders since the backed up
ones are missing all the symlinks to Proton/Wine-managed dependencies.</p>
<p>Alternatively I can consider using a backup tool like <code>restic</code> that <a href="https://restic.readthedocs.io/en/latest/040_backup.html#backing-up-special-items-and-metadata">should
preserve symlinks</a>. I&rsquo;ll just
need to also test recovering from that backup method.</p>
<p>Either way I can&rsquo;t really blame Valve, Wine or Proton developers for my own fuck-up.
They used symlinks in a way that allowed them to save disk space and give the user
easier access to their files in-game. It&rsquo;s just unfortunate that I learned about
this setup the hard way.</p>
<p>Completely unrelated to my issue, but I can&rsquo;t help but remember <a href="https://github.com/valvesoftware/steam-for-linux/issues/3671">that one person whose machine got wiped by
Steam.</a></p>
]]></content:encoded></item><item><title>HoloISO: the unofficial Steam Deck experience on your PC</title><link>https://ounapuu.ee/posts/2022/12/01/holoiso-steam-deck-experience/</link><pubDate>Thu, 01 Dec 2022 07:00:00 +0200</pubDate><author>ihavesomethoughtsonyourblog@ounapuu.ee (Herman Õunapuu)</author><guid>https://ounapuu.ee/posts/2022/12/01/holoiso-steam-deck-experience/</guid><description>I tried out HoloISO, the project that brings the Steam Deck experience to PC-s, on my ASRock DeskMini X300. Perhaps gaming on Linux isn't dead after all?</description><content:encoded><![CDATA[<img src="https://ounapuu.ee/posts/2022/12/01/holoiso-steam-deck-experience/media/cover_hu_450361990dee578b.jpg" width="1200" height="630" alt="HoloISO: the unofficial Steam Deck experience on your PC" /><p>If you have spent any time in gaming hardware circles, then you&rsquo;ve probably
heard about the <a href="https://store.steampowered.com/steamdeck">Steam Deck</a>, the
Linux-based handheld gaming PC built by Valve. Yes, you heard that right: not
Windows, but Linux.</p>
<p>I&rsquo;ve had my fair share of attempts at gaming on Linux. When it works, it&rsquo;s
amazing. When it doesn&rsquo;t, it&rsquo;s incredibly frustrating. The last thing I want
to do when playing a game is to become a developer and start troubleshooting
issues with all the layers between the hardware and the game.</p>
<p>What makes the Steam Deck different is that the compatibility layer (Proton) and
all the bits and pieces associated with it are integrated in a way that <em>should</em>
make it unnoticeable to the user. Just start up your Steam Deck, pick your game,
play, and you&rsquo;re good to go.</p>
<p>Although I&rsquo;ve thought about buying a Steam Deck myself for tinkering and testing
purposes, I could not justify that purchase. But thanks to <a href="https://www.youtube.com/watch?v=x4gZO7TZT9g">videos from
the ETAPRIME YouTube channel</a> I
learned about the existence of <a href="https://github.com/theVakhovskeIsTaken/holoiso">HoloISO</a>,
an unofficial SteamOS 3 installer.</p>
<h2 id="holoiso">
  <a class="heading-anchor" href="#holoiso">HoloISO<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>HoloISO aims to be as close to the native SteamOS 3 experience as possible.
The only reason it exists right now is because Valve does not yet officially
support SteamOS 3 as a distro that you can go and install. That might change
in the future, but for those that are impatient like myself, HoloISO is a nice
option.</p>
<p>To test out HoloISO and give it a good chance at succeeding, I chose my <a href="/posts/2022/01/17/asrock-x300-future-of-desktops/">ASRock
DeskMini X300</a>.
It sports an <a href="https://www.amd.com/en/products/apu/amd-ryzen-7-5700g">AMD Ryzen 7 5700G</a>,
which is a high-end APU and
should result in performance that&rsquo;s roughly comparable to the Steam Deck in most
scenarios. The GPU cores are not on the newest GPU architecture released by AMD,
but the higher power budget should make up for any architectural deficiencies.</p>
<p>The installation of HoloISO is very easy, just download the installer and write
it to an USB stick. Once you&rsquo;re booted up, follow the installation instructions
and reboot. You should now be at the SteamOS 3 setup screen.</p>
<h2 id="first-impressions">
  <a class="heading-anchor" href="#first-impressions">First impressions<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>I&rsquo;ll be the first one to admit that my Steam library is a bit out of date, which
is why my experience is limited to older titles. I can confirm that BeamNG drive
and Dirt Rally 2 work fantastically though.</p>
<p>The only way to play GTA V on Linux without issues used to involve <a href="https://youtu.be/16dbAUrtMX4">creating a
Windows VM and passing a GPU to it.</a> This is why
I was very impressed to see that installing and starting up GTA V worked out
of the box. I could even go to GTA Online and play around without being kicked
out or banned!</p>
<p>To make choosing and playing games a better experience for casual gamers, Steam
has also come up with the <a href="https://www.steamdeck.com/en/verified">Deck verified</a>
program. You shouldn&rsquo;t be discouraged if your favourite game is shown as
unsupported or not tested, though. Try to start it up and see if it works.
Burnout Paradise and Absolute Drift were not officially supported, but worked like a charm.</p>
<p>The unfortunate reality of SteamOS is that not every game will work out of the
box. Some older games, such as GTA III and GTA Vice City, would not work at all.
You might be able to check out places like <a href="https://www.protondb.com/">ProtonDB</a>
and see if a game has a tweak that you can apply. Tweaks can involve passing
additional launch options to a game or using another version of the compatibility
layer (Proton).</p>
<p>What turned me off of this platform was Forza Horizon 4. On this setup, it did
not launch properly, the sound was there but the screen was black. Based on
results in YouTube, it seems like Forza Horizon 4 and Forza Horizon 5 do work
on Steam Deck, so this issue might be down to a compatibility issue on
my hardware or HoloISO distribution of SteamOS 3. I wanted to play that game
though, so I had to eventually end the experiment and install Windows 10 again.</p>
<p>As someone who wants to get a good overview of resources usage during gameplay
to detect and resolve any performance issues, I tend to use tools like <a href="https://www.msi.com/Landing/afterburner/graphics-cards">MSI Afterburner</a>.
With SteamOS 3, you can easily achieve similar results by enabling the
performance overlay. I was very happy to see that addition because that means
installing and configuring one less tool on my gaming box.</p>
<h2 id="quality-of-life-issues">
  <a class="heading-anchor" href="#quality-of-life-issues">Quality of life issues<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>Even when things generally work, I did notice some annoyances when playing games.
Sometimes I ran into issues with controls. Steam allows you to pick gamepad
templates and layouts, which can involve community-provided setups. Sometimes
it would default to a layout that simply did not work. Turning off Steam input
altogether would sometimes improve the situation. If that did not work, then
picking an alternative template would do the trick most of the time.</p>
<p>One major issue that I ran into was related to my XBOX controllers. Because
the XBOX wireless adapter does not work out of the box on Linux, I connected
them via Bluetooth. However, the latency was horrible and borderline unplayable.
There do exist drivers that you can install, mainly <a href="https://github.com/medusalix/xone">xone</a>
and <a href="https://github.com/atar-axis/xpadneo">xpadneo</a>, and those do improve the
situation.</p>
<h2 id="desktop-mode">
  <a class="heading-anchor" href="#desktop-mode">Desktop mode<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>One aspect of SteamOS 3 that made me actually consider buying a Steam Deck is
the desktop mode. Not only can you play games, but you can also boot into a
normal KDE desktop environment. Install a web browser, emulators,
tweak the system or do actual productive work on it, it just works!</p>
<p>Hell, you can even install an SSH server and manage your gaming box with Ansible!</p>
<p>Whenever I&rsquo;ve had a gaming PC, I&rsquo;ve usually hooked it up to a big screen,
installed Windows and Steam on it, and called it a day. If you want to watch
some media, open up the browser and you&rsquo;re good to go. I&rsquo;m happy to report that
something similar can be achieved on SteamOS as well.</p>
<p>At the time of testing, there were some issues that I didn&rsquo;t expect to have with
desktop mode. Firefox is included as a Flatpak and it did not support any form
of hardware acceleration for video playback, which made it a no-go for a home
theater setup.</p>
<p>After browsing <a href="https://www.reddit.com/r/steamdeck/">/r/SteamDeck</a> for a while,
you&rsquo;ll notice that a lot of people are into modifying their consoles, and all
of that is possible because Valve did not lock anything down. Pop the hood and
work with the Linux internals as much as you want to! With other gaming consoles
you&rsquo;re going to have to wait until someone discovers an exploit that allows you
to have proper control over hardware that you physically own.</p>
<h2 id="gaming-outside-of-steam">
  <a class="heading-anchor" href="#gaming-outside-of-steam">Gaming outside of Steam<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>With the presence of desktop mode, you&rsquo;re not only limited to games purchased
from Steam.</p>
<p>To see how well I could emulate games that I have purchased on older consoles,
such as PS1, PS2 and PSP, I tried setting up some emulators. I&rsquo;m happy to say
that setting them up is just as fiddly as it is on Windows, but they do seem
to work quite well, at least for these consoles.</p>
<p>I gave Minecraft a go as well by installing it as a Flatpak from KDE Discovery
software manager, but for some reason it didn&rsquo;t run and crashed on startup.
I didn&rsquo;t look into it further, but it seemed like something that an update can
fix.</p>
<p><a href="https://www.gog.com/">GOG</a> is a platform similar to Steam, with one notable
exception: their games are DRM-free. I don&rsquo;t use that often, but with a game
like <a href="https://artofrally.com/">art of rally</a> I had to get it from there just
for that reason alone (and the developers publishing native Linux ports).
Although there isn&rsquo;t an official client for GOG on Linux, there do exist open
source implementations. I gave <a href="https://github.com/Heroic-Games-Launcher/HeroicGamesLauncher">HeroicGamesLauncher</a>
a go and although it is a bit rough around the edges, it got the job done and
I could play <em>art of rally</em> just fine.</p>
<h2 id="caveats">
  <a class="heading-anchor" href="#caveats">Caveats<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>The HoloISO experience tries to be as close to the one provided by SteamOS 3,
but it is not 100% there yet. It seems that there are differences present
under the hood, such as Steam Deck shipping with the root filesystem being
read-only by default. I might not be aware of other differences between the
HoloISO and official Steam Deck installation, so keep this in mind when making
any decisions based on info from this post.</p>
<p>The choice of hardware will also affect your experience. The requirements
regarding GPU-s is relatively strict and you&rsquo;ll likely have the best experience
with a modern AMD GPU since that&rsquo;s what SteamOS 3 is built around. Intel
and NVIDIA GPU-s <em>may</em> work, but are not guaranteed to.</p>
<h2 id="conclusion">
  <a class="heading-anchor" href="#conclusion">Conclusion<svg class="heading-anchor__icon" viewBox="0 0 24 24" width="0.75em" height="0.75em" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></a>
</h2>
<p>SteamOS 3, even in its HoloISO implementation, is very impressive. So impressive,
in fact, that I almost bought a Steam Deck. The uncertainty about support for my
favourite games and less than ideal performance on the big screen were what
held me back. For now.</p>
<p>In its current form, SteamOS 3 (and by extension the Steam Deck itself) are a
tinkerers&rsquo; dream. There are some rough corners and caveats that you should be
aware of as well. Not everyone is into tinkering and experimentation, and that&rsquo;s
OK.</p>
<p>I sincerely hope that Valve can use the momentum that Steam Deck has achieved
to push gaming on Linux even further. After having to reinstall Windows more than
I&rsquo;d like to admit, having my gaming PC run plain Linux and be fully manageable
with Ansible just feels so <em>right</em>.</p>
]]></content:encoded></item></channel></rss>