<?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/categories/review/</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>Mon, 22 Jun 2026 20:00:00 +0300</lastBuildDate><atom:link href="https://ounapuu.ee/categories/review/index.xml" rel="self" type="application/rss+xml"/><item><title>These cheap USB-to-HDMI adapters are terrible, and yet incredibly useful</title><link>https://ounapuu.ee/posts/2026/06/22/usb-hdmi-adapter/</link><pubDate>Mon, 22 Jun 2026 20:00:00 +0300</pubDate><author>ihavesomethoughtsonyourblog@ounapuu.ee (Herman Õunapuu)</author><guid>https://ounapuu.ee/posts/2026/06/22/usb-hdmi-adapter/</guid><description>5 EUR well spent.</description><content:encoded><![CDATA[<img src="https://ounapuu.ee/posts/2026/06/22/usb-hdmi-adapter/media/cover_hu_78a49f0fc7b01c23.jpg" width="1200" height="630" alt="These cheap USB-to-HDMI adapters are terrible, and yet incredibly useful" /><p>In 2023, I ordered a cheap piece of crap USB to HDMI adapter. From time to time, I dabble with computers, but I don&rsquo;t
always have a convenient display at hand. Capture cards aren&rsquo;t anything new, but the good ones a bit expensive for a
hobbyist like myself.</p>
<p>The adapter sucks, and somehow it&rsquo;s been one of the most useful tools that I own.</p>
<p>The way that it works is also brilliant: the adapter acts like a webcam on your machine. This means that you can open
any app that can show webcam output, such as <a href="https://en.wikipedia.org/wiki/Cheese_%28software%29">Cheese</a>, and use your
laptop as a crappy portable display. It also works in VLC, but I&rsquo;ve had a much better and easier experience with Cheese.</p>
<p>Don&rsquo;t expect any crystal clear output or high refresh rates.</p>
<p>But it gets the job done. Quick UEFI settings tour, OS installation, or general troubleshooting, it&rsquo;s fantastic for those
use cases. I have had a few displays that are picky about display resolutions and things like outputting anything at
all, such as the LattePanda V1, and somehow this adapter makes it work quite reliably.</p>
<p>When I checked the price for the adapter I ordered, I found that somehow it has gotten cheaper. Don&rsquo;t see that happening
much lately.</p>









<figure class="center">
  <a href="/posts/2026/06/22/usb-hdmi-adapter/media/adapter.jpg">
    <img src="/posts/2026/06/22/usb-hdmi-adapter/media/adapter_hu_ff496c5d755c7d55.webp"
     width="850"
     height="1000"
     loading="lazy"
     decoding="async"
     alt="Lattepanda IOTA connected to my laptop via the USB to HDMI adapter.">

  </a>
  <figcaption class="center">Lattepanda IOTA connected to my laptop via the USB to HDMI adapter.</figcaption>
</figure>

]]></content:encoded></item><item><title>I gave the MacBook Pro a try</title><link>https://ounapuu.ee/posts/2026/03/04/apfel/</link><pubDate>Wed, 04 Mar 2026 06:00:00 +0200</pubDate><author>ihavesomethoughtsonyourblog@ounapuu.ee (Herman Õunapuu)</author><guid>https://ounapuu.ee/posts/2026/03/04/apfel/</guid><description>Dancing with the devil.</description><content:encoded><![CDATA[<img src="https://ounapuu.ee/posts/2026/03/04/apfel/media/cover_hu_5f1c1caf8eadf1a6.jpg" width="1200" height="630" alt="I gave the MacBook Pro a try" /><p>I got the opportunity to try out a MacBook Pro with the M3 Pro with 18GB RAM (not Pro).</p>
<p>I&rsquo;ve been rocking a <a href="/posts/2024/04/12/lenovo-p14s-gen4/">ThinkPad P14s gen 4</a>
and am reasonably happy with it, but after realizing that I am the only person in the whole company <em>not</em> on a MacBook,
and one was suddenly available for use, I set one up for work duties to see if I could ever like using one.</p>
<p>It&rsquo;s nice.</p>
<p>I&rsquo;ve used various flavours of Linux on the desktop since 2014, starting with Linux Mint. 2015 was the year I deleted the
Windows dual boot partition. Over those years, the experience on Linux and especially Fedora Linux has improved a lot,
and for some reason it&rsquo;s controversial to say that I love GNOME and its opinionated approach to building a cohesive and
yet functional desktop environment.</p>
<p>When transitioning over to macOS, I went in with an open mind. I won&rsquo;t heavily customise it, won&rsquo;t install Asahi Linux
on it, or make it do things it wasn&rsquo;t meant to do. This is an appliance, I will use it to get work done and that&rsquo;s it.</p>
<p>With this introduction out of the way, here are some observations I&rsquo;ve made about this experience so far.</p>
<h2 id="ergonomics">
  <a class="heading-anchor" href="#ergonomics">Ergonomics<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 first stumbling block was an expected one: all the shortcuts are wrong, and the Ctrl-Super-Alt friendship has been
replaced with these new weird ones. With a lot of trial and error, it is not that difficult to pick it up, but I still
stumble around with copy-paste, moving windows around, or operating my cursor effectively. It certainly doesn&rsquo;t help
that in terminal windows, Ctrl is still king, while elsewhere it&rsquo;s Cmd.</p>
<p>Mouse gestures are nice, and not that different from the GNOME experience.</p>
<p>macOS has window snapping by default, but only using the mouse. I had to install a specific program to enable window
moving and snapping with keyboard shortcuts <a href="https://rectangleapp.com/">(Rectangle)</a>, which is something I use heavily
in GNOME. Odd omission by Apple.</p>
<p>For my Logitech keyboard and mouse to do the right thing, I did have to install the Logitech Logi+ app, which is not
ideal, but is needed to have an acceptable experience using my MX series peripherals, especially the keyboard where it
needs to remap some keys for them to properly work in macOS.</p>
<p>I still haven&rsquo;t quite figured out why Page up/down and Home/End keys are not working as they should be. Also, give my
Delete key back!</p>
<p>Opening the laptop with Touch ID is a nice bonus, especially on public transport where I don&rsquo;t really want my neighbour
to see me typing in my password.</p>
<p>The macOS concept of showing open applications that don&rsquo;t have windows on them as open in the dock is a strange choice,
that has caused me to look for those phantom windows and is generally misleading.</p>
<p>Not being able to switch between open windows instead of applications echoes the same design choice that GNOME made, and
I&rsquo;m not a big fan of it here as well. But at least in GNOME you can remap the Alt+Tab shortcut to fix it.</p>
<h2 id="installing-stuff">
  <a class="heading-anchor" href="#installing-stuff">Installing stuff<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 default macOS application installation process of downloading a .dmg file, then opening it, then dragging an icon in
a window to the Applications folder feels super odd.</p>
<p>Luckily I was aware of the tool <code>brew</code> and have been using that heavily to get everything that I need installed, in a
Linux-y way.</p>
<h2 id="permissions">
  <a class="heading-anchor" href="#permissions">Permissions<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 appreciate the concern that macOS has about actions that I take on my laptop, but my god, the permission popups get
silly sometimes. When a CLI app is doing things and accessing data on my drive, I can randomly be presented with a
permissions pop-up, stealing my focus from writing a Slack message.</p>
<h2 id="day-to-day-work">
  <a class="heading-anchor" href="#day-to-day-work">Day to day work<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>Video calls work really well, I can do my full stack engineer things, and overall things work, even if it is sometimes
slightly different.</p>
<p>The default Terminal app is not good, I&rsquo;m still not quite sure why it does not close the window when I exit it, that
&ldquo;Process exited&rdquo; message is not helpful.</p>
<h2 id="hardware">
  <a class="heading-anchor" href="#hardware">Hardware<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>No contest, the hardware on a MacBook Pro feels nice and premium compared to the ThinkPad P14s gen 4. The latter now
feels like a flexible plastic piece of crap.</p>
<p>The screen is beautiful and super smooth due to the higher refresh rate.</p>
<p>The MacBook does not flex when I hold it.</p>
<p>Battery life is phenomenal, the need to have a charger is legitimately not a concern in 90% of the situations I use a
MacBook in.</p>
<p>Keyboard is alright, good to type on, but layout is not my preference.</p>
<p>M3 Pro chip is fast as heck. 18 GB of memory is a solid downgrade from 32 GB, but so far it has not prevented me from
doing my work.</p>
<p>I have never heard the fan kick on, even when testing a lot of Go code in dozens of containers, pegging the CPU at 100%,
using a lot of memory, and causing a lot of disk writes. I thought that I once heard it, but no, that fan noise was
coming from a nearby ThinkPad.</p>
<p>The alumin<strong>i</strong>um case does have one downside: the MacBook Pro is incredibly slippery. I once put it in my backpack
and it made a loud <em><strong>thunk</strong></em> as it hit the table that the backpack was on. Whoops.</p>
<h2 id="external-displays">
  <a class="heading-anchor" href="#external-displays">External displays<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>macOS does not provide scaling options on my 3440x1440p ultra-wide monitor. Even GNOME has that, with fractional
scaling!</p>
<p>The two alternatives are to use a lower resolution (disgusting), or increase the text size across the OS so that I
don&rsquo;t suffer with my poor eyesight.</p>
<h2 id="apple-id-and-app-store">
  <a class="heading-anchor" href="#apple-id-and-app-store">Apple ID and App Store<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>Never needed those. I like that. Having used an iPhone for a while, I sort of expected this to be a requirement, but no,
you can completely ignore those aspects of macOS and work with a local account. Even Windows 11 doesn&rsquo;t want to allow
that!</p>
<h2 id="language-switching">
  <a class="heading-anchor" href="#language-switching">Language switching<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>Switching the keyboard language using the keyboard shortcut is broken about 50% of the time, which feels odd given that
it&rsquo;s something that just works on GNOME. This is quite critical for me since I shift between the Estonian and US
keyboard a lot when working, as the US layout has the brackets and all the other important characters in the right
places for programming and writing, while Estonian keyboard has all the Õ Ä Ö Ü-s that I need.</p>
<h2 id="the-day-it-fell-apart">
  <a class="heading-anchor" href="#the-day-it-fell-apart">The day it fell apart<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 upgraded to macOS 26.3 Tahoe on 23rd of February. SSH worked in the morning. Upgrade during lunch, come back, bam,
broken.</p>
<p>The SSH logins would halt at the part where public key authentication was taking place, the process just hung. I
confirmed that by adding <code>-vvv</code> into the SSH command.</p>
<p>With some vibe-debugging with Claude Code, I found that something with the SSH agent service had broken after the
upgrade. One reasonably simple fix was to put this in your <code>.zshrc</code>:</p>
<pre tabindex="0"><code>export SSH_AUTH_SOCK=$(mktemp -d)/agent.sock
ssh-agent -a &#34;$SSH_AUTH_SOCK&#34; &gt; /dev/null 2&gt;&amp;1
ssh-add --apple-use-keychain ~/.ssh/id_ed25519 2&gt;/dev/null
</code></pre><p>Then it works in the shell, but all other git integrations, such as all the repos I have cloned and am using via
IntelliJ IDEA, were still broken.</p>
<p>Claude suggested that I build my own SSH agent, and install that until this issue is fixed. That&rsquo;s when I decided to
stop.</p>
<p>macOS was supposed to just work, and not get into my way when doing work. This level of workaround is something I expect
from working with Linux, and even there it usually doesn&rsquo;t get that odd, I can roll back a version of a package easily,
or fix it by pulling in the latest development release of that particular package.</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>I went into this experiment with an open mind, no expectations, and I have to admit that a MacBook Pro with M3 Pro chip
is not bad at all, as long as it works.</p>
<p>Unfortunately it doesn&rsquo;t work for me right now. I might have gotten very unlucky with this issue and the timing, but
first impressions matter a lot. The hardware can be nice and feel nice, but if the software lets me down and stops me
from doing what&rsquo;s more important, then it makes the hardware useless.</p>
<p>It turns out that I like Linux and GNOME a lot. Things are simple, improvements are constant and iterative in nature, so
you don&rsquo;t usually notice it (with Wayland and Pipewire being rare exceptions), and you have more control when you need
to fix something. Making those one-off solutions like a DIY coding agent sandbox, or a backup script, or setting up
<a href="/posts/2022/07/09/btrbk-is-awesome/">snapshots</a> on my workstation are also super easy.</p>
<p>If <a href="https://asahilinux.org/">Asahi Linux</a> had 100% compatibility on all modern M-series MacBooks, then that would be a
killer combination.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup></p>
<p>Until then, back to the ol&rsquo; reliable ThinkPad P14s gen 4 I go. I can live with fan noise, Bluetooth oddities and Wi-Fi
roaming issues, but not with something as basic as SSH not working one day.<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup></p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>any kind billionaires want to bankroll the project? Oh wait, that&rsquo;s an oxymoron.&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>the fan noise can actually be fixed quite easily by setting a lower temperature target on the Ryzen APU and tuning
the fan to only run at the lowest speed after a certain temperature threshold.&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded></item><item><title>LattePanda IOTA review: how does it perform as a home server?</title><link>https://ounapuu.ee/posts/2025/11/18/lattepanda-iota/</link><pubDate>Tue, 18 Nov 2025 06:00:00 +0200</pubDate><author>ihavesomethoughtsonyourblog@ounapuu.ee (Herman Õunapuu)</author><guid>https://ounapuu.ee/posts/2025/11/18/lattepanda-iota/</guid><description>I received a review sample of the LattePanda IOTA, here's what I did to it.</description><content:encoded><![CDATA[<img src="https://ounapuu.ee/posts/2025/11/18/lattepanda-iota/media/cover_hu_ee50a0b402f18b9b.jpg" width="1200" height="630" alt="LattePanda IOTA review: how does it perform as a home server?" /><p><em><strong>Disclosure:</strong></em> the review sample was provided by <a href="https://www.dfrobot.com/">DFRobot, the makers of LattePanda.</a> I am
allowed to keep the review sample indefinitely, no money exchanged hands, and as always, this post covers my own
thoughts and views on the product.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup></p>
<p><a href="/posts/2023/02/28/lattepanda-v1/">In 2023, I happened to find a LattePanda V1 for sale at a good price.</a> Given the
then-poor availability of affordable Raspberry Pi units, I got one for testing and finding potential use cases for it in
my setup. However, it was just a little bit too weak for any practical uses in 2023, with its CPU and USB connectivity
being just slow enough to be of less use, and the networking being capped at 100 Mbit/s.</p>
<p>In 2025, we have the spiritual successor to it: <a href="https://www.lattepanda.com/lattepanda-iota">the LattePanda IOTA.</a>
It keeps the same form factor, but the connectivity and raw power have all received a significant jump, with the CPU
performance rivalling my current home server, <a href="/posts/2024/10/16/third-times-the-charm/">the trusty ThinkPad T430.</a></p>
<p>The marketing materials list all sorts of sensible use cases for it. I&rsquo;m sure that it works fine for those, but I&rsquo;m only
interested in one thing: how close does this board get to
being <a href="/posts/2025/03/07/perfect-home-server/">the perfect home server?</a></p>
<blockquote>
<p>The perfect home server uses very little power, offers plenty of affordable storage and provides a lot of performance
when it’s actually being relied upon.</p>
</blockquote>
<blockquote>
<p>In my case, low power means less than 5 W while idling, 10+ TB of redundant storage for data resilience and integrity
concerns, and performance means about 4 modern CPU cores’ worth (low-to-midrange desktop CPU performance).</p>
</blockquote>
<h2 id="the-model-and-accessories">
  <a class="heading-anchor" href="#the-model-and-accessories">The model and accessories<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 model I&rsquo;m reviewing is the 8GB RAM/64GB eMMC one, with a Windows 11 installation on it (not activated).</p>









<figure class="center">
  <a href="/posts/2025/11/18/lattepanda-iota/media/lattepanda-0.jpg">
    <img src="/posts/2025/11/18/lattepanda-iota/media/lattepanda-0_hu_c45484277466acf6.webp"
     width="1000"
     height="774"
     loading="lazy"
     decoding="async"
     alt="The LattePanda IOTA.">

  </a>
  <figcaption class="center">The LattePanda IOTA.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/11/18/lattepanda-iota/media/lattepanda-1.jpg">
    <img src="/posts/2025/11/18/lattepanda-iota/media/lattepanda-1_hu_d3a2ee51a8a3f4c3.webp"
     width="1000"
     height="686"
     loading="lazy"
     decoding="async"
     alt="My wife said that the logo for the LattePanda is cute. I agree.">

  </a>
  <figcaption class="center">My wife said that the logo for the LattePanda is cute. I agree.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/11/18/lattepanda-iota/media/lattepanda-2.jpg">
    <img src="/posts/2025/11/18/lattepanda-iota/media/lattepanda-2_hu_cae36972b32803a8.webp"
     width="1000"
     height="556"
     loading="lazy"
     decoding="async"
     alt="Side view, including the PCIe x1 connector.">

  </a>
  <figcaption class="center">Side view, including the PCIe x1 connector.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/11/18/lattepanda-iota/media/lattepanda-3.jpg">
    <img src="/posts/2025/11/18/lattepanda-iota/media/lattepanda-3_hu_4b383f3738800b2.webp"
     width="1000"
     height="540"
     loading="lazy"
     decoding="async"
     alt="Side view, with GPIO connections prominent.">

  </a>
  <figcaption class="center">Side view, with GPIO connections prominent.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/11/18/lattepanda-iota/media/lattepanda-4.jpg">
    <img src="/posts/2025/11/18/lattepanda-iota/media/lattepanda-4_hu_94feb7c0302ce393.webp"
     width="1000"
     height="626"
     loading="lazy"
     decoding="async"
     alt="Side view, including USB-C PD-compatible port, microSD card reader, a port forgotten by all smartphone makers, and
gigabit Ethernet.">

  </a>
  <figcaption class="center">Side view, including USB-C PD-compatible port, microSD card reader, a port forgotten by all smartphone makers, and
gigabit Ethernet.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/11/18/lattepanda-iota/media/lattepanda-5.jpg">
    <img src="/posts/2025/11/18/lattepanda-iota/media/lattepanda-5_hu_449bf0ed42b37f87.webp"
     width="1000"
     height="661"
     loading="lazy"
     decoding="async"
     alt="Side view, including three USB 3 10 Gbps ports, and a full-sized HDMI port.">

  </a>
  <figcaption class="center">Side view, including three USB 3 10 Gbps ports, and a full-sized HDMI port.</figcaption>
</figure>

<p>Along with the review unit itself, I got sent the following accessories:</p>
<ul>
<li><a href="https://www.dfrobot.com/product-2987.html">active cooler</a></li>
<li><a href="https://www.dfrobot.com/product-2985.html">M.2 M-key expansion board</a></li>
<li><a href="https://www.dfrobot.com/product-2984.html">51W PoE expansion board</a></li>
<li><a href="https://www.dfrobot.com/product-2982.html">M.2 4G LTE expansion board</a></li>
<li><a href="https://www.dfrobot.com/product-2983.html">UPS expansion board</a></li>
</ul>
<p>The board was tested with a Lenovo 65W USB-C power adapter, because that&rsquo;s what I had available. Given the specs of the
board and the accessories, that should be plenty. As far as I know, USB power delivery seems to work fine and it&rsquo;s not
just a weird USB-C connector that requires specific voltages to work.</p>
<p>The M.2 NVMe SSD used in this review is a 512 GB Samsung PM9A1. I got that one from another PC that really didn&rsquo;t need a
boot drive that large.</p>
<p>Most of the testing was done with a fresh Fedora Server 43 installation, kernel version 6.17.7.</p>
<h2 id="the-hardware">
  <a class="heading-anchor" href="#the-hardware">The hardware<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 suggest looking at <a href="https://www.lattepanda.com/lattepanda-iota#spec">the spec sheet</a> if you&rsquo;re interested in all the
fine details and available configurations.</p>
<p>In short:</p>
<ul>
<li>CPU: Intel N150, 4 cores, 4 threads, up to 3.6 GHz</li>
<li>RAM: 8/16 GB (depending on model)</li>
<li>Onboard storage: 64/128GB eMMC (depending on model)</li>
<li>Networking: gigabit Ethernet port</li>
<li>Real-time clock: <em><strong>yes!</strong></em></li>
</ul>
<p>The overall connectivity has been improved with the new version of this board compared to the old board. The USB ports
are all fast 10 Gbit/s ones, and we have actual PCIe connectivity to play with, although the available bandwidth is
quite limited with a PCIe 3.0 x1 lane available on the port that both the M.2 M-key and PoE adapter connect to.</p>
<p>What caught my eye was the CPU performance I&rsquo;ve been proudly
running <a href="/posts/2024/10/16/third-times-the-charm/">an old ThinkPad T430</a> as a server for a while now, with some failed
attempts to find a more <a href="/posts/2023/10/09/zimaboard/">low-power</a>
and <a href="/posts/2025/06/06/thinkcentre-m900-tiny/">efficient</a>
solution.</p>
<p>The Intel N150 is now offering similar levels of performance, but in a much smaller power envelope.</p>
<p>When it comes to more specialized functionalities, such as GPIO and the RP2040 microcontroller, I don&rsquo;t currently have a
solid use case for them, so they won&rsquo;t be covered in this review. I might fancy giving them a go in the future though,
it would be nice to get some environmental sensors on it to monitor the temperature and humidity of the server room
(which is a closet).</p>
<p>Since I also don&rsquo;t have an 4G LTE modem available, I did not test the associated adapter.</p>
<h2 id="m2-m-key-adapter">
  <a class="heading-anchor" href="#m2-m-key-adapter">M.2 M-key adapter<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 way you can add expansion boards to the LattePanda IOTA is quite similar to how Raspberry Pi 5 and other similar
single board computers do it: you simply run a flexible cable to an adapter board, and bam, you have extra
connectivity!</p>
<p>With the M.2 M-key adapter kit, you get the adapter itself, some mounting screws and brass stand-offs, and a tiny little
flexible cable for the PCIe signal.</p>









<figure class="center">
  <a href="/posts/2025/11/18/lattepanda-iota/media/m2-adapter-0.jpg">
    <img src="/posts/2025/11/18/lattepanda-iota/media/m2-adapter-0_hu_db0b0dd1c31ad3b0.webp"
     width="1000"
     height="632"
     loading="lazy"
     decoding="async"
     alt="Packaging of the M.2 M-key adapter.">

  </a>
  <figcaption class="center">Packaging of the M.2 M-key adapter.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/11/18/lattepanda-iota/media/m2-adapter-1.jpg">
    <img src="/posts/2025/11/18/lattepanda-iota/media/m2-adapter-1_hu_44b0dab8db46a0b8.webp"
     width="1000"
     height="556"
     loading="lazy"
     decoding="async"
     alt="The adapter itself.">

  </a>
  <figcaption class="center">The adapter itself.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/11/18/lattepanda-iota/media/m2-adapter-2.jpg">
    <img src="/posts/2025/11/18/lattepanda-iota/media/m2-adapter-2_hu_4a68666849c39eb2.webp"
     width="1000"
     height="450"
     loading="lazy"
     decoding="async"
     alt="Bottom of the adapter (or top, depending on how you mount it).">

  </a>
  <figcaption class="center">Bottom of the adapter (or top, depending on how you mount it).</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/11/18/lattepanda-iota/media/m2-adapter-installed-0.jpg">
    <img src="/posts/2025/11/18/lattepanda-iota/media/m2-adapter-installed-0_hu_b7a06679bf9193a6.webp"
     width="1000"
     height="785"
     loading="lazy"
     decoding="async"
     alt="Adapter installed to the SBC.">

  </a>
  <figcaption class="center">Adapter installed to the SBC.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/11/18/lattepanda-iota/media/m2-adapter-installed-1.jpg">
    <img src="/posts/2025/11/18/lattepanda-iota/media/m2-adapter-installed-1_hu_37d9a777355bca8f.webp"
     width="1000"
     height="718"
     loading="lazy"
     decoding="async"
     alt="Adapter with an M.2 2280 NVMe SSD. This Western Digital SSD was used for some quick testing.">

  </a>
  <figcaption class="center">Adapter with an M.2 2280 NVMe SSD. This Western Digital SSD was used for some quick testing.</figcaption>
</figure>

<p>The link speed is PCIe 3.0, with one lane available. In theory, this means a maximum of 1 GB/s of throughput. In
practice and with this board and SSD combination, I got a maximum of ~810 MB/s. I expect some levels of losses with
these types of setups, so in my view this seems normal. For the test, I just did
a <code>dd if=/dev/nvme0n1 of=/dev/null bs=8M status=progress</code>. The SSD itself supports up to 4 lanes of PCIe connectivity so
that should not be a limiting factor here.</p>
<p>The lovely part about M.2 NVMe ports is that you can use it for a lot of off-label use cases.</p>
<p>Fancy some SATA ports? There&rsquo;s an <a href="https://www.dfrobot.com/product-2811.html">adapter</a> for that.<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup></p>
<p>Or a network card? Some fancy AI accelator thingy? Or a full-sized GPU? Anything will work (probably), as long as the
cables and adapters are high quality, and you provide extra power to the device through other means.</p>
<h2 id="poe-expansion-board">
  <a class="heading-anchor" href="#poe-expansion-board">PoE expansion board<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 only device on my network that is connected over PoE is currently an Ubiquiti Wi-Fi access point, and that is
unlikely to change in the near future because that would require a full replacement of my networking gear.<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup></p>
<p>However, I still gave this board a quick go, and I&rsquo;m happy to report that it also works as an additional standalone
Ethernet port. The Ethernet controller seems to be similar or the same as on the main board, and it shows up as a
separate networking device. Both are Realtek
NIC-s (<code>Realtek Semiconductor Co., Ltd. RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet Controller</code>), and they work
with the <code>r8169</code> driver. Realtek has a spotty compatibility story overall on Linux from what I&rsquo;ve read, but this one
seems to work fine on Fedora Server 43.</p>









<figure class="center">
  <a href="/posts/2025/11/18/lattepanda-iota/media/poe-0.jpg">
    <img src="/posts/2025/11/18/lattepanda-iota/media/poe-0_hu_228bfca3cc169a2d.webp"
     width="1000"
     height="746"
     loading="lazy"
     decoding="async"
     alt="PoE adapter.">

  </a>
  <figcaption class="center">PoE adapter.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/11/18/lattepanda-iota/media/poe-1.jpg">
    <img src="/posts/2025/11/18/lattepanda-iota/media/poe-1_hu_7365b2a8e90261be.webp"
     width="1000"
     height="780"
     loading="lazy"
     decoding="async"
     alt="PoE adapter, other side.">

  </a>
  <figcaption class="center">PoE adapter, other side.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/11/18/lattepanda-iota/media/poe-2.jpg">
    <img src="/posts/2025/11/18/lattepanda-iota/media/poe-2_hu_f73e8ff578bc9f0d.webp"
     width="1000"
     height="816"
     loading="lazy"
     decoding="async"
     alt="PoE adapter, installed.">

  </a>
  <figcaption class="center">PoE adapter, installed.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/11/18/lattepanda-iota/media/poe-3.png">
    <img src="/posts/2025/11/18/lattepanda-iota/media/poe-3_hu_7ab3c58ff5a4560.webp"
     width="1000"
     height="551"
     loading="lazy"
     decoding="async"
     alt="Detected network interfaces on Fedora Server 43. Both work!">

  </a>
  <figcaption class="center">Detected network interfaces on Fedora Server 43. Both work!</figcaption>
</figure>

<p>I was very close to pulling the trigger and turning it into a beefy router so that I can finally move my Wireguard
networks on the router as my current one cannot do more than 20 Mbit/s of Wireguard traffic, but I didn&rsquo;t end up going
through with that idea because of how well the SBC did in other areas.</p>
<h2 id="ups-expansion-board">
  <a class="heading-anchor" href="#ups-expansion-board">UPS expansion board<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>As some of you might know, I&rsquo;m a fan
of <a href="/posts/2025/08/18/cheap-power-banks-suck/">playing with fir-</a> 18650 Li-ion battery cells, and I&rsquo;m
hoping to one day build a <a href="https://solar.lowtechmagazine.com/">solar-powered server of my own</a> (of which there
are <a href="https://louwrentius.com/i-made-my-blog-solar-powered-then-things-escalated.html">many</a> <a href="https://dri.es/my-solar-powered-and-self-hosted-website">examples</a>).</p>
<p>I took some spare 18650 cells that came from an old ThinkPad battery, made sure that the voltages are more-or-less
the same, and threw them on the board.</p>









<figure class="center">
  <a href="/posts/2025/11/18/lattepanda-iota/media/ups-0.jpg">
    <img src="/posts/2025/11/18/lattepanda-iota/media/ups-0_hu_866496dcf875ef62.webp"
     width="1000"
     height="809"
     loading="lazy"
     decoding="async"
     alt="UPS adapter.">

  </a>
  <figcaption class="center">UPS adapter.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/11/18/lattepanda-iota/media/ups-1.jpg">
    <img src="/posts/2025/11/18/lattepanda-iota/media/ups-1_hu_7e7014640b9e0ab1.webp"
     width="1000"
     height="728"
     loading="lazy"
     decoding="async"
     alt="UPS adapter, other side.">

  </a>
  <figcaption class="center">UPS adapter, other side.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/11/18/lattepanda-iota/media/ups-2.jpg">
    <img src="/posts/2025/11/18/lattepanda-iota/media/ups-2_hu_fca2886a8254bb77.webp"
     width="1000"
     height="886"
     loading="lazy"
     decoding="async"
     alt="UPS adapter, installed on the board.">

  </a>
  <figcaption class="center">UPS adapter, installed on the board.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/11/18/lattepanda-iota/media/ups-3.jpg">
    <img src="/posts/2025/11/18/lattepanda-iota/media/ups-3_hu_5f85831f1acaa04.webp"
     width="1000"
     height="893"
     loading="lazy"
     decoding="async"
     alt="UPS adapter, running off of batteries.">

  </a>
  <figcaption class="center">UPS adapter, running off of batteries.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/11/18/lattepanda-iota/media/ups-4.jpg">
    <img src="/posts/2025/11/18/lattepanda-iota/media/ups-4_hu_7f9dc3c2894a962a.webp"
     width="1000"
     height="851"
     loading="lazy"
     decoding="async"
     alt="UPS adapter, charging.">

  </a>
  <figcaption class="center">UPS adapter, charging.</figcaption>
</figure>

<p>Connecting the UPS board with the standoffs was fine, but the cable connecting it
with the SBC was finicky. I triple-checked that the connector was the right way, but had to still use an uncomfortable
amount of force to connect it all up. The battery cells themselves sit snugly on the board, and unless you drop the
board, they should not fall out on their own. You&rsquo;d still want to build a case around it if you&rsquo;re going to actually put
it to use in rough environments.</p>
<p>The manual for the UPS board emphasizes that it only works on Windows 10/11, and sadly that seems to be the case, the
UPS does not seem to show up as an USB-listed device, and tools like <a href="https://networkupstools.org/">NUT</a> did not find
anything to monitor with a quick 5-minute investigation.</p>
<p>The UPS board also has an interesting selection of switches that you can use to adjust the behaviour of the board, like
automatically turning the board on when power comes back on, and setting an 80% battery charge limit. The first one was
not really necessary to use, the board would follow whatever setting you have enabled on the SBC itself. I configured
mine via UEFI settings to automatically turn on with a power adapter connected, and that worked here as well.</p>
<p>The run time of your LattePanda IOTA with the UPS expansion board will heavily depend on your workloads and quality of
your battery cells. Mine were used cells, and then I hit the board with <code>stress -c 4</code> to create some load on it. It ran
for over an hour like that, and then I got bored and wanted to proceed with testing other accessories. The marketing
materials mention up to 8 hours of runtime, and I suspect that with good Li-ion cells and workloads where you idle most
of the time, it will likely be achievable.</p>
<p>The board seems to trigger a hard shutdown on Linux because the host OS is not aware of a battery being connected. Not
that catastrophic for most modern filesystems and database engines, but something to consider in your own workloads in
case they are Linux-based.</p>
<p>The UPS board seems to handle power connection and disconnection events well enough, it did not do anything weird when
repeatedly plugging and unplugging the USB-C cable.<sup id="fnref:4"><a href="#fn:4" class="footnote-ref" role="doc-noteref">4</a></sup></p>
<p>Based on the readings from a wall outlet energy meter, the board uses up to 20W when charging the cells. It&rsquo;s possible
for the board to pull more than that with a maximum CPU load and connected peripherals, so I wonder if that may be an
issue with more intense usage scenarios.</p>
<p>During charging and discharging cycles, even under heavy loads, the battery cells did not get hot and were at best warm
to touch.</p>
<h2 id="ethernet">
  <a class="heading-anchor" href="#ethernet">Ethernet<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 gigabit.</p>
<p>Fine for my use case given that I still live in 2006 and only have devices that support gigabit Ethernet
speeds at best (excluding the Ubiquiti Wi-Fi AP), but certainly less
than <a href="https://www.zimaspace.com/products/single-board2-server#specs">some competing products.</a></p>
<h2 id="emmc-and-usb-storage">
  <a class="heading-anchor" href="#emmc-and-usb-storage">eMMC and 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>Compared to the LattePanda V1, the USB port performance is actually decent for my use case. I can connect up to three
USB-connected storage devices to the board, so that&rsquo;s exactly what I did.</p>
<p>I set up three different USB-connected devices:</p>
<ul>
<li>USB hard drive (Seagate Basic)</li>
<li>USB SATA SSD (Samsung QVO 4TB in ICY BOX USB-SATA adapter)</li>
<li>USB NVMe SSD (512 GB Samsung PM9A1 with some random cheap USB to M.2 NVMe adapter)</li>
</ul>
<p>For each device (including on-board eMMC device), I ran
a <code>while true; do dd if=/dev/X of=/dev/null bs=8M status=progress; sleep 5; done</code>, which puts a sequential
read workload on all the drives in an infinite loop.</p>
<p>After about 72 TB of data read in less than 24 hours, I checked the kernel logs and there were no stability issues
whatsoever. The NVMe SSD started throttling due to heat, which was expected with that cheap adapter.</p>









<figure class="center">
  <a href="/posts/2025/11/18/lattepanda-iota/media/storage-stress-test.png">
    <img src="/posts/2025/11/18/lattepanda-iota/media/storage-stress-test_hu_fe28dcd9ae42d4a9.webp"
     width="1000"
     height="437"
     loading="lazy"
     decoding="async"
     alt="Results of the storage stress test.">

  </a>
  <figcaption class="center">Results of the storage stress test.</figcaption>
</figure>

<p>Assuming no issues with any cables and adapters, the USB ports seem to be solid enough for running storage devices off
of. Yes, <a href="/posts/2025/06/06/thinkcentre-m900-tiny/#2025-06-08-update">it can be a horrible idea in some use cases,</a> but
at the same time my ThinkPad T430 has been excellent with USB-based storage, and that&rsquo;s with one of the USB ports being
coffee-stained!</p>
<p>The eMMC chip is also more performant compared to the previous iteration, with sequential read speeds averaging around
316 MB/s, writes around 175 MB/s, and average read latency being around 0.15 ms. Certainly good enough for a boot drive.</p>
<h2 id="display-connectivity">
  <a class="heading-anchor" href="#display-connectivity">Display connectivity<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 LattePanda V1 struggled with larger displays, and when I gave it a go during this review, it would not properly
display an image on my 3440x1440p monitor.</p>
<p>The LattePanda IOTA just did it, at 60 Hz. On Fedora Workstation and GNOME, the experience was smooth. Once you start
doing things in the browser, like video playback, the situation is less optimal, but as a makeshift desktop PC it is
alright for most low/mid-range activities.</p>









<figure class="center">
  <a href="/posts/2025/11/18/lattepanda-iota/media/display-output.jpg">
    <img src="/posts/2025/11/18/lattepanda-iota/media/display-output_hu_b30923cd36a81fa0.webp"
     width="1000"
     height="712"
     loading="lazy"
     decoding="async"
     alt="The display output working as intended on Windows 11.">

  </a>
  <figcaption class="center">The display output working as intended on Windows 11.</figcaption>
</figure>

<h2 id="windows-compatibility">
  <a class="heading-anchor" href="#windows-compatibility">Windows compatibility<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 board came with a Windows 11 installation (not activated). As is tradition with Windows, the initial impressions are
horrible, update processes running in the background made the active cooler go wild and the device felt sluggish.</p>
<p>But after that process is done, the experience is not bad at all if you look past the OS being Windows.</p>
<p>I did not do a thorough investigation and I suggest formatting the device boot drive either way when receiving it, but
the Windows 11 installation looked clean enough, with no obvious bloatware.</p>









<figure class="center">
  <a href="/posts/2025/11/18/lattepanda-iota/media/windows-experience.jpg">
    <img src="/posts/2025/11/18/lattepanda-iota/media/windows-experience_hu_bd5f1e67dc619872.webp"
     width="1000"
     height="760"
     loading="lazy"
     decoding="async"
     alt="The typical Windows experience.">

  </a>
  <figcaption class="center">The typical Windows experience.</figcaption>
</figure>

<h2 id="linux-compatibility">
  <a class="heading-anchor" href="#linux-compatibility">Linux compatibility<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 LattePanda V1 had some quirks. The performance was iffy, and you had to specify a Linux kernel parameter on first
boot so that Fedora Linux does not confuse the optional display interface to be an always-connected primary display.</p>
<p>The previous version also didn&rsquo;t include a real-time clock (RTC) by default, which meant that it was impossible to
schedule some systemd timers as the time would always jump on boot years ahead on distros like Fedora Server. I got
stuck in a reboot loop with a scheduled reboot job that way, was not fun to recover from.</p>
<p>With the LattePanda IOTA, I have not observed any weird oddities and quirks with it. Even the kernel logs don&rsquo;t show
anything that&rsquo;s problematic, and the RTC is handy to have around as that helps avoid the issue mentioned above.</p>
<h2 id="active-cooler">
  <a class="heading-anchor" href="#active-cooler">Active cooler<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 LattePanda V1, the cooler was not strictly required, but strongly recommended if you were going to use the
board with moderate to high sustained loads. My solution was to slap an inappropriately sized heat sink to it with a
thermal pad and zip ties and/or velcro strips, which looked horrible, because it was.</p>
<p>With the LattePanda IOTA, the cooler is now a <em><strong>mandatory</strong></em> part of the assembly. It can be fitted with
either
a <a href="https://www.dfrobot.com/product-2988.html">passive cooler</a>, <a href="https://www.dfrobot.com/product-2992.html">a case with passive cooling</a>,
or an <a href="https://www.dfrobot.com/product-2987.html">active cooler</a>.</p>









<figure class="center">
  <a href="/posts/2025/11/18/lattepanda-iota/media/active-cooler-0.jpg">
    <img src="/posts/2025/11/18/lattepanda-iota/media/active-cooler-0_hu_c12676e55237e93e.webp"
     width="1000"
     height="537"
     loading="lazy"
     decoding="async"
     alt="LattePanda IOTA next to the active cooler.">

  </a>
  <figcaption class="center">LattePanda IOTA next to the active cooler.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/11/18/lattepanda-iota/media/active-cooler-1.jpg">
    <img src="/posts/2025/11/18/lattepanda-iota/media/active-cooler-1_hu_7ff1b540440bb8f8.webp"
     width="1000"
     height="703"
     loading="lazy"
     decoding="async"
     alt="The bottom of the active cooler.">

  </a>
  <figcaption class="center">The bottom of the active cooler.</figcaption>
</figure>

<p>The active cooler does a good job of keeping the board cool, but it does get super loud at higher loads. The default fan
curve is very primitive, with the fan changing it speeds in big and sudden increments. Bursty workloads certainly <em>feel</em>
bursty with this fan. You will not want to be in the same room with this active cooler.</p>
<p>The sound profile is very similar to a thin and light laptop, and the fan has a <em><strong>very</strong></em> strong high-pitched whine to
it.</p>
<p><a href="/posts/2025/11/18/lattepanda-iota/media/active-cooler.mp3">Here&rsquo;s an audio recording of the noise under heavy load if you&rsquo;re interested (MP3 file). Recorded using a Google Pixel 8a.</a></p>
<p>You can mitigate the active cooler noise issue by reducing the CPU clock speed by setting a lower power limit in UEFI
settings, or on Linux, setting a lower CPU performance ceiling using <code>intel_pstate</code> driver <code>max_perf_pct</code> option once on
boot. This comes at the obvious cost of some raw performance, but given that CPU power scales non-linearly, you may not
even notice it that much.</p>
<p>If you are sensitive to fan noise, then do get the passive cooler and slap a Noctua fan on it, it will likely be a much
better experience with both the cooling performance and noise levels.</p>
<p>Oh, and fun fact: I got so carried away with testing that <strong>I actually forgot to remove the plastic film on the larger
thermal pad</strong> that cools supporting components.</p>
<p><em><strong>And then I did about 24 hours of stress testing with that arrangement.</strong></em></p>
<p>I can confirm that the design of the board is idiot-proof, as I did not actually notice any severe throttling or thermal
issues with that mistake. You can actually see the plastic film being present in a few photos of the board in this
review. I still can&rsquo;t believe that after all these years I ended up making <em><strong>that one mistake</strong></em> that you usually see
online in tech support gore posts.</p>
<h2 id="power-consumption">
  <a class="heading-anchor" href="#power-consumption">Power consumption<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 idle power consumption of the LattePanda IOTA seems to be around 4.0W, which is more than the Raspberry Pi 5 8GB
with its power
consumption <a href="https://www.jeffgeerling.com/blog/2024/new-2gb-pi-5-has-33-smaller-die-30-idle-power-savings">being around 3.2W.</a>
Slightly higher compared to that, but lower than most x86 mini PC-s with idle power consumption typically in the range
of 6-14W.</p>
<p>During the disk read speed stress test, I saw a maximum of 24.4W pulled from the wall.</p>
<p>With the disk read stress test and a full CPU stress test, I saw a peak of 36.3W, with it quickly dropping down as the
CPU settled down at a lower clock speed.</p>
<h2 id="home-server">
  <a class="heading-anchor" href="#home-server">Home server<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 board came surprisingly close to my perfect home server criteria that I had outlined earlier this year.</p>
<p>Less than 5W when idling? Check.</p>
<p>10+ TB of redundant storage? <a href="/posts/2025/10/06/datablocks-white-label-drives/">Check.</a></p>
<p>4 modern cores&rsquo; worth of CPU performance? Check.</p>
<p>Enough performance during bursty workloads? So far, yes.</p>
<p>I then installed a fresh copy of Fedora Server 43 and moved all my home server workloads to it. The eMMC storage is used
as a boot drive, <code>journald</code> writes are disabled, workloads requiring good latency and speed are on the 512GB NVMe SSD,
and bulk storage is connected via two existing USB-SATA adapters taken from one of those WD Elements/MyBook external
hard drive enclosures.</p>
<p>Then it just worked. No issues.<sup id="fnref:5"><a href="#fn:5" class="footnote-ref" role="doc-noteref">5</a></sup></p>









<figure class="center">
  <a href="/posts/2025/11/18/lattepanda-iota/media/home-server.jpg">
    <img src="/posts/2025/11/18/lattepanda-iota/media/home-server_hu_5194e24434b1f066.webp"
     width="1000"
     height="749"
     loading="lazy"
     decoding="async"
     alt="The LattePanda IOTA next to two 18TB hard drives, running as a home server.">

  </a>
  <figcaption class="center">The LattePanda IOTA next to two 18TB hard drives, running as a home server.</figcaption>
</figure>

<p>The drop in the overall power consumption of my whole home server and networking stack was also immediately noticeable.</p>









<figure class="center">
  <a href="/posts/2025/11/18/lattepanda-iota/media/power-consumption.png">
    <img src="/posts/2025/11/18/lattepanda-iota/media/power-consumption_hu_6fcbbf1adf7484c5.webp"
     width="1000"
     height="656"
     loading="lazy"
     decoding="async"
     alt="Solid 10W drop in normal use.">

  </a>
  <figcaption class="center">Solid 10W drop in normal use.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/11/18/lattepanda-iota/media/cpu.png">
    <img src="/posts/2025/11/18/lattepanda-iota/media/cpu_hu_9717d24be3191575.webp"
     width="1000"
     height="657"
     loading="lazy"
     decoding="async"
     alt="CPU usage on the ThinkPad T430 vs the LattePanda IOTA (the gap is the server migration). Same workloads in both.">

  </a>
  <figcaption class="center">CPU usage on the ThinkPad T430 vs the LattePanda IOTA (the gap is the server migration). Same workloads in both.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/11/18/lattepanda-iota/media/memory.png">
    <img src="/posts/2025/11/18/lattepanda-iota/media/memory_hu_b7f4eeeb01b4598c.webp"
     width="1000"
     height="657"
     loading="lazy"
     decoding="async"
     alt="Memory consumption, ThinkPad T430 (16GB DDR3) vs LattePanda IOTA (8GB DDR5).">

  </a>
  <figcaption class="center">Memory consumption, ThinkPad T430 (16GB DDR3) vs LattePanda IOTA (8GB DDR5).</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/11/18/lattepanda-iota/media/temps.png">
    <img src="/posts/2025/11/18/lattepanda-iota/media/temps_hu_a0a2f6525ea35be8.webp"
     width="1000"
     height="442"
     loading="lazy"
     decoding="async"
     alt="Temperature readings, ThinkPad T430 vs LattePanda IOTA with the active cooler.">

  </a>
  <figcaption class="center">Temperature readings, ThinkPad T430 vs LattePanda IOTA with the active cooler.</figcaption>
</figure>

<p>Here are my observations of the CPU performance and behaviour after hitting it with an all-core CPU load:</p>
<ul>
<li>2.9 GHz for a short time period (10-15 seconds), with CPU hovering around 80°C</li>
<li>2.2-2.3 GHz after that, with the CPU dropping to around 70°C</li>
</ul>
<p>I have seen the CPU hit around 3.6 GHz with a single core load while there is nothing running in the background, but
during my normal home server operations the cores are doing enough work across all 4 cores, so that doesn&rsquo;t happen all
that often, and 2.9 GHz is the ceiling for single core performance.</p>
<p>The only limiting factor so far has been the 8 GB of memory on my review unit, but on the bright side that limitation
forced me to review the memory usage of some of the jobs that I run on my home server, which ended up with me finding a
few resource hogs and then fixing them all up. Now I can run about 30 Docker containers of various resource consumption
on a single board computer, and with less than 4GB of RAM used. I set up an 8GB swap file on the SSD, just in case.</p>
<p>Thanks to the relatively small boot drive, I also learned that even if you move the Docker <code>data-root</code> folder to another
location, <code>containerd</code> will still clutter up your boot drive, so you&rsquo;ll have to change that path in
its <code>/etc/containerd/config.toml</code> file <code>root</code> setting.</p>
<p>I&rsquo;m genuinely impressed with how well the LattePanda IOTA runs as a home server. The board isn&rsquo;t really designed with
that use case in mind, and I suspect that the Intel N150 might be doing most of the heavy lifting here, but still, very
impressive!</p>
<p><strong>Is it the perfect home server?</strong> No, but it&rsquo;s pretty damn close to my definition of it.</p>
<h2 id="uefi-settings-tour">
  <a class="heading-anchor" href="#uefi-settings-tour">UEFI settings tour<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>For those interested in what options are available on the board via its UEFI settings, here are some screenshots of the
settings.<sup id="fnref:6"><a href="#fn:6" class="footnote-ref" role="doc-noteref">6</a></sup></p>
<ul>
<li><a href="/posts/2025/11/18/lattepanda-iota/media/uefi-0.jpg">Main view</a></li>
<li><a href="/posts/2025/11/18/lattepanda-iota/media/uefi-1.jpg">Advanced</a></li>
<li><a href="/posts/2025/11/18/lattepanda-iota/media/uefi-2.jpg">Advanced -&gt; ACPI</a></li>
<li><a href="/posts/2025/11/18/lattepanda-iota/media/uefi-3.jpg">Advanced -&gt; CPU configuration</a></li>
<li><a href="/posts/2025/11/18/lattepanda-iota/media/uefi-4.jpg">Advanced -&gt; Super IO configuration</a></li>
<li><a href="/posts/2025/11/18/lattepanda-iota/media/uefi-5.jpg">Advanced -&gt; Serial port 1 configuration</a></li>
<li><a href="/posts/2025/11/18/lattepanda-iota/media/uefi-6.jpg">Advanced -&gt; SMART Fan Control</a></li>
<li><a href="/posts/2025/11/18/lattepanda-iota/media/uefi-7.jpg">Advanced -&gt; Trusted Computing</a></li>
<li><a href="/posts/2025/11/18/lattepanda-iota/media/uefi-8.jpg">Advanced -&gt; NVMe configuration</a> (no device connected at time of screenshot, oops)</li>
<li><a href="/posts/2025/11/18/lattepanda-iota/media/uefi-9.jpg">Advanced -&gt; Power configuration</a></li>
<li><a href="/posts/2025/11/18/lattepanda-iota/media/uefi-10.jpg">Advanced -&gt; USB configuration</a></li>
<li><a href="/posts/2025/11/18/lattepanda-iota/media/uefi-11.jpg">Advanced -&gt; Serial Port console redirection</a></li>
<li><a href="/posts/2025/11/18/lattepanda-iota/media/uefi-12.jpg">Advanced -&gt; SDIO configuration</a></li>
<li><a href="/posts/2025/11/18/lattepanda-iota/media/uefi-13.jpg">Advanced -&gt; Realtek PCIe Ethernet controller</a></li>
<li><a href="/posts/2025/11/18/lattepanda-iota/media/uefi-14.jpg">Chipset</a></li>
<li><a href="/posts/2025/11/18/lattepanda-iota/media/uefi-15.jpg">Chipset -&gt; System Agent (SA) configuration</a></li>
<li><a href="/posts/2025/11/18/lattepanda-iota/media/uefi-16.jpg">Chipset -&gt; Device configuration</a></li>
<li><a href="/posts/2025/11/18/lattepanda-iota/media/uefi-17.jpg">Security</a></li>
<li><a href="/posts/2025/11/18/lattepanda-iota/media/uefi-18.jpg">Security -&gt; Secure Boot</a></li>
<li><a href="/posts/2025/11/18/lattepanda-iota/media/uefi-19.jpg">Boot</a></li>
<li><a href="/posts/2025/11/18/lattepanda-iota/media/uefi-20.jpg">Save &amp; Exit</a></li>
</ul>
<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 the LattePanda IOTA with its adapters fits your project requirements, you&rsquo;re aware of its limitations, and the
price is right, then I believe it&rsquo;s a solid choice for your next project. My testing didn&rsquo;t immediately break it, even
when I forgot to remove the plastic film on one of the thermal pads.</p>
<p>The current pricing of it and its accessories seem to be roughly in the ballpark of the Raspberry Pi 5 8GB (based on
prices in Estonia). Boards like <a href="https://shop.zimaspace.com/products/zimaboard2-single-board-server">the Zimaboard 2</a>
<strong><em>(have not tested it myself)</em></strong> are more expensive, but they&rsquo;re also catering to a slightly different audience and
have better specs, like 2.5G Ethernet ports and SATA ports with power delivery suitable for running two 3.5&quot; hard drives
straight from the board.</p>
<p>It&rsquo;s hard to beat the bargain that you can get from a used mini PC or NAS, but it won&rsquo;t come with the charm, low power
consumption and bragging rights that a single board computer gets you, especially if you&rsquo;re using it for an off-label
use case like I am.<sup id="fnref:7"><a href="#fn:7" class="footnote-ref" role="doc-noteref">7</a></sup></p>
<p>In the meantime, I&rsquo;ll keep rocking it as a home server. In case something noteworthy happens, I&rsquo;ll update this post,
which is brought to you by the very same LattePanda IOTA at the time of publishing.</p>
<h2 id="2025-12-12-update">
  <a class="heading-anchor" href="#2025-12-12-update">2025-12-12 update<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>About a month after switching my home server workloads to it, the LattePanda IOTA is still rock solid. No issues with
USB HDD stability as well.</p>
<p>The only complaint that carries over from the review is the fact that the active cooler is still way too loud. I&rsquo;m
seriously considering getting the passive cooler for it to shut it up. I can hear it from the bedroom while the IOTA is
in a closet on the other side of the apartment!</p>
<p>I also played around with Intel RAPL settings, which allow you to control the power budget of the CPU on the fly.</p>
<p>The power limit is 10W by default, and short term power limit is 20W. You can control it via these toggles:</p>
<pre tabindex="0"><code>/sys/class/powercap/intel-rapl/intel-rapl:0/constraint_0_power_limit_uw
/sys/class/powercap/intel-rapl/intel-rapl:0/constraint_1_power_limit_uw
</code></pre><p>Get current values:</p>
<pre tabindex="0"><code>cat /sys/class/powercap/intel-rapl/intel-rapl:0/constraint_0_power_limit_uw
cat /sys/class/powercap/intel-rapl/intel-rapl:0/constraint_1_power_limit_uw
</code></pre><p>Set a new limit of 8W to both:</p>
<pre tabindex="0"><code>echo 8000000 &gt; /sys/class/powercap/intel-rapl/intel-rapl:0/constraint_0_power_limit_uw
echo 8000000 &gt; /sys/class/powercap/intel-rapl/intel-rapl:0/constraint_1_power_limit_uw
</code></pre><p>These reset every boot, so you should probably set a one-shot systemd unit to call these early in the boot cycle.</p>
<p>The LattePanda IOTA is the most exciting yet boring addition to my setup. It just works.</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>this also marks the first time that I&rsquo;ve been sent a review sample throughout the course of running this blog!&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>do note that with most M.2 PCIe-&gt;SATA adapters, the controller of the adapter determines how good of an experience
you will have. With some, I&rsquo;ve read that the controllers may not handle some failure scenarios well, one device having
issues may throw off the whole controller, and now you have a bigger mess.&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:3">
<p>the earliest PC motherboard with a gigabit Ethernet connection that I&rsquo;ve personally used was manufactured in 2006.
That&rsquo;s how long gigabit Ethernet has been around for in the consumer space.&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:4">
<p>say that 10 times in a row!&#160;<a href="#fnref:4" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:5">
<p>I know, that usually does not happen on this blog.&#160;<a href="#fnref:5" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:6">
<p>being <a href="/posts/2025/02/17/influencer/">a prolific open source influencer</a> does not bring in as much money as you&rsquo;d
think, so I haven&rsquo;t bought a proper capture device yet.&#160;<a href="#fnref:6" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:7">
<p>no, but seriously, I cannot be the only one who has a strange affection towards SBC-s with their bare PCB-s.
I can&rsquo;t tell a capacitor from a resistor, but the boards are just so damn cool, right?&#160;<a href="#fnref:7" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded></item><item><title>Testing two 18 TB white label SATA hard drives from datablocks.dev</title><link>https://ounapuu.ee/posts/2025/10/06/datablocks-white-label-drives/</link><pubDate>Mon, 06 Oct 2025 06:00:00 +0300</pubDate><author>ihavesomethoughtsonyourblog@ounapuu.ee (Herman Õunapuu)</author><guid>https://ounapuu.ee/posts/2025/10/06/datablocks-white-label-drives/</guid><description>It has been 0 days since the last change to my home server.</description><content:encoded><![CDATA[<img src="https://ounapuu.ee/posts/2025/10/06/datablocks-white-label-drives/media/cover_hu_62398be5795c9b74.jpg" width="1200" height="630" alt="Testing two 18 TB white label SATA hard drives from datablocks.dev" /><p>This post is <em><strong>NOT</strong></em> sponsored, the products were bought with my hard-earned money.</p>
<p>I&rsquo;ve been running a full SSD storage setup for a few years in my home server and I&rsquo;ve been happy with it, except for the
storage anxiety that I get with running small pools of fast storage, which is why I started looking at how the hard
drive market is doing.</p>
<p>Half of tech YouTube has been sponsored by companies like ServerPartDeals, so they were one of the first
places I looked at, but they seem to only operate within the US and the shipping+taxes destroy any price advantages from
ordering there to Estonia (which is in Europe).</p>
<p>At some point I stumbled upon <a href="https://datablocks.dev/">datablocks.dev</a>, which seems to operate within a similar niche,
but in Europe and on a much smaller scale. What caught my eye were their white label hard drive offerings. Their website
has a good explanation on
the <a href="https://datablocks.dev/blogs/news/white-label-vs-recertified-drives">differences between recertified and white label hard drives.</a>
In short: white label drives have no branding, have no or very low number of power-on hours, may have small scratches or
dents, but are in all other aspects completely functional and usable.</p>
<p>White label drives also have a price advantage compared to branded recertified drives. Here&rsquo;s one example with 18 TB
drives, the recertified one is 16.7% more expensive compared to the white label one, and the only obvious difference
seems to be the sticker on the drive. I highly suspect that the white label one is also manufactured by Seagate based on
the physical similarities.</p>









<figure class="center">
  <a href="/posts/2025/10/06/datablocks-white-label-drives/media/pricing.png">
    <img src="/posts/2025/10/06/datablocks-white-label-drives/media/pricing_hu_557f72882995374.webp"
     width="711"
     height="673"
     loading="lazy"
     decoding="async"
     alt="The price difference between a recertified and a white label drive.">

  </a>
  <figcaption class="center">The price difference between a recertified and a white label drive.</figcaption>
</figure>

<p>I took some time to think things over and compared the pricing of various drives. The drives were all competitively
priced between each other, with the price per terabyte hovering around 13 EUR/TB, so it didn&rsquo;t matter much which drive
size you picked, you&rsquo;d still get a pretty solid deal. It was also a better deal compared to using an WD Elements/My Book
drive of the same size.</p>
<p>I decided to go with two 18 TB hard drives. I considered buying the 20 TB or 22 TB capacities, but decided to go with 18
TB because it&rsquo;s the largest single hard drive that I can easily and quickly buy a replacement for in the form of a WD
Elements/My Book drive.</p>
<p>The stock on <code>datablocks.dev</code> is quite volatile, the drives are in stock when new batches arrive, but they can also
quickly go out of stock. I saw this live with the 22 TB hard drives, one day there are 35 left, the next day there can
be 7 left, and then only one lone drive.</p>
<p>At the time of writing, the 18 TB model that I bought is out of stock, so my choice to go with a slightly smaller but
more easily replaceable one is validated.</p>
<p>For those that have followed my blog for a while will know that I&rsquo;m a huge fan of all-SSD server
builds, <a href="https://www.jeffgeerling.com/blog/2024/radxas-sata-hat-makes-compact-pi-5-nas">especially this one by Jeff Geerling that I still consider building from time to time.</a>
If I dislike noise, higher power usage and slower performance, then why did I get the hard drives? It&rsquo;s simple, really:
I now have an actual closet that I can stash my home server in, meaning that noise isn&rsquo;t that big of a worry, and as
long as my home server takes about the same amount of power as my refrigerator or dishwasher, then that&rsquo;s fine.
SSD prices still haven&rsquo;t gone down as much as I&rsquo;ve hoped over the years, so the all-SSD build ideas that I have are way
outside my budget.</p>
<p>The drives arrived in a reasonable time window. The packaging was adequate, although I was slightly concerned with the
cardboard box showing signs of something hitting it hard. The drives were packaged within sealed antistatic bags, and
with ample bubble wrap surrounding them.</p>









<figure class="center">
  <a href="/posts/2025/10/06/datablocks-white-label-drives/media/packaging-1.jpg">
    <img src="/posts/2025/10/06/datablocks-white-label-drives/media/packaging-1_hu_a9dba89172bc3c4.webp"
     width="751"
     height="1000"
     loading="lazy"
     decoding="async"
     alt="The cardboard box with a slight dent.">

  </a>
  <figcaption class="center">The cardboard box with a slight dent.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/10/06/datablocks-white-label-drives/media/packaging-2.jpg">
    <img src="/posts/2025/10/06/datablocks-white-label-drives/media/packaging-2_hu_7dbb3525f71376b8.webp"
     width="1000"
     height="751"
     loading="lazy"
     decoding="async"
     alt="Plenty of paper inside to prevent the drives from flying around.">

  </a>
  <figcaption class="center">Plenty of paper inside to prevent the drives from flying around.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/10/06/datablocks-white-label-drives/media/packaging-3.jpg">
    <img src="/posts/2025/10/06/datablocks-white-label-drives/media/packaging-3_hu_391e44195be9b89b.webp"
     width="1000"
     height="751"
     loading="lazy"
     decoding="async"
     alt="Drives were wrapped in bubble wrap, with the drives themselves also separated with a few layers of it for maximum
protection.">

  </a>
  <figcaption class="center">Drives were wrapped in bubble wrap, with the drives themselves also separated with a few layers of it for maximum
protection.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/10/06/datablocks-white-label-drives/media/packaging-4.jpg">
    <img src="/posts/2025/10/06/datablocks-white-label-drives/media/packaging-4_hu_2f0b8482d4f6a778.webp"
     width="1000"
     height="751"
     loading="lazy"
     decoding="async"
     alt="Drives in anti-static bags.">

  </a>
  <figcaption class="center">Drives in anti-static bags.</figcaption>
</figure>

<p>Just as described, the drives did have slight scratches and very minor dents in them, but in all other aspects they
looked like new.</p>









<figure class="center">
  <a href="/posts/2025/10/06/datablocks-white-label-drives/media/drive-0.jpg">
    <img src="/posts/2025/10/06/datablocks-white-label-drives/media/drive-0_hu_d83039e15059e17b.webp"
     width="751"
     height="1000"
     loading="lazy"
     decoding="async"
     alt="One of the hard drives. It does have slight dents and scratches, matching the description.">

  </a>
  <figcaption class="center">One of the hard drives. It does have slight dents and scratches, matching the description.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/10/06/datablocks-white-label-drives/media/drive-1.jpg">
    <img src="/posts/2025/10/06/datablocks-white-label-drives/media/drive-1_hu_ae9c6c9ec935f236.webp"
     width="751"
     height="1000"
     loading="lazy"
     decoding="async"
     alt="The second drive had a more noticeable bump in it.">

  </a>
  <figcaption class="center">The second drive had a more noticeable bump in it.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/10/06/datablocks-white-label-drives/media/drive-backside.jpg">
    <img src="/posts/2025/10/06/datablocks-white-label-drives/media/drive-backside_hu_31c6dbfeabd631da.webp"
     width="1000"
     height="751"
     loading="lazy"
     decoding="async"
     alt="The backside of the drives.">

  </a>
  <figcaption class="center">The backside of the drives.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/10/06/datablocks-white-label-drives/media/drive-wd-adapter.jpg">
    <img src="/posts/2025/10/06/datablocks-white-label-drives/media/drive-wd-adapter_hu_12335c95ee248c0e.webp"
     width="1000"
     height="751"
     loading="lazy"
     decoding="async"
     alt="Those USB-SATA adapters from shucking are really darn handy now. Adapter courtesy of my brother-in-law.">

  </a>
  <figcaption class="center">Those USB-SATA adapters from shucking are really darn handy now. Adapter courtesy of my brother-in-law.</figcaption>
</figure>

<p>Before putting them to use, I formatted the drives using <code>badblocks</code>. It took a full 24 hours to do a full drive write.
The write performance peaked at 275 MB/s and slowed down to 123 MB/s at the end, which is expected.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup></p>









<figure class="center">
  <a href="/posts/2025/10/06/datablocks-white-label-drives/media/performance.png">
    <img src="/posts/2025/10/06/datablocks-white-label-drives/media/performance_hu_9faa269c4173536c.webp"
     width="1000"
     height="300"
     loading="lazy"
     decoding="async"
     alt="The performance of the drive during the full drive format.">

  </a>
  <figcaption class="center">The performance of the drive during the full drive format.</figcaption>
</figure>

<p>I also had to choose a larger block size for <code>badblocks</code> because otherwise it could not handle the drive, resulting in
the command
being <code>badblocks -wsv -b 8192 /dev/sdX</code>.</p>









<figure class="center">
  <a href="/posts/2025/10/06/datablocks-white-label-drives/media/peak-performance.jpg">
    <img src="/posts/2025/10/06/datablocks-white-label-drives/media/peak-performance_hu_ce21ef2456c6c9b3.webp"
     width="1000"
     height="751"
     loading="lazy"
     decoding="async"
     alt="This is what peak jank looks like.">

  </a>
  <figcaption class="center">This is what peak jank looks like.</figcaption>
</figure>

<p>I unfortunately did not save the SMART data from the time I received the drives, but the contents were as expected,
there were no more than a few power on hours and other metrics were OK. Keep in mind that it&rsquo;s also possible to reset
SMART data on a drive so this information cannot be taken at face value.</p>
<p>The drives are noisy, as expected. They run at 7200 RPM and do the usual clicks and clacks that a normal hard drive
does. If this bothers you, <a href="/posts/2021/04/02/tech-tip-1/">use foam to fix it.</a> The soft side of a sponge can work
just as well.</p>
<p>With these drives <a href="/posts/2023/03/26/tiered-storage/">I&rsquo;ve now followed my own advice</a> and tiered my storage: two 1 TB
SSD-s for the things that benefit from good speed and latency (databases, containers), and 18 TB hard drives for
bulk storage, backups and less frequently used data. Coming from an all-SSD build, I expected the performance to drop in
day-to-day operations, but in most cases I cannot tell a difference. My family photos load just fine, media plays back
well, and backups take slightly longer, which isn&rsquo;t noticeable due to them running during the night. Only when I look at
the Prometheus node exporter graphs do I notice that sometimes the server is waiting behind the disks a bit more due to
higher <code>iowait</code>.</p>









<figure class="center">
  <a href="/posts/2025/10/06/datablocks-white-label-drives/media/iowait.png">
    <img src="/posts/2025/10/06/datablocks-white-label-drives/media/iowait_hu_62d2f4a247e6e5b1.webp"
     width="1000"
     height="452"
     loading="lazy"
     decoding="async"
     alt="During full backups or disk scrubs, the iowait is more prevalent on graphs (the red part), but that doesn&#39;t seem to
impact my other workloads in a significant way.">

  </a>
  <figcaption class="center">During full backups or disk scrubs, the iowait is more prevalent on graphs (the red part), but that doesn&#39;t seem to
impact my other workloads in a significant way.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/10/06/datablocks-white-label-drives/media/drives-in-use-0.jpg">
    <img src="/posts/2025/10/06/datablocks-white-label-drives/media/drives-in-use-0_hu_734ffb597eff0fec.webp"
     width="1000"
     height="751"
     loading="lazy"
     decoding="async"
     alt="The drives are connected via two WD Elements/My Book USB-SATA adapters, over USB 3.0, and stored right below my ThinkPad
T430, which is proudly running as my home server.">

  </a>
  <figcaption class="center">The drives are connected via two WD Elements/My Book USB-SATA adapters, over USB 3.0, and stored right below my ThinkPad
T430, which is proudly running as my home server.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/10/06/datablocks-white-label-drives/media/drives-in-use-1.jpg">
    <img src="/posts/2025/10/06/datablocks-white-label-drives/media/drives-in-use-1_hu_ed0078e342cbd321.webp"
     width="751"
     height="1000"
     loading="lazy"
     decoding="async"
     alt="I added glue-on rubber feet on the stand to make sure the drives do not accidentally slip off anywhere. It does nothing
to reduce the noise, though, and I&#39;m convinced that it&#39;s actually making the noise worse.">

  </a>
  <figcaption class="center">I added glue-on rubber feet on the stand to make sure the drives do not accidentally slip off anywhere. It does nothing
to reduce the noise, though, and I&#39;m convinced that it&#39;s actually making the noise worse.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/10/06/datablocks-white-label-drives/media/home-server.jpg">
    <img src="/posts/2025/10/06/datablocks-white-label-drives/media/home-server_hu_116154110711149.webp"
     width="1000"
     height="751"
     loading="lazy"
     decoding="async"
     alt="I&#39;m not proud of the lack of cable management, but this setup works well. Given how often I get new ideas, it doesn&#39;t
make sense to organize this too much anyway.">

  </a>
  <figcaption class="center">I&#39;m not proud of the lack of cable management, but this setup works well. Given how often I get new ideas, it doesn&#39;t
make sense to organize this too much anyway.</figcaption>
</figure>

<p>The power usage did shoot up as a result, roughly 10-20 W. Not ideal, but my whole networking and home server setup is
idling at below 45 W, and I&rsquo;ve
had <a href="/posts/2021/03/17/server-setups-throughout-the-years/">less efficient home servers in the past,</a> so it&rsquo;s not that
big of a deal.</p>









<figure class="center">
  <a href="/posts/2025/10/06/datablocks-white-label-drives/media/setup-power-usage.png">
    <img src="/posts/2025/10/06/datablocks-white-label-drives/media/setup-power-usage_hu_39a1f182a81cdbb4.webp"
     width="1000"
     height="601"
     loading="lazy"
     decoding="async"
     alt="The power usage was elevated while I was formatting and copying files over to the new drives, but after that it&#39;s
stabilized to around 1.2 kWh per day.">

  </a>
  <figcaption class="center">The power usage was elevated while I was formatting and copying files over to the new drives, but after that it&#39;s
stabilized to around 1.2 kWh per day.</figcaption>
</figure>

<p>In this configuration, the drives run quite cool. During formatting on a hot day, I saw them go up to a maximum of 51°C,
but in general use they sit at around 38-42°C.</p>
<p>Overall, I&rsquo;m reasonably happy with the drives. I expect these to last me at least 5 years, and I&rsquo;m probably going to
switch one of the drives out a bit sooner to reduce the risk of a full drive pool failure. They&rsquo;ve made it the first 50
days, so that&rsquo;s good!</p>
<p>Oh, and here&rsquo;s the <code>smartctl -ax</code> output for the disks after running them for about two months:</p>
<ul>
<li><a href="/posts/2025/10/06/datablocks-white-label-drives/media/disk1.txt">disk 1</a></li>
<li><a href="/posts/2025/10/06/datablocks-white-label-drives/media/disk2.txt">disk 2</a></li>
</ul>
<h2 id="2026-02-13-update">
  <a class="heading-anchor" href="#2026-02-13-update">2026-02-13 update<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>6 months later, and my drives are still doing well. <code>smartctl -ax</code> output:</p>
<ul>
<li><a href="/posts/2025/10/06/datablocks-white-label-drives/media/disk1-2026-02-13.txt">disk 1</a></li>
<li><a href="/posts/2025/10/06/datablocks-white-label-drives/media/disk2-2026-02-13.txt">disk 2</a></li>
</ul>
<p>In the meantime, what <em>did</em> die on me was a Seagate Portable 4TB drive that I used mainly for backups. :)</p>
<p>A Latvian blogger that I follow also had a pleasant experience with datablocks.dev,
and <a href="https://blog.kronis.dev/blog/buying-some-drives-from-datablocks">they wrote about it here.</a></p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>hard drives are expected to be slower at the end of the drive because of their design, the platter rotates at 7200
RPM
but the end of the drive is located at the inner tracks of the platter, near the center of the spindle, which results in
a slower effective speed. Math is cool!&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded></item><item><title>Those cheap AliExpress 18650 Li-ion cell power bank enclosures suck, actually</title><link>https://ounapuu.ee/posts/2025/08/18/cheap-power-banks-suck/</link><pubDate>Mon, 18 Aug 2025 06:00:00 +0300</pubDate><author>ihavesomethoughtsonyourblog@ounapuu.ee (Herman Õunapuu)</author><guid>https://ounapuu.ee/posts/2025/08/18/cheap-power-banks-suck/</guid><description>I tried out three different 18650 Li-ion battery bank enclosures that I ordered for very cheap and ended up throwing them all out, here's why.</description><content:encoded><![CDATA[<img src="https://ounapuu.ee/posts/2025/08/18/cheap-power-banks-suck/media/cover_hu_4d01c38f2acd893b.jpg" width="1200" height="630" alt="Those cheap AliExpress 18650 Li-ion cell power bank enclosures suck, actually" /><p>I had a few old ThinkPad batteries lying around. They were big, bulky and not holding much of a charge. Inside those
were standard 18650 Li-ion battery cells.</p>
<p>I have two <a href="/posts/2023/03/03/tomo-m4-powerbank/">TOMO M4 power banks</a> around, and they are fantastic for reusing these
old 18650 battery cells inside them. You can even mix and match cells without a worry because they are individually
addressed, meaning that any issues with battery charge levels and voltages differing between cells are not a concern.
Unfortunately the TOMO M4 lacks modern features, such as USB-C ports and USB-C PD outputs at higher voltages and
currents, which makes it less useful and convenient in 2025. I haven&rsquo;t found any newer designs from them as well that
are just as cool.</p>
<p>I still wanted to reuse those 18650 cells, so I went to AliExpress and bought some 18650 battery enclosures for testing.
One holds 8 cells, another one 10 cells, and the largest one could fit 20 cells inside it.</p>









<figure class="center">
  <a href="/posts/2025/08/18/cheap-power-banks-suck/media/back-0.jpg">
    <img src="/posts/2025/08/18/cheap-power-banks-suck/media/back-0_hu_2785a58d97b51729.webp"
     width="751"
     height="1000"
     loading="lazy"
     decoding="async"
     alt="The backside of the first power bank enclosure.">

  </a>
  <figcaption class="center">The backside of the first power bank enclosure.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/08/18/cheap-power-banks-suck/media/back-1.jpg">
    <img src="/posts/2025/08/18/cheap-power-banks-suck/media/back-1_hu_c51ce1e0f817288c.webp"
     width="751"
     height="1000"
     loading="lazy"
     decoding="async"
     alt="The backside of the other one.">

  </a>
  <figcaption class="center">The backside of the other one.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/08/18/cheap-power-banks-suck/media/ports.jpg">
    <img src="/posts/2025/08/18/cheap-power-banks-suck/media/ports_hu_258cf69aa09b3406.webp"
     width="980"
     height="1000"
     loading="lazy"
     decoding="async"
     alt="The port selection. USB-C works as both an input and output port.">

  </a>
  <figcaption class="center">The port selection. USB-C works as both an input and output port.</figcaption>
</figure>

<p>Unfortunately, they all suck and are likely a huge fire hazard in the wrong hands.</p>
<p>For the 8-cell variant, I used newly bought 18650 Li-ion cells that were charged up to the same level. This battery
enclosure worked quite well, until it didn&rsquo;t. For whatever reason, the enclosure could not charge itself and other
devices at the same time.</p>
<p>With the 10-cell variant, I used two different batches of used 18650 Li-ion cells from old ThinkPad batteries, charging
them up first. That one worked fine, until it also failed in weird ways. It got quite hot during charging/discharging
cycles, and eventually the segment display that&rsquo;s responsible for displaying the charge level stopped showing certain
segments. At that point I lost trust in that enclosure, too.</p>
<p>I had the most fun with the 20-cell battery enclosure. My first fuck-up involved using two old battery cells with
different charge levels, which resulted in some magic smoke coming out of the PCB of the enclosure itself. Somehow that
didn&rsquo;t break the battery bank enclosure, so I crammed 20 charged up used and mixed 18650 Li-ion cells in it and started
charging and discharging it. The batteries got quite hot, likely around 50-70°C based on the temperature readings of my
hand.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> At that point I realized I was playing with fire and stopped.</p>
<p>The USB-C PD behaviour was different on all power banks. Some were fine with powering a ThinkPad laptop with the
appropriate cable, some were flaky with setting the power levels, and some were just useless with certain cable or
device combinations.</p>
<p>The battery banks rely on a very simple arrangement: the 18650 Li-ion cells are connected in parallel, and
the resulting 3.7-4.2V is then boosted up for the appropriate voltage on the control board. This carries risks: if you
insert two or more Li-ion cells with different voltages, then one will start charging the others to bring the cells to
the same voltage, and that can become uncontrolled and result in a cell overheating and/or exploding. It&rsquo;s also a
horrible idea to mix and match used cells of different capacities and wear levels as they will charge and discharge at
different rates.</p>
<p>In my experience, a cheap DIY power bank enclosure also carries the risk of attracting attention at an airport security
check. After learning how bad these can be, that is an entirely justified suspicion.</p>
<p>I ended up throwing all the battery bank enclosures out, the hardware failures and issues made me too concerned about
one of these starting a fire. I like controlled fires, but the uncontrolled ones are really not my cup of tea.</p>
<p>If you know of a 18650 Li-ion cell battery bank enclosure that works like the TOMO M4 but has modern features (USB-C
port, USB-PD, can charge laptops etc.) then please do reach out to me as I&rsquo;d love to test one out. You can find the
contact details below the post.</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>50-55°C feels very hot to the touch, so it&rsquo;s a good rule of thumb (no pun intended) for determining the minimum
temperature of a hot surface by hand. Disclaimer: not physics advice.&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded></item><item><title>Fairphone Fairbuds XL review: admirable goals, awful product</title><link>https://ounapuu.ee/posts/2025/03/17/fairbuds-xl-review/</link><pubDate>Mon, 17 Mar 2025 06:00:00 +0200</pubDate><author>ihavesomethoughtsonyourblog@ounapuu.ee (Herman Õunapuu)</author><guid>https://ounapuu.ee/posts/2025/03/17/fairbuds-xl-review/</guid><description>I gave the Fairphone Fairbuds XL a go to see how well they stack up in real life. Unfortunately, not that well.</description><content:encoded><![CDATA[<img src="https://ounapuu.ee/posts/2025/03/17/fairbuds-xl-review/media/cover_hu_c71edcb6616a7280.jpg" width="1200" height="630" alt="Fairphone Fairbuds XL review: admirable goals, awful product" /><p>I bought the <a href="https://shop.fairphone.com/fairbuds-xl">Fairphone Fairbuds XL</a> with my own money at a recent sale for
186.75 EUR, plus 15 EUR for shipping to Estonia. The normal price for these headphones is 239 EUR.</p>
<p>This post is <em><strong>not</strong></em> sponsored.</p>
<p>I admire what Fairphone wants to achieve, even going as far
as <a href="/posts/2024/03/06/fairphone5/">getting the Fairphone 5 as a replacement for my iPhone X.</a></p>
<p>Failing to repair my current headphones, I went ahead and decided to get the Fairphone Fairbuds XL as they also
advertise the active noise-cancelling feature, and I like the Fairphone brand.</p>
<p><strong>Disclaimer:</strong> this review is going to be entirely subjective and based on my opinions and experiences with other audio
products in the past. I also have tinnitus.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup></p>
<p>I consulted <a href="https://www.rtings.com/headphones/reviews/fairphone/fairbuds-xl-wireless">rtings.com review</a> before
purchasing the product to get an idea about what to expect as a consumer.</p>









<figure class="center">
  <a href="/posts/2025/03/17/fairbuds-xl-review/media/headphones-folded.jpg">
    <img src="/posts/2025/03/17/fairbuds-xl-review/media/headphones-folded_hu_ed2fbb45ec3e7f37.webp"
     width="1000"
     height="750"
     loading="lazy"
     decoding="async"
     alt="Fairphone Fairbuds XL, folded">

  </a>
  <figcaption class="center">Fairphone Fairbuds XL, folded</figcaption>
</figure>

<h2 id="the-comparison-headphones">
  <a class="heading-anchor" href="#the-comparison-headphones">The comparison headphones<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 main point of comparison for this review is going to be
the <a href="https://www.sony.ee/electronics/headband-headphones/wh-1000xm3">Sony WH-1000XM3,</a> which are premium high-end
wireless Bluetooth headphones, with active noise-cancelling (before that feature broke). These headphones retailed at
a higher price during 2020 (about 300-400 EUR) so they are technically a tier above the Fairbuds XL, but given that its
successsor, the
WH-1000XM4, <a href="https://arvutitark.ee/arvutid-ja-lisad/heliseadmed/korvaklapid/wh-1000xm4-black-noise-canceling-1040441">can be bought for 239 EUR new</a>
(and often about 200-ish EUR on sale!), then it is a fair comparison in my view.</p>
<p>After I replaced the ear cushions on my Sony WH-1000XM3 headset, the active noise-cancelling feature started being flaky
(popping and loud noises occurring with NC on). No amount of cleaning or calibrating fixed it, and even the authorized
repair shop could not do anything about it. I
diagnosed the issue to be with the internal noise-cancelling microphones and found that these failing is a very common
issue for these headsets, even for newer versions of it.</p>
<p>I am unable to compare the active noise-cancelling performance side-by-side, but I can say that the NC performance on
the Sony
WH-1000XM3 was simply excellent when it <em>did</em> work, no doubt about it.</p>
<h2 id="the-fairphone-shop-experience">
  <a class="heading-anchor" href="#the-fairphone-shop-experience">The Fairphone shop 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 first issue I had with the product was actually buying it. For some reason, the form would not accept my legal name
which has letter &ldquo;Õ&rdquo; in it, a common vowel in Estonia. Knowing how poorly Javascript-based client-side validation can be
built, I pulled a <em>pro gamer move</em> and copy-pasted my name into the form, which bypassed the faulty check
altogether.</p>
<p>Similar issue occurred with the address field, as we also have the letter &ldquo;Ä&rdquo; ( and &ldquo;Ö&rdquo;, &ldquo;Ü&rdquo;, for that matter).</p>
<h2 id="the-name">
  <a class="heading-anchor" href="#the-name">The name<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 can understand why Fairphone went with the name &ldquo;Fairbuds XL&rdquo;, it kind of made sense
in <a href="https://shop.fairphone.com/audio">their audio product line,</a>
and <a href="https://www.apple.com/airpods-max/">Apple set a precedent with AirPods Max.</a></p>
<p>However, there is such a big missed opportunity here: they could&rsquo;ve called the product&hellip;</p>
<p><strong><em>Fairphones.</em></strong></p>
<p>Yes, it would cause <em>some</em> confusion
about <a href="https://shop.fairphone.com/smartphones">their other product line, which is the Fairphone</a>, but at least I would
find the name more amusing.</p>
<h2 id="packaging">
  <a class="heading-anchor" href="#packaging">Packaging<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 packaging for the headphones is quite similar to what you&rsquo;d get with the Fairphone 5: lots of cardboard and
seemingly no plastic or otherwise problematic materials.</p>









<figure class="center">
  <a href="/posts/2025/03/17/fairbuds-xl-review/media/packaging-0.jpg">
    <img src="/posts/2025/03/17/fairbuds-xl-review/media/packaging-0_hu_ec27a30119dff310.webp"
     width="750"
     height="1000"
     loading="lazy"
     decoding="async"
     alt="The packaging.">

  </a>
  <figcaption class="center">The packaging.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/03/17/fairbuds-xl-review/media/packaging-1.jpg">
    <img src="/posts/2025/03/17/fairbuds-xl-review/media/packaging-1_hu_3c77298d678e7ded.webp"
     width="750"
     height="1000"
     loading="lazy"
     decoding="async"
     alt="Change is on your head, perhaps?">

  </a>
  <figcaption class="center">Change is on your head, perhaps?</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/03/17/fairbuds-xl-review/media/packaging-2.jpg">
    <img src="/posts/2025/03/17/fairbuds-xl-review/media/packaging-2_hu_31db8665e1e66e1f.webp"
     width="750"
     height="1000"
     loading="lazy"
     decoding="async"
     alt="The headphones rest securely in the cardboard box.">

  </a>
  <figcaption class="center">The headphones rest securely in the cardboard box.</figcaption>
</figure>

<p>Aside from the headphones themselves, you also get <a href="https://youtu.be/yVrVTsXhC1A">a nice egg bag,</a> meant to protect your
headphones when travelling with them.</p>









<figure class="center">
  <a href="/posts/2025/03/17/fairbuds-xl-review/media/egg-bag.jpg">
    <img src="/posts/2025/03/17/fairbuds-xl-review/media/egg-bag_hu_2b28735f92d9a5a1.webp"
     width="1000"
     height="750"
     loading="lazy"
     decoding="async"
     alt="Egg bag.">

  </a>
  <figcaption class="center">Egg bag.</figcaption>
</figure>

<p>It&rsquo;s okay, but nothing special, and it won&rsquo;t protect your headphones from physical damage should they fall or get
thrown around in a backpack. The Sony headphones come with a solid hardcase, which have done a fantastic job of
protecting the headphones over the last 4 years. Longevity of a device depends both on repairability and durability,
which is why a hard case would benefit the Fairbuds XL a lot.</p>
<h2 id="factory-defect">
  <a class="heading-anchor" href="#factory-defect">Factory defect<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>My experience with the Fairbuds XL were off to a rocky start.</p>
<p>I noticed that the USB-C cable that connects both sides of the headphones was inserted incorrectly. The headphones
worked fine, but you could feel the flat USB-C cable being twisted inside the headband. The fix to this was to carefully
push the headband back, disconnect the USB-C cable from the headphones, flip the cable around and reconnect it.</p>









<figure class="center">
  <a href="/posts/2025/03/17/fairbuds-xl-review/media/defect.jpg">
    <img src="/posts/2025/03/17/fairbuds-xl-review/media/defect_hu_f04ca5ae1612461a.webp"
     width="750"
     height="1000"
     loading="lazy"
     decoding="async"
     alt="The USB-C cable being twisted inside the headphones.">

  </a>
  <figcaption class="center">The USB-C cable being twisted inside the headphones.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/03/17/fairbuds-xl-review/media/fixing-defect.jpg">
    <img src="/posts/2025/03/17/fairbuds-xl-review/media/fixing-defect_hu_6804b792abf7b278.webp"
     width="750"
     height="1000"
     loading="lazy"
     decoding="async"
     alt="At least the repairability aspect came in handy.">

  </a>
  <figcaption class="center">At least the repairability aspect came in handy.</figcaption>
</figure>

<p>Not a good first impression, but at least the fix was simple enough.</p>
<h2 id="fit-and-feel">
  <a class="heading-anchor" href="#fit-and-feel">Fit and feel<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 Fairbuds XL are not as comfortable as the reference headphones. The ear cushions and headrest are quite hard and not
as soft as on the Sony WH-1000XM3. If you get the fit just right, then you probably won&rsquo;t have issues with wearing these
for a few hours at the time, but I found myself adjusting these often to stop them from hurting my ears and head even
during a short test.</p>
<p>The ear cups lack any kind of swiveling, which is likely contributing to the comparatively poor fit. Our ears are angled
ever-so-slightly forwards, and the Sony WH-1000XM3 feels so much better on the ears as a result of its swiveling aspect.</p>
<p>I also noticed that you can hear some components inside the headphones rattling when moving your head. This noise is
very noticeable even during music playback and you don&rsquo;t need to move your head a lot to hear that rattling. In my view,
<strong>this is a serious defect in the product.</strong></p>
<p>When the headphones are folded in, the USB-C cable gets bent in the process and gets forced against one of the ear
cushions. I suspect that within months or years of use, either the cable will fail or the ear cushion gets a permanent
imprint of the USB-C cable position.</p>









<figure class="center">
  <a href="/posts/2025/03/17/fairbuds-xl-review/media/possible-design-flaw.jpg">
    <img src="/posts/2025/03/17/fairbuds-xl-review/media/possible-design-flaw_hu_b4abcd7b1cc98861.webp"
     width="750"
     height="1000"
     loading="lazy"
     decoding="async"
     alt="I&#39;m not sure the designers intended for this to happen.">

  </a>
  <figcaption class="center">I&#39;m not sure the designers intended for this to happen.</figcaption>
</figure>

<h2 id="the-sound">
  <a class="heading-anchor" href="#the-sound">The sound<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;m not impressed with the sound that the Fairbuds XL produce. They are not in the same class as the Sony WH-1000XM3,
with the default equalizer sounding incredibly bland. Most instruments and sounds are bland and not as clear. That&rsquo;s the
best I can describe it as.</p>









<figure class="center">
  <a href="/posts/2025/03/17/fairbuds-xl-review/media/marketing.png">
    <img src="/posts/2025/03/17/fairbuds-xl-review/media/marketing_hu_f9112dc39a9e6d93.webp"
     width="535"
     height="206"
     loading="lazy"
     decoding="async"
     alt="Premium sound? Not so sure about that.">

  </a>
  <figcaption class="center">Premium sound? Not so sure about that.</figcaption>
</figure>

<p><a href="https://play.google.com/store/apps/details?id=com.fairphone.android.fairbudsapp&amp;hl=en">The Fairbuds app</a> can be used to
tune the sound via the equalizer, and out of all the presets I&rsquo;ve found &ldquo;Boston&rdquo; to be the most pleasant one to use.
Unfortunately the UI does not show how the presets customize the values in the equalizer, which makes tweaking a preset
all that much harder.</p>
<p>Compared to the Sony WH-1000XM3, I miss the cripsy sound and the all-encompassing bass, it can really bring all the
satisfying details out. Given that I had used the Sony headphones for almost 5 years at this point may also just mean
that I had gotten used to how it sounds.</p>
<h2 id="active-noise-cancelling">
  <a class="heading-anchor" href="#active-noise-cancelling">Active noise-cancelling<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 active noise-cancelling performance is nowhere near the Sony WH-1000XM3-s. The effect is very minor, and you&rsquo;ll be
hearing  most of the surrounding sounds.</p>
<p>Touching the active noise-cancelling microphones on the sides of the headphones will also make a loud sound inside the
speaker,
and walking around in a room will result in the headphones making wind noises. Because of this, <strong>I consider the
active noise-cancelling functionality to be functionally broken.</strong></p>
<h2 id="microphone-quality">
  <a class="heading-anchor" href="#microphone-quality">Microphone quality<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 used the Fairbuds XL in a work call, and based on feedback from other attendees, the microphone quality over Bluetooth
can be categorized as barely passable, getting a solid 2 points out of 5.</p>
<p>To be fair, Bluetooth microphone quality is also not great on the Sony WH-1000XM3-s, but compared to the Fairphone
Fairbuds XL, they are still subjectively better.</p>
<h2 id="fairbuds-app">
  <a class="heading-anchor" href="#fairbuds-app">Fairbuds app<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 Fairbuds app is very simple, and you&rsquo;d mainly want to use it for setting the equalizer settings and upgrading the
firmware. The rest of the functionality seems to be a bunch of links to Fairphone articles and guides.</p>
<p>The first time I installed the app, it told me that a firmware upgrade version V90 is available. During the first
attempt, the progress bar stopped.</p>









<figure class="center">
  <a href="/posts/2025/03/17/fairbuds-xl-review/media/firmware-upgrade.png">
    <img src="/posts/2025/03/17/fairbuds-xl-review/media/firmware-upgrade_hu_e166c82c2415ff73.webp"
     width="453"
     height="1000"
     loading="lazy"
     decoding="async"
     alt="It got stuck.">

  </a>
  <figcaption class="center">It got stuck.</figcaption>
</figure>

<p>Second attempt: it almost reached the end and did not complain about a firmware upgrade being available after that.</p>
<p>Third attempt came after I had reinstalled the app. And there it was, the version V90 update, again. This time it got
stuck at 1%.</p>
<p>I&rsquo;m probably still on the older version of the firmware, but I honestly can&rsquo;t tell.</p>
<h2 id="bluetooth-multi-device-connecting">
  <a class="heading-anchor" href="#bluetooth-multi-device-connecting">Bluetooth multi-device connecting<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 a feature that I didn&rsquo;t know I needed in my life.</p>
<p>With the reference Sony WH-1000XM3-s, whenever I wanted to switch where I listen to music from, I had to disconnect from
my phone and then reconnect on the desktop, which was an annoying and manual process.</p>
<p>With the Fairbuds XL, I can connect the headphones to both my laptop and phone and play media wherever, the headphones
will switch to whichever device I&rsquo;m actually using! This, too, has its quirks, and there might be a small delay when
playing media on the other device, but I&rsquo;ve grown so accustomed to using this feature now and can&rsquo;t imagine myself going
back to using anything else.</p>
<p>This feature is not unique to the Fairbuds XL as other modern wireless headphones are also likely to boast this feature,
but this is the first time I&rsquo;ve had the opportunity to try this out myself. It&rsquo;s a tremendous quality of life
improvement for me.</p>
<p>However, this, too, is not perfect. If I have the headphones connected to my phone and laptop, and I change to headset
mode on the laptop for a meeting, then the playback on the phone will be butchered until I completely disconnect the
headphones from the laptop. This seems like a firmware issue to me.</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 Fairbuds XL has one button and one joystick. The button controls the active noise-cancelling settings (NC on,
Ambient sound, NC off), plus the Bluetooth pairing mode.</p>
<p>The joystick is used to turn the device on, switch songs and control the volume, and likely some other settings that
relate to accepting calls and the like.</p>
<p>Coming from the Sony WH-1000XM3, I have to say that <em><strong>I absolutely LOVE having physical buttons again!</strong></em> It&rsquo;s so much
easier
to change the volume level, skip songs and start/stop playback with a physical button compared to the asinine touch
surface solution that Sony has going on.</p>
<p>The joystick is not perfect, skipping a song can be a little bit tricky due to how the joystick is positioned, you can&rsquo;t
always get a good handle due to your fingers hitting the rest of the headphone assembly. That&rsquo;s the only concern I have
with it. If the joystick was a little bit concave and larger, then that may make some of these actions easier for those
of us with modest/large thumbs.</p>
<p>The audio cue for skipping songs is a bit annoying and cannot seemingly be disabled. The sound effect resembles someone
hitting a golf ball with a very poor driver.</p>
<p>The ANC settings button is alright, but it&rsquo;s not possible to quickly cycle between the three modes, you will have to
fully listen to the nice lady speaking and then you can move on to the next setting. I wish that clicking the button in
rapid succession would skip through the modes faster.</p>
<h2 id="usb-c-port-functionality">
  <a class="heading-anchor" href="#usb-c-port-functionality">USB-C port functionality<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 was curious to see if the Fairbuds XL worked as normal headphones if I just connected them up to my PC using a USB-C
cable. To my surprise, they did! The audio quality was not as good as with Bluetooth, and the volume controls depended
on which virtual device you select in your operating system. The Sony WH-1000XM3 do not work like this, the USB-C port
is for charging only as far as I&rsquo;ve tested, but it does have an actual 3.5mm port for wired use.</p>
<p>When connected over Bluetooth and you connect a charging cable, the Fairbuds XL will pause momentarily and then continue
playback while charging the battery. This is incredibly handy for a wireless device, especially in situations where you
have an important meeting coming up and you&rsquo;re just about to run out of battery. The Sony WH-1000XM3 will simply
power off when you connect a charger cable, rendering them unusable while charging.</p>
<h2 id="annoying-issues">
  <a class="heading-anchor" href="#annoying-issues">Annoying 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>For some reason, whenever I charge my Fairbuds XL, they magically turn on again and I have to shut them off a second
time.</p>
<p>I&rsquo;m never quite sure if I&rsquo;ve managed to shut the headphones off. It does the jingle that indicates that it&rsquo;s powered
off, but then I come back to it later and I find that they&rsquo;re powered on again.</p>
<h2 id="customer-care-experience">
  <a class="heading-anchor" href="#customer-care-experience">Customer care 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>I was so unhappy with the product that I tried out the refunding process for the Fairphone Fairbuds XL.</p>
<p>I ordered the Fairbuds XL on 2025-02-10 and I received them on 2025-02-14, shipped to Estonia. According
to <a href="https://www.fairphone.com/en/legal/fairphone-returns-policy/">Fairphone&rsquo;s own materials,</a>
I can return the headphones without any questions asked, assuming that my use of them matches what can be done at a
physical store.</p>
<blockquote>
<p>For Fairphone Products, including gift cards, you purchased on the Fairphone Webshop, you have a legal right to change
your mind within 14 days and receive a refund amounting to the purchase price of the products and the costs of
delivery
and return. You are entitled to cancel your purchase within fourteen (14) days from the day the products were
delivered
to you, without explanation and without any penalties.</p>
</blockquote>
<blockquote>
<p>In the case of a Cool-off, Fairphone may reduce the refund of the purchase price (including delivery costs) to reflect
any reduction in the value of the Products, if this has been caused by your handling them in a way which would not
normally be permitted in a shop. This means You are entitled to turn on and inspect Your purchased device to
familiarise
yourself with its properties and ensure that it is working correctly – comparable to the conditions that are permitted
within a shop.</p>
</blockquote>
<p>It took me almost 4 months to receive a refund from Fairphone, and even then it happened through a chargeback that I
initiated through my bank. During those 4 months, I also had to send the device back <em><strong>twice</strong></em> because of a processing
error on Fairphone&rsquo;s part. <a href="/posts/2025/06/17/fairphone-customer-care-experience/">I have detailed the full experience in this post.</a></p>
<p>Based on the experiences by others in the Fairphone community forum, it seems that unacceptably large delays in customer
service are the norm for Fairphone.</p>
<p>Fairphone, if you want to succeed as a company, you need to make sure that the one part of your company that&rsquo;s directly
interfacing with your actual paying customers needs to be appropriately staffed and resourced. A bad customer support
experience can turn off a brand evangelist overnight.</p>
<h2 id="closing-thoughts">
  <a class="heading-anchor" href="#closing-thoughts">Closing thoughts<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 want Fairphone to succeed in their mission, but products like these do not further the cause.</p>
<p>The feature set of the Fairbuds XL seems competent, and I&rsquo;m willing to give a pass on a few minor issues if the overall
experience is good, but the unimpressive sound profile, broken active noise-cancelling mode, multiple quality issues
and poor customer service mean that <strong>I can&rsquo;t in good conscience recommend the Fairphone Fairbuds XL,</strong> not even on
sale.</p>
<p>Perhaps less resources should be spent
on <a href="https://www.fairphone.com/en/2025/01/13/fairphones-next-chapter-starts-now/">rebranding</a> and more on engineering
good products.</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>Remember dubstep being a thing? Yeah, so do I. That, plus a little bit of mandatory military service can do a lot
of damage to hearing.&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded></item><item><title>IODD ST400 review: great idea, good product, terrible firmware</title><link>https://ounapuu.ee/posts/2025/02/14/iodd-st400-review/</link><pubDate>Fri, 14 Feb 2025 06:00:00 +0200</pubDate><author>ihavesomethoughtsonyourblog@ounapuu.ee (Herman Õunapuu)</author><guid>https://ounapuu.ee/posts/2025/02/14/iodd-st400-review/</guid><description>I bought and tested a Ventoy-like device that allows you to boot all sorts of installation media and operating systems, all on one device.</description><content:encoded><![CDATA[<img src="https://ounapuu.ee/posts/2025/02/14/iodd-st400-review/media/cover_hu_1f7948de1c3907ae.jpg" width="1200" height="630" alt="IODD ST400 review: great idea, good product, terrible firmware" /><p>I&rsquo;ve written about <a href="/posts/2024/12/02/linux-on-usb/">abusing USB storage devices</a> in the past, with a passing mention
that I&rsquo;m too cheap to buy an <a href="https://www.iodd.shop/Home">IODD device.</a></p>
<p>Then I bought one.</p>
<p>I&rsquo;ve always liked the promise of tools like <a href="https://www.ventoy.net/en/index.html">Ventoy</a>: you only need to carry the
one storage device that boots anything you want.
Unfortunately <a href="https://github.com/ventoy/Ventoy/issues/2795">I still can&rsquo;t trust Ventoy,</a> so I&rsquo;m forced to look
elsewhere.</p>
<h2 id="the-hardware">
  <a class="heading-anchor" href="#the-hardware">The hardware<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 decided to get the <a href="https://www.iodd.shop/IODD-ST400-USB-30-External-Encrypted-Hard-Drive-Enclosure">IODD ST400</a> for
122 EUR (about 124 USD) off of Amazon Germany, since it was for some reason cheaper than getting it
from <a href="https://www.iodd.shop/">iodd.shop</a> directly.
SATA SSD-s are cheap and plentiful, so the ST400 made the most sense to me.</p>









<figure class="center">
  <a href="/posts/2025/02/14/iodd-st400-review/media/packaging-0.jpg">
    <img src="/posts/2025/02/14/iodd-st400-review/media/packaging-0_hu_a38c5ef0e565aef5.webp"
     width="750"
     height="1000"
     loading="lazy"
     decoding="async"
     alt="The packaging of the IODD ST400.">

  </a>
  <figcaption class="center">The packaging of the IODD ST400.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/02/14/iodd-st400-review/media/packaging-1.jpg">
    <img src="/posts/2025/02/14/iodd-st400-review/media/packaging-1_hu_94aa2fba8b589ddd.webp"
     width="750"
     height="1000"
     loading="lazy"
     decoding="async"
     alt="Find the typo.">

  </a>
  <figcaption class="center">Find the typo.</figcaption>
</figure>

<p>The device came with one USB cable, with type A and type C ends. The device itself has a USB type C port, which I like a
lot.</p>









<figure class="center">
  <a href="/posts/2025/02/14/iodd-st400-review/media/packaging-2.jpg">
    <img src="/posts/2025/02/14/iodd-st400-review/media/packaging-2_hu_844bc0af40879544.webp"
     width="750"
     height="1000"
     loading="lazy"
     decoding="async"
     alt="Also comes with a small pouch to avoid scratching the device.">

  </a>
  <figcaption class="center">Also comes with a small pouch to avoid scratching the device.</figcaption>
</figure>

<p>The buttons are functional and clicky, but incredibly loud.</p>









<figure class="center">
  <a href="/posts/2025/02/14/iodd-st400-review/media/packaging-3.jpg">
    <img src="/posts/2025/02/14/iodd-st400-review/media/packaging-3_hu_2789b0689b1d8015.webp"
     width="1000"
     height="750"
     loading="lazy"
     decoding="async"
     alt="The IODD ST400 device itself.">

  </a>
  <figcaption class="center">The IODD ST400 device itself.</figcaption>
</figure>

<h2 id="setting-it-up">
  <a class="heading-anchor" href="#setting-it-up">Setting it up<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>Before you get started with this device, I highly recommend glancing
over <a href="https://help.iodd.kr/">the official documentation.</a>
The text is poorly translated in some parts, but overall it gets the job done.</p>
<p>Inserting the SSD was reasonably simple, it slotted in well and would not move around
after assembling it. Getting the back cover off was tricky, but I&rsquo;d rather have that than have to deal with a loose back
cover that comes off when it shouldn&rsquo;t.</p>









<figure class="center">
  <a href="/posts/2025/02/14/iodd-st400-review/media/assembly-0.jpg">
    <img src="/posts/2025/02/14/iodd-st400-review/media/assembly-0_hu_830376f38f53242c.webp"
     width="750"
     height="1000"
     loading="lazy"
     decoding="async"
     alt="Device with the back cover off.">

  </a>
  <figcaption class="center">Device with the back cover off.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/02/14/iodd-st400-review/media/assembly-1.jpg">
    <img src="/posts/2025/02/14/iodd-st400-review/media/assembly-1_hu_76134b91adfe1810.webp"
     width="1000"
     height="750"
     loading="lazy"
     decoding="async"
     alt="SSD pops right in.">

  </a>
  <figcaption class="center">SSD pops right in.</figcaption>
</figure>

<p>The most important step is the filesystem choice. You can choose between NTFS, FAT32 or exFAT. Due to the maximum file
size limitation of 4GB on FAT32, you will probably want to go with either NTFS or exFAT.</p>









<figure class="center">
  <a href="/posts/2025/02/14/iodd-st400-review/media/assembly-2.jpg">
    <img src="/posts/2025/02/14/iodd-st400-review/media/assembly-2_hu_44ccb0c98d170aa6.webp"
     width="1000"
     height="750"
     loading="lazy"
     decoding="async"
     alt="Error message that gets shown when you haven&#39;t formatted your drive yet.">

  </a>
  <figcaption class="center">Error message that gets shown when you haven&#39;t formatted your drive yet.</figcaption>
</figure>

<p>Once you have a filesystem on the SSD, you can start copying various installers and tools on it and mount them!</p>









<figure class="center">
  <a href="/posts/2025/02/14/iodd-st400-review/media/mounted.jpg">
    <img src="/posts/2025/02/14/iodd-st400-review/media/mounted_hu_b79db17d76a7d238.webp"
     width="1000"
     height="750"
     loading="lazy"
     decoding="async"
     alt="IODD ST400 with one virtual disk mounted.">

  </a>
  <figcaption class="center">IODD ST400 with one virtual disk mounted.</figcaption>
</figure>

<p>The interface is unintuitive. I had to keep the manual close when testing mine, but eventually I figured out
what I can and cannot do.</p>
<h2 id="device-emulation">
  <a class="heading-anchor" href="#device-emulation">Device emulation<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>Whenever you connect the IODD device to a powered on PC, it will present itself as multiple devices:</p>
<ul>
<li>normal hard drive: the whole IODD filesystem is visible here, and you can also store other files and backups as well
if you want to</li>
<li>optical media drive: this is where your installation media (ISO files) will end up, read only</li>
<li>virtual drives (up to 3 at a time): VHD files that represent virtual hard drives, but are seen as actual storage
devices on the PC</li>
</ul>









<figure class="center">
  <a href="/posts/2025/02/14/iodd-st400-review/media/emulation-0.png">
    <img src="/posts/2025/02/14/iodd-st400-review/media/emulation-0_hu_da60cc958c3ed65.webp"
     width="234"
     height="241"
     loading="lazy"
     decoding="async"
     alt="Emulated disks, as shown by GNOME Disks.">

  </a>
  <figcaption class="center">Emulated disks, as shown by GNOME Disks.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/02/14/iodd-st400-review/media/emulation-1.jpg">
    <img src="/posts/2025/02/14/iodd-st400-review/media/emulation-1_hu_5c755245aadc4d9d.webp"
     width="1000"
     height="750"
     loading="lazy"
     decoding="async"
     alt="A ThinkPad P14s gen4 boot selection menu with the IODD device connected.">

  </a>
  <figcaption class="center">A ThinkPad P14s gen4 boot selection menu with the IODD device connected.</figcaption>
</figure>

<p>This combination of devices is incredibly handy. For example, you can boot an actual Fedora Linux installation as one of
the virtual drives, and make a backup of the files on the PC right to the IODD storage itself.</p>









<figure class="center">
  <a href="/posts/2025/02/14/iodd-st400-review/media/booted-fedora.jpg">
    <img src="/posts/2025/02/14/iodd-st400-review/media/booted-fedora_hu_2c654da45c0cd907.webp"
     width="1000"
     height="750"
     loading="lazy"
     decoding="async"
     alt="GNOME Disks, running off of a Fedora 41 installation from a virtual drive.">

  </a>
  <figcaption class="center">GNOME Disks, running off of a Fedora 41 installation from a virtual drive.</figcaption>
</figure>

<p>S.M.A.R.T information also seems to be passed through properly for the disk that&rsquo;s inside.</p>









<figure class="center">
  <a href="/posts/2025/02/14/iodd-st400-review/media/crystaldiskinfo.jpg">
    <img src="/posts/2025/02/14/iodd-st400-review/media/crystaldiskinfo_hu_67a9b36c46a0a6af.webp"
     width="1000"
     height="750"
     loading="lazy"
     decoding="async"
     alt="CrystalDiskInfo showing the details of the SSD that&#39;s inside the IODD device, on a portable Windows 11 emulated disk.">

  </a>
  <figcaption class="center">CrystalDiskInfo showing the details of the SSD that&#39;s inside the IODD device, on a portable Windows 11 emulated disk.</figcaption>
</figure>

<p>Tech tip: to automatically mount your current selection of virtual drives and ISO file at boot, hold down the &ldquo;9&rdquo; button
for about 3 seconds. The button also has an exit logo on it. Without this step, booting an ISO or virtual drive becomes
tricky as you&rsquo;ll have to both spam the &ldquo;select boot drive&rdquo; key on the PC while navigating the menus on the IODD device
to mount the ISO.</p>
<p>The performance is okay. The drive speeds are limited to SATA II speeds, which means that your read/write speeds cap out
at about 250 MB/s. Latency will depend a lot on the drive, but it stays mostly in the sub-millisecond range on my SSD.
The GNOME Disks benchmark does show a notable chunk of reads having a 5 millisecond latency. The drive does not seem to
exhibit any throttling under sustained loads, so at least it&rsquo;s better than a normal USB stick.</p>









<figure class="center">
  <a href="/posts/2025/02/14/iodd-st400-review/media/booted-benchmark.jpg">
    <img src="/posts/2025/02/14/iodd-st400-review/media/booted-benchmark_hu_be14b6054cbbcb0e.webp"
     width="1000"
     height="750"
     loading="lazy"
     decoding="async"
     alt="A quick disk benchmark while booting off of the drive itself.">

  </a>
  <figcaption class="center">A quick disk benchmark while booting off of the drive itself.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2025/02/14/iodd-st400-review/media/benchmark-unloaded.png">
    <img src="/posts/2025/02/14/iodd-st400-review/media/benchmark-unloaded_hu_6b1478f7147b256.webp"
     width="656"
     height="598"
     loading="lazy"
     decoding="async"
     alt="Benchmark results while not emulating any virtual drives.">

  </a>
  <figcaption class="center">Benchmark results while not emulating any virtual drives.</figcaption>
</figure>

<p>The speeds seem to be the same for all emulated devices, with latencies and speeds being within spitting distance.</p>









<figure class="center">
  <a href="/posts/2025/02/14/iodd-st400-review/media/benchmark-virtual-drive.png">
    <img src="/posts/2025/02/14/iodd-st400-review/media/benchmark-virtual-drive_hu_eeaba39f96a6583f.webp"
     width="656"
     height="598"
     loading="lazy"
     decoding="async"
     alt="Benchmark results for the emulated virtual optical drive.">

  </a>
  <figcaption class="center">Benchmark results for the emulated virtual optical drive.</figcaption>
</figure>

<h2 id="the-firmware-sucks-actually">
  <a class="heading-anchor" href="#the-firmware-sucks-actually">The firmware sucks, actually<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 IODD ST400 is a great idea that&rsquo;s been turned into a good product, but the firmware is terrible enough to <em>almost</em>
make me regret the purchase.</p>
<p>The choice of filesystems available (FAT32, NTFS, exFAT) is very Windows-centric, but at least it comes with the upside
of being supported on
most popular platforms, including Linux and Mac. Not great, not terrible.</p>
<p>The folder structure has some odd limitations. For example, you can only have 32 items within a folder. If you have more
of that, you have to use nested folders. This sounds like a hard cap written somewhere within the device firmware
itself. I&rsquo;m unlikely to hit such limits myself and it doesn&rsquo;t seem to affect the actual storage, just the device itself
isn&rsquo;t able to handle that many files within a directory listing.</p>
<p>The most annoying issue has turned out to be <em><strong>defragmentation.</strong></em></p>
<p>In <em><strong>2025!</strong></em></p>
<p>It&rsquo;s a known limitation
that&rsquo;s <a href="https://help.iodd.kr/troubleshooting/error-messages">handily documented on the IODD documentation.</a> On Windows,
you can fix it by using a disk defragmentation tool, which is really not recommended on an SSD. On Linux, I have not yet
found a way to do that, so I&rsquo;ve resorted to simply making a backup of the contents of the drive, formatting the disk,
and copying it all back again. This is a frustrating issue that only comes up when you try to use a virtual hard drive.
It would absolutely suck to hit this error while in the field.</p>









<figure class="center">
  <a href="/posts/2025/02/14/iodd-st400-review/media/i-hate-this-error-so-much.jpg">
    <img src="/posts/2025/02/14/iodd-st400-review/media/i-hate-this-error-so-much_hu_cbcee3f9c075e2f0.webp"
     width="726"
     height="1000"
     loading="lazy"
     decoding="async"
     alt="The worst aspect of this device: the &#34;defrag&#34; error message.">

  </a>
  <figcaption class="center">The worst aspect of this device: the &#34;defrag&#34; error message.</figcaption>
</figure>

<p>The way virtual drives are handled is also less than ideal. You can only use fixed VHD files that are not sparse, which
seems to again be a limitation of the firmware.</p>
<p>Tech tip: if you&rsquo;re on Linux and want to convert a raw disk image (such as a disk copied with <code>dd</code>) to a VHD file, you
can use a command like this one:</p>
<pre tabindex="0"><code>qemu-img convert -f raw -O vpc -o subformat=fixed,force_size source.img target.vhd
</code></pre><p>The firmware really is the worst part of this device. What I would love to see is a device like IODD but with free and
open source firmware. Ventoy has proven that there is a market for a solution that makes juggling installation media
easy, but it can&rsquo;t emulate hardware devices. An IODD-like device can.</p>
<h2 id="encryption-and-other-features">
  <a class="heading-anchor" href="#encryption-and-other-features">Encryption and other features<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 didn&rsquo;t test those because I don&rsquo;t really need those features myself, I really don&rsquo;t need to protect my Linux
installers from prying eyes.</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>The IODD ST400 is a good device with a proven market, but the firmware makes me refrain from outright recommending it to
everyone, at least not at this price.</p>
<p>If it were to cost something like 30-50 EUR/USD, I would not mind the firmware issues at all.</p>
]]></content:encoded></item><item><title>They make USB-C cables with displays now!</title><link>https://ounapuu.ee/posts/2024/06/05/usb-c-cables/</link><pubDate>Wed, 05 Jun 2024 06:00:00 +0300</pubDate><author>ihavesomethoughtsonyourblog@ounapuu.ee (Herman Õunapuu)</author><guid>https://ounapuu.ee/posts/2024/06/05/usb-c-cables/</guid><description>How to turn something as ordinary as an USB-C cable into something that a lot of nerds will want to buy.</description><content:encoded><![CDATA[<img src="https://ounapuu.ee/posts/2024/06/05/usb-c-cables/media/cover_hu_aa135222711e00a0.jpg" width="1200" height="630" alt="They make USB-C cables with displays now!" /><p>I&rsquo;ve reached a point in my setup where most of the devices that I use are
based around the coveted USB-C port. This meant that I had a valid reason to get
a few extra because I didn&rsquo;t yet have a stockpile of good USB-C cables.</p>
<p>That&rsquo;s when I found out that there exist cables that have little screens on them
that show the power consumption of the connected device. This is a great little
addition
to <a href="/posts/2024/05/02/smartplugs/">my power consumption monitoring addiction.</a>
It&rsquo;s also a simple way to understand if your device is charging at the speed
that you expect it to.</p>
<p>The cable I ordered cost 6.72 EUR. It is a bit stiff and hard to work with,
probably due to its supposed USB 4 support requiring actually good cabling and
shielding. It works well enough for an USB-C dock with a DisplayPort
connection that&rsquo;s running a 3440x1440 display at 60 Hz.</p>
<p>It&rsquo;s too early to give a definitive answer about the longevity of the cable.</p>
<p>You should be able to find these types of cables with a search query like &ldquo;USB 4
Cable with LED Display&rdquo;.</p>
<p>The paranoid side of me suspects that a cable like this one would be an ideal
place to hide a malicious chip. That&rsquo;s the only downside that I can think of.</p>
<p>If you&rsquo;re interested in going more in depth with measuring the power consumption
over USB, then you might want to look at other options.
<a href="https://github.com/fqueze/usb-power-profiling?tab=readme-ov-file#power-meters-known-to-work">This GitHub repository lists a few examples of these types of measuring devices.</a></p>
]]></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>Lenovo ThinkPad P14s gen 4 (AMD): it doesn't suck under Linux</title><link>https://ounapuu.ee/posts/2024/04/12/lenovo-p14s-gen4/</link><pubDate>Fri, 12 Apr 2024 06:00:00 +0300</pubDate><author>ihavesomethoughtsonyourblog@ounapuu.ee (Herman Õunapuu)</author><guid>https://ounapuu.ee/posts/2024/04/12/lenovo-p14s-gen4/</guid><description>I'm just as surprised as you are.</description><content:encoded><![CDATA[<img src="https://ounapuu.ee/posts/2024/04/12/lenovo-p14s-gen4/media/cover_hu_26b1ddd0d2beb2d6.jpg" width="1200" height="630" alt="Lenovo ThinkPad P14s gen 4 (AMD): it doesn't suck under Linux" /><p>I&rsquo;ve had the opportunity to try out another new laptop at work. I&rsquo;ve used a brand new laptop recently, <a href="/posts/2022/11/21/hp-elitebook-845-g9/">and it was horrible.</a></p>
<p>But this time I&rsquo;m pleasantly surprised.</p>
<p>The <a href="https://www.lenovo.com/us/en/p/laptops/thinkpad/thinkpadp/thinkpad-p14s-gen-4-%2814-inch-amd%29-mobile-workstation/len101t0070">Lenovo ThinkPad P14s gen 4</a> has great specs:</p>
<ul>
<li>CPU: <a href="https://www.amd.com/en/products/apu/amd-ryzen-7-7840u">AMD Ryzen 7 PRO 7840U (8 cores, 16 threads, up to 5.1 GHz)</a></li>
<li>GPU: AMD Radeon 780M (integrated)</li>
<li>RAM: 32GB DDR5, soldered</li>
<li>SSD: 1 TB NVMe</li>
<li>Display: 1920x1200 resolution</li>
<li>Two USB-C ports</li>
<li>Two USB-A ports</li>
<li>HDMI out</li>
<li><strong>A full-sized Ethernet port!</strong></li>
</ul>
<p>I have used it for about a month at work, and so far I have not noticed anything outright broken about it.
The Fedora Linux 39 installation that I copied over from the previous laptop (Dell Latitude 5411) simply works, no modifications required.
The CPU is blazing fast. The GPU driver does not crash. No issues with Wi-Fi or Bluetooth so far. USB-C docks and
monitors that I have just work. The webcam is also functional and has an acceptable image quality for meetings. CPU and GPU temperature data is present with <code>lm-sensors</code>.</p>
<p>The build quality is what you&rsquo;d expect from a modern ThinkPad: better than consumer-grade crap, but not as solid as a ThinkPad T430.
The case has a soft-feeling light gray finish to it, which will likely look horrible after a few years of use.</p>
<p>The battery life is not great: don&rsquo;t expect to last a full 8-hour work day on battery with this thing. It&rsquo;s been years
since Apple has released Apple Silicon laptops with great battery life and somehow the rest of the industry still
hasn&rsquo;t caught up.</p>
<p>The fan has a really annoying high-pitched whine to it. You only hear it when pushing the CPU hard, like you&rsquo;d do
when compiling a legacy Java monolith, but in a quiet room it&rsquo;s really annoying. I&rsquo;m not even sure that the fan has to
be run that hard, the AMD Ryzen CPU inside is very efficient and can regulate its power consumption based on the current
temperature. You <em>can</em> tweak the fan curve on this laptop <a href="/posts/2022/09/26/minimum-viable-fan-control-script/">with a basic script.</a></p>
<p>I haven&rsquo;t tried functionality that I don&rsquo;t use myself, such as the fingerprint reader, so I cannot comment on that.</p>
<p>This laptop can also play games. I took an external SSD, installed <a href="https://bazzite.gg/">Bazzite on it (GNOME + gamemode version)</a>, set
everything up, and installed Forza Horizon 4 on it. It runs, and for an integrated GPU surprisingly well. I could push the
game to run with medium-high settings on the internal 1920x1200 display at a solid 60 FPS, with very rare dips below it.
That&rsquo;s even better than what I got with the Steam Deck, and the CPU running near the 5 GHz mark certainly contributed
to it. This makes the laptop a great candidate for a LAN party after work, unless you favor more demanding games, in
which case you might want to temper your expectations a little bit.</p>
<p>It&rsquo;s the first time that I&rsquo;ve had a brand new laptop that just works on Linux.
Hats off to the FOSS community for making this happen, AMD for getting their act
together, and Lenovo for not completely fucking it up this time.</p>
]]></content:encoded></item><item><title>Fairphone 5 long-term review: notes on 1 year and 3 months of use</title><link>https://ounapuu.ee/posts/2024/03/06/fairphone5/</link><pubDate>Wed, 06 Mar 2024 12:00:00 +0200</pubDate><author>ihavesomethoughtsonyourblog@ounapuu.ee (Herman Õunapuu)</author><guid>https://ounapuu.ee/posts/2024/03/06/fairphone5/</guid><description>I voted with my wallet and bought a Fairphone 5. Here's what I've learned after 1 year and 3 months.</description><content:encoded><![CDATA[<img src="https://ounapuu.ee/posts/2024/03/06/fairphone5/media/cover_hu_a24d3fd2483e690.jpg" width="1200" height="630" alt="Fairphone 5 long-term review: notes on 1 year and 3 months of use" /><p>2025 June update: Fairphone support is <em><strong>unacceptably bad.</strong></em>
<a href="/posts/2025/06/17/fairphone-customer-care-experience/">I have detailed my experience in this post</a> where it took
me almost 4 months to get a refund for the product. As a result of this experience and flaws with the phone, I have lost
confidence in Fairphone, and have become skeptical of their ability to support their products long-term.</p>
<p>Changelog:</p>
<ul>
<li>2024-03-06: 58 days, initial post</li>
<li>2024-07-28: <a href="/posts/2024/03/06/fairphone5/#2024-07-28-update-202-days">202 days, still going strong!</a></li>
<li>2024-10-15: <a href="/posts/2024/03/06/fairphone5/#2024-10-15-update-281-days">281 days</a></li>
<li>2025-01-08: <a href="/posts/2024/03/06/fairphone5/#2025-01-08-update-1-year">1 year!</a></li>
<li>2025-04-14: <a href="/posts/2024/03/06/fairphone5/#2025-04-14-update-im-very-disappointed">I&rsquo;m very disappointed</a></li>
</ul>
<p>After months of contemplating I finally pulled the trigger and got myself
a <a href="https://shop.fairphone.com/fairphone-5">Fairphone 5.</a> The fact
that <a href="https://support.apple.com/guide/iphone/models-compatible-with-ios-17-iphe3fa5df43/ios">iPhone X stopped receiving major iOS updates certainly helped make that decision.</a></p>
<p><em>&ldquo;But why? My Xiaomi/Oneplus/Samsung/other glued-together device is like so much cheaper and faster and makes better
photos and the software is good after I completely format it and install a custom
ROM! <a href="https://www.youtube.com/watch?v=e-4RlKcinzc">And LinusTechTips said that it is trash!</a>&rdquo;</em></p>
<p>Well, it&rsquo;s simple: Fairphone is the one of the few companies out there that has a good track record of long-lasting
software support
<strong>and</strong> the phones they produce
are <a href="https://www.ifixit.com/Device/Fairphone_4">easily</a> <a href="https://www.ifixit.com/Device/Fairphone_5">repairable.</a></p>
<p><a href="https://blog.google/products/pixel/software-support-pixel-8-pixel-8-pro/">The competition is catching on regarding the software support side,</a>
but at this time those claims have
not been proven
yet, <a href="https://arstechnica.com/gadgets/2023/07/fairphone-3-gets-seven-years-of-updates-besting-every-other-android-oem/">unlike Fairphone.</a></p>
<p>They also make an active effort to make sure that the people behind the production of their phones are treated well.</p>
<p>These efforts need to be supported so that we don&rsquo;t end up
replacing our phones every few years because the manufacturer stopped releasing software updates or your battery died
and <a href="https://www.ifixit.com/Guide/Google&#43;Pixel&#43;8&#43;Battery&#43;Replacement/166180">you cannot easily replace it</a>.</p>
<p>This post is <strong>not sponsored</strong>, I bought this phone with my own money.
The iPhone X that I used before the Fairphone 5 got passed to someone else as an upgrade so this was not a vanity
purchase.</p>
<p><strong>tl;dr</strong> it&rsquo;s a perfectly <a href="https://en.wiktionary.org/wiki/cromulent">cromulent</a> phone that comes with some intentional
trade-offs that improve the
repairability and longevity while reducing the environmental impact and human suffering.</p>
<p>For those who
saw <a href="https://www.youtube.com/watch?v=e-4RlKcinzc">the LTT video</a>: Fairphone
made <a href="https://youtu.be/Q79Jl842B4g">a response video</a>
where they address most concerns and explain some design choices and trade-offs that they made with the Fairphone 5.</p>
<h2 id="the-mission">
  <a class="heading-anchor" href="#the-mission">The mission<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 really admire what Fairphone is trying to achieve.</p>
<p>If you&rsquo;re not sure what makes Fairphone special and different from
others, <a href="https://shop.fairphone.com/about-us">then give their website a read.</a> They also
held <a href="https://fosdem.org/2024/schedule/event/fosdem-2024-3362-open-source-for-sustainable-and-long-lasting-phones/">a talk at FOSDEM 2024</a>
which goes into more technical detail, describing their journey, goals, and challenges faced when building phones and
trying to support existing ones for as long as possible (Qualcomm sucks in this regard).</p>
<p>In short: they build sustainable phones that you can use and repair for a very long time, made by people that get paid
and treated fairly.</p>
<p>One of the not-so-fun facts from their FOSDEM 2024 talk was that it only takes a few extra dollars per phone to make
sure that the factory workers get paid a living wage. Makes you think: if that is all it takes, then why aren&rsquo;t other
companies doing it?</p>
<h2 id="my-use-case-for-a-phone">
  <a class="heading-anchor" href="#my-use-case-for-a-phone">My use case for a phone<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 important to recognize that everyone uses their phone differently. Some expect great performance, especially if
they play games. Some just want a good camera. Some just want to chat with their friends and family and share dank
memes.</p>
<p>My expectations are very modest: a phone should make adequate pictures, be reasonably fast and get regular software
updates.
This post is written from <strong>my</strong> perspective and will likely conflict with your views on what a phone should be, keep
that in mind.</p>
<p>The Fairphone 5 is the first one that I actually considered buying because it resembles a modern smartphone
with relatively few compromises. This is in part thanks to the rate at which smartphones innovate slowing down, both in
performance and the amount of new features that people actually care about.</p>
<h2 id="the-cool-factor">
  <a class="heading-anchor" href="#the-cool-factor">The cool 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>I got the transparent edition, meaning that the backside of the phone is made out of semi-transparent plastic. I can at
a
moments notice flip the phone over and see the components, including the battery, SIM card and the microSD card.
Absolutely unpractical, still cool though.</p>









<figure class="center">
  <a href="/posts/2024/03/06/fairphone5/media/battery.jpg">
    <img src="/posts/2024/03/06/fairphone5/media/battery_hu_1607fe7379315634.webp"
     width="600"
     height="800"
     loading="lazy"
     decoding="async"
     alt="What took me almost 2 hours on an iPhone X took me about 30 seconds on a Fairphone 5.">

  </a>
  <figcaption class="center">What took me almost 2 hours on an iPhone X took me about 30 seconds on a Fairphone 5.</figcaption>
</figure>

<p>I wouldn&rsquo;t do the &ldquo;I can replace the battery in 30 seconds&rdquo; party trick too much because I feel like the plastic clips
holding the back cover in are quite fragile and can break if too much force is used. <a href="https://shop.fairphone.com/shop/fairphone-5-back-cover-267?category=4#attr=94">You can easily buy replacement
covers, though.</a></p>
<h2 id="the-software">
  <a class="heading-anchor" href="#the-software">The software<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>My first proper smartphone was a <a href="https://www.gsmarena.com/samsung_galaxy_gio_s5660-3741.php">Samsung Galaxy Gio</a> back
in 2011.
It was also my first introduction to custom ROMs and over the years I ended up running all sorts of phones with various
flavours of Cyanogen and LineageOS. At one point certain banking and e-ID related apps began blocking users who decided
to run custom ROMs, so I went to the Apple side for a few years.</p>
<p>Why this preface? Well, it&rsquo;s because coming back to the Android side of things felt so refreshing and freeing.</p>
<p>I can:</p>
<ul>
<li>finally run a real version of Firefox on my phone
with <a href="https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/">an actual ad blocker.</a>
<ul>
<li>this is an absolute gamechanger for me and something I sorely missed on iOS</li>
</ul>
</li>
<li>install any app that I want.
<ul>
<li>there are also a lot more FOSS apps available.</li>
</ul>
</li>
<li>rearrange shortcuts on my home screen as I want to.
<ul>
<li>or hell, run a different launcher altogether</li>
</ul>
</li>
<li><a href="https://syncthing.net/">seamlessly back up photos from my phone to PC using Syncthing!</a></li>
<li>work with actual files!</li>
<li>cram in a 512GB microSD card.</li>
</ul>
<p>The Fairphone 5 ships with Android 13, with Android 14 upgrade currently scheduled to summer 2024. The base OS is quite
clean, the only preinstalled app (other than the Google stuff) is the &ldquo;My Fairphone&rdquo; app that shows information about
your device. That same app can also be used to verify that the functionality on your phone works, and yes, the speaker
testing ones get quite loud.</p>
<p>If you decide that the stock Android experience isn&rsquo;t for you, then know that this phone can easily run alternative
operating systems. At FOSDEM 2024 almost every alternative OS booth had one or more Fairphone 5 running, including
Ubuntu Touch and CalyxOS. It&rsquo;s clear that the FOSS community has embraced the Fairphone.</p>
<p>I was a bit sad to see that a lot of open source apps that I used to run or that come up in searches are unsupported or
out of date. In some cases modern forks exist, but overall the picture looks very discouraging, especially if I was
new to the scene.</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>The performance isn&rsquo;t great, but it&rsquo;s good for most activities. I can feel it being sluggish from time to time or with
certain animations.</p>
<p>This is due to an intentional trade-off that Fairphone made: to be able to properly support this device for a very long
time, they
had to go with a Qualcomm SoC that gets long-term support, and that ruled out the ones that provide the best
performance. They ended up
putting in a chip that was designed for IoT applications, funnily enough. If having a slightly slower phone is what is
needed to run this phone for 5+ years, then it&rsquo;s a worthwhile trade-off in my view.</p>
<p>Fairphone <a href="https://fosdem.org/2024/schedule/event/fosdem-2024-3362-open-source-for-sustainable-and-long-lasting-phones/">highlighted the OEM support issue in their FOSDEM 2024 talk</a>
in case you&rsquo;re curious about why this trade-off needed to be made.
My opinionated <strong>tl;dw</strong>: we have to get OEM-s to either open source
the proprietary parts or hit them with some regulations and enforcement so that they do support the chips they produce
for longer.</p>
<h2 id="battery-life">
  <a class="heading-anchor" href="#battery-life">Battery life<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 battery life is what you would expect from a typical smartphone: 1-2 days of normal use, but I once stretched it to
almost 4 days during a
time when I used my phone very little. Do note that this is highly dependent on your usage patterns, if you do constant
video calls then you can&rsquo;t expect the battery to last much.</p>
<p>If you want to extend the longevity of your battery, then there is an option to limit charging to 80% in battery
settings. I&rsquo;ve recently enabled it because it doesn&rsquo;t impact my use of the phone much. Let&rsquo;s see how it fares in a few
years.</p>
<h2 id="size-and-feeling">
  <a class="heading-anchor" href="#size-and-feeling">Size and feeling<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 phone is big. Really big. Biggest one I&rsquo;ve had yet.</p>
<p>I actually prefer smaller phones, something like the iPhone 13
mini size would be ideal (Apple stopped making smaller phones that aren&rsquo;t iPhone 7 reskins after that so that&rsquo;s not an
option any longer). When I was in
a store that sold iPhones, I compared my phone to the latest iPhone 15 offerings and was surprised to see that my phone
was <a href="https://www.gsmarena.com/size-compare-3d.php3?idPhone1=12558&amp;idPhone2=12540">about the same size as an iPhone 15 Plus.</a>
Hopefully we&rsquo;ll see smaller Fairphones in the future, all while not introducing too many compromises.</p>
<p>Some people are surprised at the thickness of the Fairphone 5. Yes, it&rsquo;s thicker than most of the competitors, but note
that with other phones you&rsquo;ll likely buy a separate case for the phone, so you&rsquo;ll end up with something just as thick
anyway. At least with Fairphone 5 you don&rsquo;t have a glass backside that easily shatters if you drop it.</p>
<h2 id="camera">
  <a class="heading-anchor" href="#camera">Camera<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>When I bought the phone, I expected only one thing from the Fairphone 5: its camera should be better than the one on the
iPhone X.
GSMArena comparisons and reviews by others looked promising</p>
<p>The camera on the Fairphone is acceptable. I don&rsquo;t have proper photography education, but in most cases the Fairphone
makes OK pictures. In low light situations it seems to be inferior to flagship phones from other companies, which
may often end up with smudged pictures. At least it <em>has</em> a low light mode, something that my previous phone (iPhone X)
lacked. The colors look funky sometimes and are oversaturated.</p>
<p>This is a selection of photos made with the Fairphone 5. Thumbnails are compressed to avoid unnecessary bandwidth. Click
on the image to view the original, full-sized version.</p>
<p>








<figure class="center">
  <a href="/posts/2024/03/06/fairphone5/media/camera-0.jpg">
    <img src="/posts/2024/03/06/fairphone5/media/camera-0_hu_58e9593748461f7f.webp"
     width="300"
     height="400"
     loading="lazy"
     decoding="async"
     alt="Click on the image to see the full version.">

  </a>
  <figcaption class="center">Click on the image to see the full version.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2024/03/06/fairphone5/media/camera-1.jpg">
    <img src="/posts/2024/03/06/fairphone5/media/camera-1_hu_a7d6a1b65531e347.webp"
     width="300"
     height="400"
     loading="lazy"
     decoding="async"
     alt="Click on the image to see the full version.">

  </a>
  <figcaption class="center">Click on the image to see the full version.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2024/03/06/fairphone5/media/camera-2.jpg">
    <img src="/posts/2024/03/06/fairphone5/media/camera-2_hu_7855054aacc7681b.webp"
     width="300"
     height="400"
     loading="lazy"
     decoding="async"
     alt="Click on the image to see the full version.">

  </a>
  <figcaption class="center">Click on the image to see the full version.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2024/03/06/fairphone5/media/camera-3.jpg">
    <img src="/posts/2024/03/06/fairphone5/media/camera-3_hu_cf5261a539fe118f.webp"
     width="300"
     height="400"
     loading="lazy"
     decoding="async"
     alt="Click on the image to see the full version.">

  </a>
  <figcaption class="center">Click on the image to see the full version.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2024/03/06/fairphone5/media/camera-4.jpg">
    <img src="/posts/2024/03/06/fairphone5/media/camera-4_hu_36623f884314c5fd.webp"
     width="300"
     height="400"
     loading="lazy"
     decoding="async"
     alt="Click on the image to see the full version.">

  </a>
  <figcaption class="center">Click on the image to see the full version.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2024/03/06/fairphone5/media/camera-5.jpg">
    <img src="/posts/2024/03/06/fairphone5/media/camera-5_hu_e94bc3e3b707a5b5.webp"
     width="533"
     height="400"
     loading="lazy"
     decoding="async"
     alt="Click on the image to see the full version.">

  </a>
  <figcaption class="center">Click on the image to see the full version.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2024/03/06/fairphone5/media/camera-6.jpg">
    <img src="/posts/2024/03/06/fairphone5/media/camera-6_hu_afd3be1ff1f9152c.webp"
     width="300"
     height="400"
     loading="lazy"
     decoding="async"
     alt="Click on the image to see the full version.">

  </a>
  <figcaption class="center">Click on the image to see the full version.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2024/03/06/fairphone5/media/camera-7.jpg">
    <img src="/posts/2024/03/06/fairphone5/media/camera-7_hu_b34f5913c4a684b8.webp"
     width="533"
     height="400"
     loading="lazy"
     decoding="async"
     alt="Click on the image to see the full version.">

  </a>
  <figcaption class="center">Click on the image to see the full version.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2024/03/06/fairphone5/media/camera-8.jpg">
    <img src="/posts/2024/03/06/fairphone5/media/camera-8_hu_1920f48a87af9d91.webp"
     width="300"
     height="400"
     loading="lazy"
     decoding="async"
     alt="Click on the image to see the full version.">

  </a>
  <figcaption class="center">Click on the image to see the full version.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2024/03/06/fairphone5/media/camera-9.jpg">
    <img src="/posts/2024/03/06/fairphone5/media/camera-9_hu_d02a0a4894f4cb5d.webp"
     width="533"
     height="400"
     loading="lazy"
     decoding="async"
     alt="Click on the image to see the full version.">

  </a>
  <figcaption class="center">Click on the image to see the full version.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2024/03/06/fairphone5/media/camera-10.jpg">
    <img src="/posts/2024/03/06/fairphone5/media/camera-10_hu_46dba5981191f586.webp"
     width="300"
     height="400"
     loading="lazy"
     decoding="async"
     alt="Click on the image to see the full version.">

  </a>
  <figcaption class="center">Click on the image to see the full version.</figcaption>
</figure>
</p>
<h2 id="the-headphone-jack">
  <a class="heading-anchor" href="#the-headphone-jack">The headphone jack<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 feel like I&rsquo;m obliged to mention that this Fairphone doesn&rsquo;t have a headphone jack. As someone who spent a few years
on
iPhones, this one doesn&rsquo;t bother me too much.</p>
<h2 id="usb-c-port">
  <a class="heading-anchor" href="#usb-c-port">USB-C port<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 plugged it into an USB-C dock and it actually output to an external display in portrait mode. Not sure how practical,
but really cool.</p>
<p><a href="https://shop.fairphone.com/shop/fairphone-5-usb-c-port-268?category=4#attr=">Oh, and the USB-C port is easily replaceable.</a></p>
<h2 id="price">
  <a class="heading-anchor" href="#price">Price<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 only focus on the spec sheet and compare the Fairphone 5 to the competition, then it will strike you as an
expensive
phone, coming in at <strong>699 EUR.</strong></p>
<p>It <em>is</em> expensive, but that&rsquo;s a result of a lot of small things. Fairphone tries to do their best to source the raw
materials
from ethical sources and that narrows down your selection by a lot. Add to that living wages to the factory workers,
more repairable components, declining to add sponsored apps/ads into the OS and that&rsquo;s the result.</p>
<p>If you take the price and divide it by the number of years that you expect to get out of this phone (5-10 years),
then the price is likely much more comparable to the competition.</p>
<p>If a higher purchase price results in less human suffering and a longer lifetime of the device, then so be it.</p>
<h2 id="schematics">
  <a class="heading-anchor" href="#schematics">Schematics<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><a href="https://www.fairphone.com/en/2024/01/24/have-you-seen-the-schematics-for-the-fairphone-5/">They provide schematics</a> for
the phone (direct
link <a href="https://www.fairphone.com/wp-content/uploads/2024/02/Fairphone5_Information-on-how-to-repair-and-recycle-SCH-09-02-2024.pdf">here</a>).</p>
<p>My hours of watching <a href="https://www.youtube.com/channel/UCl2mFZoRqjw_ELax4Yisf6w">Louis Rossmann</a> do board level repairs
have taught me that this is <a href="https://store.rossmanngroup.com/schematics-or-die-t-shirt.html">a very good thing.</a></p>
<h2 id="its-not-perfect">
  <a class="heading-anchor" href="#its-not-perfect">It&rsquo;s not perfect<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>Every phone has issues.</p>
<p><a href="https://arstechnica.com/gadgets/2023/10/apple-and-devs-plan-software-fixes-for-iphone-15-pro-overheating-issues/">iPhone 15 had overheating problems.</a></p>
<p>That one iPhone SE 2020 that I ran for a few months had a hard to reproduce system board issue that made the phone
inoperable for 5+ minutes in random situations.</p>
<p>Here are some issues that I&rsquo;ve noticed while using the Fairphone 5</p>
<h3 id="sim-card">
  <a class="heading-anchor" href="#sim-card">SIM card<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>
</h3>
<p>After I set up the phone, the SIM card would stop functioning properly after a few hours of use. Reseating the SIM card
did not work, and I was quite frustrated because I was expecting to send the phone back just after I set it all up.
Luckily it seem to be a known issue
and <a href="https://support.fairphone.com/hc/en-us/articles/10375226431505-Troubleshoot-the-SIM-Card-s">there is an official support article that covers it.</a>
My SIM card is much older than the specified 2 years, but I couldn&rsquo;t be arsed with replacing it yet so I used pure
ethanol to clean the contacts on the SIM card, popped it back in and it has worked with absolutely no issues ever since.
I&rsquo;m glad that I got this easily fixed, but for a normal customer this would be a very frustrating experience so
hopefully
there is something that Fairphone can do to fix and/or avoid this in the future.</p>
<h3 id="the-display">
  <a class="heading-anchor" href="#the-display">The display<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>
</h3>
<p>The display of the Fairphone 5 supports 90 Hz refresh rate, but ships with it set to 60 Hz. I&rsquo;ve heard that most other
phones do something similar with the likely reason being the negative impact that high refresh rate displays have on the
battery
life. At the time of writing, however, there is a known issue with the 90 Hz mode which can actually result in more lag
and a worse user experience. I&rsquo;ve set the display back to 60 Hz for this reason. Luckily this is something that can
probably be fixed with a software update.</p>
<p>The automatic brightness setting is quite bad, especially when compared to any iPhone. The brightness jumps around a lot
in darker conditions and it&rsquo;s very irritating when driving because random street lights and cars seem to trigger the
sensor often. Again, probably something that can be fixed in software.</p>
<h3 id="software-stability">
  <a class="heading-anchor" href="#software-stability">Software stability<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>
</h3>
<p>Overall the software is stable, but there was this one time when the phone crashed and rebooted unexpectedly. It was
triggered while playing music and opening a Snapchat notification. Nothing serious and has only happened once in an
almost two-month period, but still noteworthy.</p>
<h3 id="the-google-crapware">
  <a class="heading-anchor" href="#the-google-crapware">The Google crapware<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>
</h3>
<p>This isn&rsquo;t really a Fairphone issue, but more of an Android gripe. I still have to mention it though. The Android 13
experience has started resembling the Windows experience. I had to toggle off countless &ldquo;features&rdquo; to turn off most
of the Google crapware that ships with the phone, and even then I still have to stare at the unremovable Google Search
bar at the home screen. That thing takes up so much useful screen real estate and is absolutely useless to me. It <em>used</em>
to be removable according to some discussions I found online, but I guess Google noticed that feedback and made it a
permanent fixture on the home screen with an update. Absolutely disgusting. You <em>can</em> work around this by using a
launcher
that&rsquo;s not affected by Google. <a href="https://kvaesitso.mm20.de/">Kvaesitso</a> is a FOSS one that seems to work well enough for
me.</p>
<h2 id="final-thoughts">
  <a class="heading-anchor" href="#final-thoughts">Final thoughts<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>Fairphone 5 is what you get when you focus on delivering a phone with long-term support and repairability in mind, all
while doing your best to treat your workers well. This does mean that you&rsquo;ll be making some trade-offs.</p>
<p>You won&rsquo;t get the best performance, the best camera, or the smallest size. What you get in return is the ease of
repairability,
years of software updates with a proven track record, and the knowledge that at least those workers who assembled your
phone get paid a living wage.</p>
<p>If you don&rsquo;t expect much from a phone and are willing to pay more for a phone that you can use for a lot longer, then
the Fairphone 5 is a good option.</p>
<p>Can I make it to 2031 with this phone? I&rsquo;ll definitely give it a try.</p>
<h2 id="2024-07-28-update-202-days">
  <a class="heading-anchor" href="#2024-07-28-update-202-days">2024-07-28 update: 202 days<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>My Fairphone 5 is still going strong. Here are some notes after 202 days of use.</p>
<h3 id="android-14">
  <a class="heading-anchor" href="#android-14">Android 14<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>
</h3>
<p>The promised Android 14 update is here and on time. The upgrade took a while to install but was boring, in a positive
way. Nothing I relied on broke and the interface looks more-or-less the same.</p>
<p>The only aspect I&rsquo;m not happy about with the Android 14 update
is <a href="https://9to5google.com/2023/09/21/pixel-webcam-android-14-qpr1/">the USB webcam mode feature not being present.</a>
It&rsquo;s possible that it&rsquo;s an optional feature of Android 14, and none of the Fairphone 5 materials indicate it being
included.</p>
<h3 id="video-playback-issues">
  <a class="heading-anchor" href="#video-playback-issues">Video playback 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>
</h3>
<p>I&rsquo;ve noticed some oddities regarding video playback. The video playback can be choppy on higher resolutions, especially
when I run them at 2x speed. Lower resolutions are fine. Sometimes the issues only occur with certain encodings, like
H.265, or audio tracks where I can only seem to hear certain audio channels.</p>
<h3 id="camera-in-action">
  <a class="heading-anchor" href="#camera-in-action">Camera in action<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>
</h3>
<p>The camera doesn&rsquo;t seem to be the best option for point-and-shoot situations where there is a lot of movement or where
the lighting conditions are bad. I&rsquo;ve taken my fair share of blurry photos as a result. The included microphone also
seems lacking in real life use, especially when I accidentally cover them with my fingers.</p>
<p>If I could pick one improvement for the next Fairphone, then it will have to be the camera. A lot of people care about
camera quality and might rule out getting a Fairphone as a result.</p>
<p>At least with the pro mode you have a lot of control over the camera, which is great for more stationary shots.</p>
<h3 id="durability">
  <a class="heading-anchor" href="#durability">Durability<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>
</h3>
<p>I have nothing bad to say about the durability here. I have dropped it a few times already and as a result I have two
small dings on the aluminium frame.</p>
<p>The backside has also held firm. After one fall a couple of clips came loose, but I could easily pop them back in.</p>
<p>Various oils and finger grease have an interesting effect with the transparent case, resulting in the see-through
effect being better. The grip has gotten better with time and negates any need for a separate case. The Fairphone 5
is still a big phone and not that easy to handle one-handed, but the grippy backside makes up for part of it.</p>
<p>The display glass has a few scratches, but nothing too bad. I can&rsquo;t seem to find any serious scratches on the backside.</p>
<h3 id="battery">
  <a class="heading-anchor" href="#battery">Battery<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>
</h3>
<p>The battery has held up fine. I turned off the battery saving feature because of how simple it is to replace the
battery,
enabled fast charging because it&rsquo;s really handy, and stopped showing the battery percentage on the notification bar to
reduce battery anxiety.</p>
<h3 id="5g">
  <a class="heading-anchor" href="#5g">5G<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>
</h3>
<p>I switched mobile service providers during this time and could finally test the 5G capabilities of this phone.
Since I went with the cheapest option at the time, then the signal strength will not be as good as with other ones,
but at least I know it works in Estonia.</p>
<p>Maximum speeds I&rsquo;ve seen are around 250 Mbit/s. Could be limited by Fairphone 5, or the service provider (more likely
option).</p>
<h3 id="display-brightness">
  <a class="heading-anchor" href="#display-brightness">Display brightness<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>
</h3>
<p>At some point I got an update that seems to have improved the automatic brightness feature. It&rsquo;s not as jarring as
before,
especially at low light levels. I&rsquo;m not sure which update fixed it, but I haven&rsquo;t noticed any annoyances with it for
a long time.</p>
<h2 id="2024-10-15-update-281-days">
  <a class="heading-anchor" href="#2024-10-15-update-281-days">2024-10-15 update: 281 days<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 have one gripe with the software support on Fairphone 5.</p>
<p>The security updates are lagging behind way too much.</p>
<p>They&rsquo;ve always come with a small delay of a few weeks, but it took over a month to get the 5th of September security
patches. These are supposed to be <strong><em>monthly.</em></strong></p>
<p>I finally received the 5th of September security patches today, <strong>15th of October.</strong>
<a href="https://source.android.com/docs/security/bulletin/2024-10-01">There&rsquo;s already a new security bulletin out with the October patches,</a>
which I don&rsquo;t have on my phone.</p>
<p>It&rsquo;s better than no updates at all, but this does not bode well for future long-term software support.</p>
<h2 id="2025-01-08-update-1-year">
  <a class="heading-anchor" href="#2025-01-08-update-1-year">2025-01-08 update: 1 year<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>Well, I&rsquo;ve successfully made it 1 year with the Fairphone 5.</p>
<p>Overall I&rsquo;m impressed with how little the phone gets in the way. It just gets along with doing normal phone things.</p>
<p>Security updates are still lagging behind, so that&rsquo;s a bit concerning.</p>
<p>Camera is still not the best, but not the worst.</p>
<p>The USB-C port is holding on nicely, but largely thanks to a few pocket lint cleanings that I&rsquo;ve done using a small
needle.</p>
<p>There have been a few unexpected quick reboots on the Android layer, but these are rare enough that I end up forgetting
about them. Seems to happen about once a quarter.</p>
<p>I have dropped the phone at least 100 times at this point, mainly due to my clumsiness and open pockets.
Fairphone 5 has shrugged it all off.</p>
<p>The Fairphone app also reminded me of my phone-versary and let me know that I&rsquo;m 20% there towards my goal of using the
Fairphone 5 for <em>at least</em> 5 years. It also asked for feedback regarding the Fairphone experience, which some may find
annoying. I see it as a positive sign that they&rsquo;re at least trying to collect feedback to improve this and any future
Fairphones.</p>
<p>At this point in time, I&rsquo;m happy with my Fairphone 5, and have not considered replacing it. It&rsquo;s not perfect, but it
gets the job done.</p>
<p>Here&rsquo;s a cat picture to celebrate the occasion.</p>









<figure class="center">
  <a href="/posts/2024/03/06/fairphone5/media/1-year-anniversary.jpg">
    <img src="/posts/2024/03/06/fairphone5/media/1-year-anniversary_hu_f005e3768f2176b.webp"
     width="1000"
     height="750"
     loading="lazy"
     decoding="async"
     alt="Shot on Fairphone 5.">

  </a>
  <figcaption class="center">Shot on Fairphone 5.</figcaption>
</figure>

<h2 id="2025-04-14-update-im-very-disappointed">
  <a class="heading-anchor" href="#2025-04-14-update-im-very-disappointed">2025-04-14 update: I&rsquo;m very disappointed<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 don&rsquo;t take video recordings often, but when I do, it&rsquo;s about content that I care about. Unfortunately, the Fairphone 5
is butchering them.</p>
<p>The HDR feature is ruining the framerate of the videos. The sound is seriously lacking in videos, rendering some videos
unusable, <a href="https://forum.fairphone.com/t/massive-sound-issues-in-recording-videos/107582">and unfortunately I&rsquo;m not alone in this regard.</a>
The autofocus keeps kicking in constantly in videos with no good reason, resulting in lots of frames having blurry
sections in them, repeatedly.</p>
<p>It&rsquo;s very hard to take good non-blurry photos with the Fairphone 5. Definitely not a point-and-shoot camera.</p>
<p>The security updates are lagging behind by over a month, constantly. It&rsquo;s April 14th, and I&rsquo;m still on the March 5th
security patch level. There is no news about Android 15 coming to the
phone, <a href="https://calyxos.org/news/2025/04/09/qpr2-fp-moto-pixel5/">while the people behind CalyxOS have shipped an Android 15 based version on the Fairphone 5.</a></p>
<p>The phone has rebooted on me at least 4 times within the last month, which is unusually high. The worst one was while I
was driving.</p>
<p><a href="/posts/2025/03/17/fairbuds-xl-review/#customer-care-experience">And I&rsquo;m still waiting for that refund on the Fairbuds XL.</a>
And yet again, <a href="https://forum.fairphone.com/t/how-do-i-apply-for-a-refund/117613">I&rsquo;m not alone in this.</a></p>
<p>I&rsquo;m starting to feel like in order to create a well performing, sustainable and repairable phone, we first need to take
a good phone and <em>then</em> make it repairable and support it for a long time. Fairphone is trying it the other way around,
and it does not seem to be working out.</p>
<p>Guess I&rsquo;ll have to get a glued together phone again, at least that will work well until its battery dies along with its
software support.</p>
<h2 id="the-experiment-has-ended">
  <a class="heading-anchor" href="#the-experiment-has-ended">The experiment has ended<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 have stopped using the Fairphone 5. It will likely still find some use as a test bed for alternative operating systems
or using it as a very fancy baby monitor. I just need a phone that I can rely on.</p>
<p>Sustainability and repairability does not matter if the product is unusable.</p>
<p>For those wondering, I bought a Google Pixel 8a as a replacement. It addresses the shortcomings of the Fairphone 5 and
the battery will be completely dead by the time the software support runs out, which should be in 5-6 years or so.</p>
]]></content:encoded></item><item><title>Zimaboard: the closest thing to my dream home server setup</title><link>https://ounapuu.ee/posts/2023/10/09/zimaboard/</link><pubDate>Mon, 09 Oct 2023 14:00:00 +0300</pubDate><author>ihavesomethoughtsonyourblog@ounapuu.ee (Herman Õunapuu)</author><guid>https://ounapuu.ee/posts/2023/10/09/zimaboard/</guid><description>I gave in to my impulses and bought myself a small single board computer to be my power-efficient home server, here's how it went.</description><content:encoded><![CDATA[<img src="https://ounapuu.ee/posts/2023/10/09/zimaboard/media/cover_hu_1511165ed98ee92c.jpg" width="1200" height="630" alt="Zimaboard: the closest thing to my dream home server setup" /><p>I stumbled upon <a href="https://youtu.be/V_ZdvrIMKEQ">this Hardware Haven video about the Zimaboard recently.</a></p>
<p>I liked it a lot.</p>
<p>I finally bought one.</p>
<p>In short, <a href="https://www.zimaboard.com/zimaboard/product">Zimaboard</a> is a small single-board computer that is relatively affordable and comes
with an interesting selection of ports, which includes an exposed PCI Express port.</p>
<p>Before we get down to the build, here&rsquo;s a list of aspects that I want to see in my dream home server:</p>
<ul>
<li>low power usage (2-15W typical power usage)</li>
<li>8GB of RAM or better</li>
<li>enough performance to run my workloads, most of which are containerized</li>
<li>2x SATA or NVMe SSD slots, plus option for a third drive for the OS</li>
<li>passively cooled and completely silent</li>
<li>compact size</li>
<li>gigabit Ethernet or better</li>
</ul>
<p>You might be thinking, &ldquo;<em>Wait, that&rsquo;s your <strong>dream setup</strong>? No clusters of machines, Threadrippers, 10 Gigabit networking, crazy number of disks?</em>&rdquo;.
Well, yes. After years of trying all sorts of setups and learning about my home server usage patterns, this is the set of requirements that finds a balance between performance, efficiency
and silence.</p>
<h2 id="basics">
  <a class="heading-anchor" href="#basics">Basics<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 recommend checking <a href="https://www.zimaboard.com/zimaboard/product">the product page</a> to see the exact specifications.
The configuration I bought was the 832 model: 8GB of RAM, 32GB of eMMC storage and a quad-core Intel Celeron N3450 CPU.
It&rsquo;s not the most powerful setup or even a recent one with the CPU being from 2016, but it&rsquo;s just powerful enough to fit
my needs.</p>
<p>This variant of the board costs 200 USD, but other configurations cost much less
than that, I just needed the extra memory to be on the safe side. If you don&rsquo;t
care about the noise and size aspect of home servers, then you can get a better
deal on the used market (<a href="https://www.servethehome.com/introducing-project-tinyminimicro-home-lab-revolution/">see the TinyMiniMicro project for inspiration)</a>,
but as you know by this point, I care about those aspects a lot.</p>
<h2 id="the-package">
  <a class="heading-anchor" href="#the-package">The package<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>What sets the Zimaboard apart from other single board computers is how polished the product feels.
Unlike a board like the Raspberry Pi, this one comes with a case and a cooling setup
already attached to it. I suspect that a similarily configured Raspberry Pi 4/5
with all the accessories added on top would result in a price that&rsquo;s quite
similar to the cost of a top-of-the-line Zimaboard.</p>
<p>The heatsink looks great and is practical at the same time.
Under the most torturous loads I could only see the CPU being around 72°C and due
to it being passively cooled it made absolutely no noise. With the case being
present, I do not have to worry about placing the board on my desk and scratching
the table or shorting something out.</p>









<figure class="center">
  <a href="/posts/2023/10/09/zimaboard/media/theboard.jpg">
    <img src="/posts/2023/10/09/zimaboard/media/theboard_hu_2cd89bb8686bd5dc.webp"
     width="600"
     height="800"
     loading="lazy"
     decoding="async"
     alt="Just plop it wherever.">

  </a>
  <figcaption class="center">Just plop it wherever.</figcaption>
</figure>

<p>The board does not seem to have a power button, but by default it&rsquo;s configured
to power on as soon as you connect the power supply, which is great if you&rsquo;re
going to use this as a home server.</p>
<p>The box that the board was shipped survived and overall I&rsquo;d say that the packaging
is good. The board comes with some stickers and a single SATA data+power cable.
The included power adapter comes with EU, US and UK plugs all included.</p>
<p>Shipping to Estonia was quite fast, taking just 10 days. The shipping costs were
18 USD.</p>









<figure class="center">
  <a href="/posts/2023/10/09/zimaboard/media/box.jpg">
    <img src="/posts/2023/10/09/zimaboard/media/box_hu_eb50fa4af959b977.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="The box did its job.">

  </a>
  <figcaption class="center">The box did its job.</figcaption>
</figure>

<h2 id="storage">
  <a class="heading-anchor" href="#storage">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 included 32GB eMMC storage is fine for hosting your operating system. The
read speeds cap out at around 175 MB/s and the typical write speeds I observed
were around 50-100 MB/s. The storage is identified as <code>mmc-BJTD4R_0xc7d04e40</code> under
<code>/dev/disk/by-id/</code>, and searching online suggests that it&rsquo;s a Samsung chip.</p>
<p>Because this board offers two SATA ports, I also added a SATA Y-cable to my order
(4 USD) so that I can take my existing Samsung 870 QVO 4TB SATA drives and move
my home server setup to this board.</p>









<figure class="center">
  <a href="/posts/2023/10/09/zimaboard/media/ycable.jpg">
    <img src="/posts/2023/10/09/zimaboard/media/ycable_hu_1b434f16b568b5da.webp"
     width="600"
     height="800"
     loading="lazy"
     decoding="async"
     alt="SATA Y-cable in action.">

  </a>
  <figcaption class="center">SATA Y-cable in action.</figcaption>
</figure>

<p>Allegedly this cable can also be used to drive
two 3.5&quot; hard drives powered by the board itself according to <a href="https://shop.zimaboard.com/products/sata-y-cable-for-zimaboard-2-5-inch-hdd-3-5-inch-hdd-raid-free-nas-unraid">the shop page
for the Y-cable</a>, but I suspect that at that point you&rsquo;ll be pushing the limits of
the 12V/3A power adapter.</p>
<p>There is also a white drive activity LED
placed near the SATA power connector on the board. Perhaps not for everyone, but I
like the aesthetic and the sight of the server doing server things.</p>
<p>The performance of the SATA ports is what you would expect. When performing
read operations on both SSD-s I saw the maximum total transfer rates hover around
900-950MB/s, which is pretty close to the SATA III transfer speed limit.</p>
<p>There is no native way to mount the two SATA drives to the Zimaboard. The creators
of the board do sell a metal bracket, but it doesn&rsquo;t seem to integrate that well
to the board. However, <a href="https://www.printables.com/model/224057-zimaboard-dual-hdd-stand">there exists a 3D printable design that houses two
2.5&quot; drives, even 15mm ones</a>, and
that&rsquo;s how I ended up using a 3D printer for the first time in my life.
The print was done using a <a href="https://wiki.k-space.ee/en/utilities/3D-Printer">Voron v2 Afterburner printer hosted at k-space</a>
and it came out pretty well.</p>









<figure class="center">
  <a href="/posts/2023/10/09/zimaboard/media/3dprint-1.jpg">
    <img src="/posts/2023/10/09/zimaboard/media/3dprint-1_hu_1063ec1f0205a475.webp"
     width="600"
     height="800"
     loading="lazy"
     decoding="async"
     alt="Print in progress.">

  </a>
  <figcaption class="center">Print in progress.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2023/10/09/zimaboard/media/3dprint-2.jpg">
    <img src="/posts/2023/10/09/zimaboard/media/3dprint-2_hu_d701924b7455a796.webp"
     width="600"
     height="800"
     loading="lazy"
     decoding="async"
     alt="The final product">

  </a>
  <figcaption class="center">The final product</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2023/10/09/zimaboard/media/3dprint-3.jpg">
    <img src="/posts/2023/10/09/zimaboard/media/3dprint-3_hu_824404626ee747d8.webp"
     width="600"
     height="800"
     loading="lazy"
     decoding="async"
     alt="Another angle.">

  </a>
  <figcaption class="center">Another angle.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2023/10/09/zimaboard/media/3dprint-4.jpg">
    <img src="/posts/2023/10/09/zimaboard/media/3dprint-4_hu_734e2439b5176454.webp"
     width="600"
     height="800"
     loading="lazy"
     decoding="async"
     alt="Some 3D printing related inconsistencies, but nothing serious.">

  </a>
  <figcaption class="center">Some 3D printing related inconsistencies, but nothing serious.</figcaption>
</figure>

<p>The SSD mounting holes were a bit finicky due
to slight printing errors, and during my first installation attempt I forgot to
put in the plastic middle layer of the case that&rsquo;s between the PCB and the stock
bottom cover, but other than that the installation was a breeze.</p>









<figure class="center">
  <a href="/posts/2023/10/09/zimaboard/media/board-backside.jpg">
    <img src="/posts/2023/10/09/zimaboard/media/board-backside_hu_df793b4541493c33.webp"
     width="600"
     height="800"
     loading="lazy"
     decoding="async"
     alt="Installation of the caddy requires removing the stock backplate and splitting it.">

  </a>
  <figcaption class="center">Installation of the caddy requires removing the stock backplate and splitting it.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2023/10/09/zimaboard/media/caddy-1.jpg">
    <img src="/posts/2023/10/09/zimaboard/media/caddy-1_hu_78d2b684b7f1572c.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="The finished result.">

  </a>
  <figcaption class="center">The finished result.</figcaption>
</figure>

<p>








<figure class="center">
  <a href="/posts/2023/10/09/zimaboard/media/caddy-2.jpg" aria-label="View full-size image">
    <img src="/posts/2023/10/09/zimaboard/media/caddy-2_hu_bb144d2c394a571f.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="">

  </a>
  
</figure>










<figure class="center">
  <a href="/posts/2023/10/09/zimaboard/media/caddy-3.jpg" aria-label="View full-size image">
    <img src="/posts/2023/10/09/zimaboard/media/caddy-3_hu_835bdd7977c2313d.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="">

  </a>
  
</figure>










<figure class="center">
  <a href="/posts/2023/10/09/zimaboard/media/caddy-4.jpg" aria-label="View full-size image">
    <img src="/posts/2023/10/09/zimaboard/media/caddy-4_hu_bcbdbc57030a3901.webp"
     width="600"
     height="800"
     loading="lazy"
     decoding="async"
     alt="">

  </a>
  
</figure>










<figure class="center">
  <a href="/posts/2023/10/09/zimaboard/media/caddy-5.jpg" aria-label="View full-size image">
    <img src="/posts/2023/10/09/zimaboard/media/caddy-5_hu_7ba9351ed37ad4e3.webp"
     width="600"
     height="800"
     loading="lazy"
     decoding="async"
     alt="">

  </a>
  
</figure>










<figure class="center">
  <a href="/posts/2023/10/09/zimaboard/media/caddy-6.jpg" aria-label="View full-size image">
    <img src="/posts/2023/10/09/zimaboard/media/caddy-6_hu_5a82ffd61f02dfe2.webp"
     width="600"
     height="800"
     loading="lazy"
     decoding="async"
     alt="">

  </a>
  
</figure>










<figure class="center">
  <a href="/posts/2023/10/09/zimaboard/media/caddy-7.jpg" aria-label="View full-size image">
    <img src="/posts/2023/10/09/zimaboard/media/caddy-7_hu_4e393891551319ac.webp"
     width="600"
     height="800"
     loading="lazy"
     decoding="async"
     alt="">

  </a>
  
</figure>
</p>
<p>The drives never hit above 64°C, which is absolutely okay for these SSD-s. I&rsquo;m not
sure how actual spinning hard drives might fare in this environment, but I don&rsquo;t
think that it&rsquo;s going to be that serious because 2.5&quot; hard drives should not
generate as much heat in the first place.</p>
<h2 id="power-consumption">
  <a class="heading-anchor" href="#power-consumption">Power consumption<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>What I love about this board is the power usage. At this point my home server
is not even the most power hungry component of my setup, that honor now goes
to the ISP-provided router/modem combo box that always draws at least 12W, even
when it&rsquo;s in bridge mode.</p>
<p>Here are my power usage measurements (measured with a simple power meter):</p>
<ul>
<li>idle: 2.5W</li>
<li>no drives attached, CPU stress test (<code>stress -c 4</code>): 9.0W</li>
<li>one Samsung 870 QVO 4TB SSD attached, CPU stress test: 13.2W</li>
<li>2 SSD-s attached, typical power draw in my setup (~10-40% CPU usage): ~8-9W</li>
<li>2 SSD-s attached, max load on SSD-s and CPU: ~14W</li>
</ul>
<p>The Zimaboard, ISP modem/router box, my TP-Link router/Wi-Fi AP and my CyberPower
UPS all together use at most around 34W, all combined. That&rsquo;s even less than
what my Dell monitor uses at reasonably low brightness levels!</p>
<p>These tests are not scientifically accurate, but they should give you an idea on what
power consumption numbers to expect when running this setup.</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 use a simple Prometheus Node Exporter + Grafana setup to view how much resources
my various servers use. My home server has lately either been an <a href="/posts/2022/01/17/asrock-x300-future-of-desktops/">ASRock Deskmini X300 based setup</a> or
an <a href="/posts/2022/05/10/thinkpad-as-a-home-server/">old ThinkPad T430</a>, and something that both had in common was that the CPU usage was
generally very low, mostly at or below the 10% mark. There would be bursty loads
from time to time and backup processes running that bump that up, but not significantly.</p>









<figure class="center">
  <a href="/posts/2023/10/09/zimaboard/media/prom-old.png">
    <img src="/posts/2023/10/09/zimaboard/media/prom-old_hu_708f14b1eed98d02.webp"
     width="1280"
     height="674"
     loading="lazy"
     decoding="async"
     alt="Typical CPU performance on a ThinkPad T430 acting as a home server.">

  </a>
  <figcaption class="center">Typical CPU performance on a ThinkPad T430 acting as a home server.</figcaption>
</figure>

<p>Memory usage of my setup was also quite low, with all my services and containers
fitting into 2GB during typical usage. With this information and some CPU performance
comparisons done, I knew that the Zimaboard will likely be able to handle my home
server tasks.</p>
<p>This board is not very powerful, but if you mainly rely on containerized workloads
and can rely on Intel QuickSync to accelerate media transcodes, then you&rsquo;ll be
just fine.</p>









<figure class="center">
  <a href="/posts/2023/10/09/zimaboard/media/prom-new.png">
    <img src="/posts/2023/10/09/zimaboard/media/prom-new_hu_85b12aa5a7e8f9b7.webp"
     width="1280"
     height="674"
     loading="lazy"
     decoding="async"
     alt="Zimaboard CPU usage, which includes migrating filesystems, creating new multi-TB
backups from scratch and a lot of Jellyfin playback and GPU-accelerated transcoding.
Pretty much the worst case scenario for this board.">

  </a>
  <figcaption class="center">Zimaboard CPU usage, which includes migrating filesystems, creating new multi-TB
backups from scratch and a lot of Jellyfin playback and GPU-accelerated transcoding.
Pretty much the worst case scenario for this board.</figcaption>
</figure>

<p>I was actually impressed with how well the GPU-accelerated transcode
worked on this machine once you set everything up properly.
If you&rsquo;re running Linux and Jellyfin,
run <code>vainfo</code> to get a list of supported codecs and make sure that you have hardware
decoding selected for those in Jellyfin settings. Also enable hardware encoding.
I checked with <code>intel_gpu_top</code> to see if work was offloaded to the GPU and saw
activity there, which means that hardware acceleration for Jellyfin worked out great!
<a href="https://jellyfin.org/docs/general/administration/hardware-acceleration/">Check the Jellyfin hardware acceleration for more details on other requirements
that have to be met for all of this to work.</a></p>









<figure class="center">
  <a href="/posts/2023/10/09/zimaboard/media/jellyfin-qs-conf.png">
    <img src="/posts/2023/10/09/zimaboard/media/jellyfin-qs-conf_hu_6c1ba97b1f638294.webp"
     width="715"
     height="800"
     loading="lazy"
     decoding="async"
     alt="The Jellyfin QuickSync hardware acceleration config that works on my Zimaboard.
May not be 100% correct but so far have not encountered issues.">

  </a>
  <figcaption class="center">The Jellyfin QuickSync hardware acceleration config that works on my Zimaboard.
May not be 100% correct but so far have not encountered issues.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2023/10/09/zimaboard/media/intel-gpu-top.png">
    <img src="/posts/2023/10/09/zimaboard/media/intel-gpu-top_hu_c612456e5219acc0.webp"
     width="1280"
     height="204"
     loading="lazy"
     decoding="async"
     alt="intel_gpu_top during Jellyfin transcoded media playback. ">

  </a>
  <figcaption class="center">intel_gpu_top during Jellyfin transcoded media playback. </figcaption>
</figure>

<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 Zimaboard does ship with a Linux-based OS called CasaOS. However, I had no
intention of using it as I know what my requirements are and my infrastructure
is already decently documented and set up via Ansible, which is why I can&rsquo;t say
how good that experience is. I also did not test Windows 10 or 11.</p>
<p>During testing, I noticed that the USB 3 ports can act a bit weird. The Fedora
Server USB stick would not boot properly if connected to one of the USB ports,
and when doing other tests with external USB storage I noticed hiccups from time to time.
Not sure what might be the cause, but I&rsquo;m writing it down nevertheless. It&rsquo;s not
a dealbreaker for me luckily since I don&rsquo;t rely much on the USB ports in typical use anyway.</p>
<p>I did not test the PCI Express port, simply because I don&rsquo;t need it, yet. It&rsquo;s
a great addition, though, and opens up plenty of modding capabilities in the
future.</p>
<h2 id="fedora-server-and-btrfs">
  <a class="heading-anchor" href="#fedora-server-and-btrfs">Fedora Server and btrfs<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 Zimaboard gave me an opportunity to start fresh with my home server.</p>
<p>I made a leap: I&rsquo;ve ditched ZFS and am now running
Fedora Server with my storage being on a btrfs RAID1 setup, snapshotted
and backed up using <a href="/posts/2022/07/09/btrbk-is-awesome/">btrbk</a>.
It was a bit tricky to migrate and set everything
up regarding backups and snapshotting, but I got it working.</p>
<p>ZFS is great, but it has always felt like an unwanted guest in the Linux ecosystem.
The kernel developers don&rsquo;t care much for maintaining compatibility with ZFS since
it&rsquo;s not in the kernel due to licensing issues, and Ubuntu has been one of the few
distros that actually ships a kernel that includes ZFS built in. I didn&rsquo;t want
to be tied to Ubuntu forever, especially because of how they try to make <code>snap</code>
a thing. ZFS DKMS builds are generally okay on distros like Debian, but on
others you might find yourself not being able to access your data after a reboot
because of a kernel update.</p>
<p>btrfs has had some issues in the past, especially with the RAID5/6 setup, but
in my single and dual disk setups it has been solid for years, except for that one time around
2018-2019 when I ran btrfs RAID1 over USB storage. To be fair to btrfs, that
was a pretty stupid setup.</p>
<p>Before committing
to btrfs, I used two USB sticks to create a RAID1 setup and created real torture test scenarios.
Tests looked something like this:</p>
<ul>
<li>write a file to the filesystem</li>
<li>use <code>md5sum</code> to calculate a hash of it for verification purposes</li>
<li>completely wipe one USB drive with <code>dd</code></li>
<li>run <code>md5sum</code> to calculate the hash again (it matched every time)</li>
<li>run <code>btrfs scrub</code> on the filesystem to fix all errors</li>
<li>rinse and repeat with variations to this setup</li>
</ul>
<p>After doing all that, I was quite confident that this was going to work.</p>
<p>One thing to note with <code>btrfs</code>: if you&rsquo;re running any type of multi-disk and
redundant setup like RAID1 or RAID10, then make sure to include the mount option
<code>degraded</code> in <code>/etc/fstab</code> so that you can still mount your filesystem if one or
more of your drives fail. If you lose too many drives then it&rsquo;s still probably going to fail to boot.</p>
<p>Here&rsquo;s my <code>/etc/fstab</code> setup to serve as an example:</p>
<pre tabindex="0"><code>LABEL=turbo /turbo      btrfs subvol=turbo,compress-force=zstd:1,ssd,degraded,nofail            0 0
</code></pre><p>When doing the migration I kept all the paths the same, and each ZFS dataset
was recreated using <code>btrfs</code> subvolumes, which is why this filesystem is mounted on a top-level folder.</p>
<h2 id="alternatives">
  <a class="heading-anchor" href="#alternatives">Alternatives<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>My notes for the next dream home server setup included a few candidates:</p>
<ul>
<li>
<p>the Zimaboard</p>
</li>
<li>
<p><a href="https://www.asustor.com/en/product?p_id=79">Asustor Flashstor 6</a> or <a href="https://www.asustor.com/en/product?p_id=80">Flashstor 12</a></p>
</li>
<li>
<p>a TinyMiniMicro style machine with at least two NVMe SSD slots</p>
</li>
</ul>
<p>The first two fall nicely into my requirements for the dream home server. I picked
the Zimaboard mainly because it&rsquo;s much cheaper and I was already running two SATA SSD-s
for my home server storage, so migrating would be really easy and I would not
have to buy any new drives.</p>
<p>If large capacity SATA SSD-s start becoming less common and NVMe SSD-s become
even cheaper than they already are, then I&rsquo;ll have to look into something like a Flashstor.</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>Overall, I&rsquo;m very happy with this purchase. The performance is just enough for
my services to work reasonably fast, the board uses very little power and it&rsquo;s
silent, and it looks good on my wall.</p>









<figure class="center">
  <a href="/posts/2023/10/09/zimaboard/media/wallsetup.jpg">
    <img src="/posts/2023/10/09/zimaboard/media/wallsetup_hu_263feac6bc54aaa1.webp"
     width="600"
     height="800"
     loading="lazy"
     decoding="async"
     alt="Oh it&#39;s a setup it&#39;s a setup it&#39;s a setup 🎶">

  </a>
  <figcaption class="center">Oh it&#39;s a setup it&#39;s a setup it&#39;s a setup 🎶</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2023/10/09/zimaboard/media/cablegore.jpg">
    <img src="/posts/2023/10/09/zimaboard/media/cablegore_hu_75af033ad64d88f6.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="Managing the coax cable like this feels so wrong, and yet it works fine.">

  </a>
  <figcaption class="center">Managing the coax cable like this feels so wrong, and yet it works fine.</figcaption>
</figure>

<p>My setup is also quite flexible, so in case I need more resources, I can get
more Zimaboards and make them serve different purposes. However, it&rsquo;s more likely
that I&rsquo;m going to discover a new toy to experiment and play with by the time
I run out of resources on this one.</p>
<h2 id="2024-08-20-update">
  <a class="heading-anchor" href="#2024-08-20-update">2024-08-20 update<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 Zimaboard for over half a year, but decided to switch back to
the <a href="/posts/2022/01/17/asrock-x300-future-of-desktops/">ASRock Deskmini X300.</a></p>
<p>I still love the low power consumption and the expandability, but I ended up putting more load on the system than I
initially anticipated CPU-wise (running over 20 different Docker containers, some heavy). Should&rsquo;ve guessed that it would happen eventually.</p>
<p>If it came with an embedded AMD Ryzen APU, then that would probably change things up quite a bit.</p>
<p>Zimaboard: still the closest thing to my dream home server, but it&rsquo;s that last little bit of performance being missing
that gets me. If your needs are moderate or low, then it&rsquo;s still a fantastic option, if the price is right.</p>
<p>My eyes are now on
the <a href="https://nascompares.com/2024/06/10/the-asustor-flashstor-gen2-performance-and-pci-lanes/">Asustor Flashstor Gen 2</a>
machines.
Up to 12 NVMe SSD-s plus 4 cores of AMD Ryzen goodness sounds too good to be true. Let&rsquo;s see what the reviews will say
once it&rsquo;s out.</p>
]]></content:encoded></item><item><title>Dell Latitude 5411: the Linux compatibility sweet spot</title><link>https://ounapuu.ee/posts/2023/04/28/dell-latitude-5411/</link><pubDate>Fri, 28 Apr 2023 06:00:00 +0300</pubDate><author>ihavesomethoughtsonyourblog@ounapuu.ee (Herman Õunapuu)</author><guid>https://ounapuu.ee/posts/2023/04/28/dell-latitude-5411/</guid><description>It's a jet engine with an integrated furnace, but at the same time it fits into the Linux compatibility sweet spot. Not great, not terrible.</description><content:encoded><![CDATA[<img src="https://ounapuu.ee/posts/2023/04/28/dell-latitude-5411/media/cover_hu_597bd29d05cc41fb.jpg" width="1200" height="630" alt="Dell Latitude 5411: the Linux compatibility sweet spot" /><p><em>Oh boy, here I go testing a new laptop again!</em></p>
<p>Well, it <em>was</em> new back in 2020.</p>
<p>You might remember <a href="/posts/2022/01/09/why-i-went-back-to-using-a-thinkpad-from-2012/">my article on why I went back to a ThinkPad T430 in 2022</a>.
Or that other time when I got a new HP laptop for testing and got so frustrated that <a href="/posts/2022/11/21/hp-elitebook-845-g9/">I wrote about it</a>.</p>
<p>Well, today I&rsquo;m writing about the <a href="https://www.dell.com/en-nz/shop/business-laptop-notebook-computers/latitude-5411-business-laptop/spd/latitude-14-5411-laptop">Dell Latitude 5411</a>.</p>
<p>It&rsquo;s not the newest laptop in the world, but I decided to give it a go because of a few reasons:</p>
<ul>
<li>nobody wanted one at work due to the reputation of this laptop (sounds like a jet engine)</li>
<li>it&rsquo;s almost 3 years old at this point, which is the Linux compatibility sweet spot (in theory)</li>
<li>there were some changes coming to the office, which meant more flexible seating arrangements and everything
being designed around USB-C, and I wanted to continue my employment at the same company which might have been tricky
with a ThinkPad T430</li>
</ul>
<p>And that&rsquo;s how I ended up with one.</p>
<h2 id="the-linux-compatibility-sweet-spot">
  <a class="heading-anchor" href="#the-linux-compatibility-sweet-spot">The Linux compatibility sweet spot<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 spent any time using new hardware on Linux, then you probably know how painful it can be.
You might get lucky and receive hardware that has support right from the get-go, but in most cases
there are issues around that may or may not get fixed with time.</p>
<p>If you take the same device a couple of years later, it&rsquo;s highly likely that the Linux support on it
will be much better. The price of the device will also be much lower than before, especially if you get
it on the second hand market.</p>
<p>Any machine that falls into this time window is what I like to call &ldquo;the Linux compatibility sweet spot&rdquo;.
This Dell happens to be one such machine.</p>
<p>Here&rsquo;s a quick rundown of some specifications:</p>
<ul>
<li>CPU: Intel Core i7-10850H 6C/12T, 2.7 GHz/ 5.1 GHz</li>
<li>RAM: 32GB DDR4</li>
<li>SSD: 512 GB NVMe</li>
<li>OS: Fedora Linux 38</li>
<li>Thunderbolt support</li>
<li>Wi-Fi, Ethernet based on Intel chips</li>
</ul>
<p>The Dell Latitude 5411 is powerful, and the components in it seem to be working just fine under Linux.
The USB-C port has not had major issues in a work environment, and it also works tolerably with a Dell WD19TB Thunderbolt 3
dock. My ultrawide monitor works, the Ethernet port on the dock can push gigabit speeds, and USB 3 ports work as expected.</p>
<p>Honestly, that&rsquo;s pretty much it regarding compatibility. It just works <em>most of the time</em>, and that&rsquo;s why I like this machine.</p>
<h2 id="oh-god-the-noise">
  <a class="heading-anchor" href="#oh-god-the-noise">Oh god, the noise<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 everything about this machine is ideal, though.</p>
<p>One of the first things I noticed with this machine is some kind of electrical noise. Some call it &ldquo;coil whine&rdquo;,
but all I know is that it&rsquo;s this high-pitched squealing that&rsquo;s coming from the laptop. Based on some searching
and personal testing I can confirm that the noise is related to the CPU switching between idle and really high turbo boost speeds very quickly. If you remember
the spec sheet, you&rsquo;ll know that this CPU can reach <strong>5.1 GHz</strong>. The noise is apparent whenever there&rsquo;s a load
on the CPU, and it&rsquo;s probably the sound of the power delivery components screaming in pain to deliver all this power
that this furnace of a CPU requires.</p>
<p>There is a workaround to the electrical noise: try running the CPU at a lower speed. You can do that by disabling
Intel Turbo Boost, for example. There&rsquo;s an UEFI setting for that, but on Fedora Linux 38 there&rsquo;s an even easier
option in the form of the &ldquo;Power Profiles&rdquo; setting. When running the CPU slower, the noise is much less severe.</p>









<figure class="center">
  <a href="/posts/2023/04/28/dell-latitude-5411/media/image-1.png">
    <img src="/posts/2023/04/28/dell-latitude-5411/media/image-1_hu_28dd5e6897c6cb89.webp"
     width="494"
     height="492"
     loading="lazy"
     decoding="async"
     alt="Power Profiles in GNOME 44.">

  </a>
  <figcaption class="center">Power Profiles in GNOME 44.</figcaption>
</figure>

<p>This machine got the reputation of being a jet engine at work, and I agree with those people as this thing can
be damn loud even when it&rsquo;s seemingly not doing much. This is a result of the CPU demanding a lot of power and the
cooling solution not being able to catch up. I feel that the stock fan curve is quite aggressive to prevent
any reliability issues after long-term use.</p>
<p>If you have the same laptop and are looking for a fix to that issue, then you&rsquo;re in luck!
There are plenty of solutions out there and I am personally a fan of <a href="https://wiki.archlinux.org/title/fan_speed_control#Dell_laptops">this Arch Wiki section</a>.
I use <a href="https://github.com/TomFreudenberg/dell-bios-fan-control">dell-bios-fan-control</a> to be able to control
the fan speed myself, and a simple script to fine-tune the behaviour of the system. The script looks something like
this:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span><span style="color:#75715e">#!/bin/bash
</span></span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>set -e
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>echo <span style="color:#e6db74">&#34;Finding device path.&#34;</span>
</span></span><span style="display:flex;"><span>device_path<span style="color:#f92672">=</span><span style="color:#66d9ef">$(</span>echo /sys/devices/platform/dell_smm_hwmon/hwmon/hwmon*<span style="color:#66d9ef">)</span>
</span></span><span style="display:flex;"><span>echo <span style="color:#e6db74">&#34;Device path: </span>$device_path<span style="color:#e6db74">&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>echo <span style="color:#e6db74">&#34;Testing existence of paths.&#34;</span>
</span></span><span style="display:flex;"><span>cat <span style="color:#e6db74">&#34;</span>$device_path<span style="color:#e6db74">&#34;</span>/temp1_input
</span></span><span style="display:flex;"><span>cat <span style="color:#e6db74">&#34;</span>$device_path<span style="color:#e6db74">&#34;</span>/pwm1
</span></span><span style="display:flex;"><span>echo <span style="color:#e6db74">&#34;Testing existence of paths done.&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>echo <span style="color:#e6db74">&#34;Disabling Dell stock BIOS fan control.&#34;</span>
</span></span><span style="display:flex;"><span>/root/.local/bin/dell-bios-fan-control <span style="color:#ae81ff">0</span>
</span></span><span style="display:flex;"><span>echo <span style="color:#e6db74">&#34;Done!&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">while</span> true; <span style="color:#66d9ef">do</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  temp<span style="color:#f92672">=</span><span style="color:#66d9ef">$(</span>cat <span style="color:#e6db74">&#34;</span>$device_path<span style="color:#e6db74">&#34;</span>/temp1_input<span style="color:#66d9ef">)</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  <span style="color:#75715e"># Only two fan speed levels seem to exist, anything above 200 is basically</span>
</span></span><span style="display:flex;"><span>  <span style="color:#75715e"># equivalent to full speed.</span>
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">if</span> <span style="color:#f92672">((</span>temp &gt; 50000<span style="color:#f92672">))</span>; <span style="color:#66d9ef">then</span>
</span></span><span style="display:flex;"><span>    echo <span style="color:#ae81ff">64</span> &gt;<span style="color:#e6db74">&#34;</span>$device_path<span style="color:#e6db74">&#34;</span>/pwm1
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">else</span>
</span></span><span style="display:flex;"><span>    echo <span style="color:#ae81ff">0</span> &gt;<span style="color:#e6db74">&#34;</span>$device_path<span style="color:#e6db74">&#34;</span>/pwm1
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">fi</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  sleep <span style="color:#ae81ff">15</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">done</span>
</span></span></code></pre></div><p>The CPU is already temperature limited even in the stock configuration and will throttle under load, which should
mean that running the machine at a lower fan speed is just fine. Let&rsquo;s hope that I&rsquo;m right.</p>
<h2 id="the-damn-usb-c-port">
  <a class="heading-anchor" href="#the-damn-usb-c-port">The damn USB-C port<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>While the USB-C port generally works well, I do still get annoyed with it. When connecting it to my
Dell WD19TB Thunderbolt 3 dock, there&rsquo;s a good chance that it will do nothing but charge. Restarting the machine
with the dock connected will usually work, but it does take away from the portability of the setup.</p>
<p>I&rsquo;m convinced at this point that USB-C is a cursed standard and will never &ldquo;just work&rdquo;. If you disagree, then
please look up any article that tries to explain how USB-C works and all the things you have to keep in
mind if you want to buy a damn cable for your device that does what you want. And then add Thunderbolt to the mix.</p>
<p>If this aspect starts becoming very annoying, then it might become a dealbreaker for me, but right now it happens
infrequently enough that I can ignore it.</p>
<p>Oh, wait, it happened again while writing this article. Damn it all.</p>
<h2 id="other-notes">
  <a class="heading-anchor" href="#other-notes">Other notes<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>Here&rsquo;s a rundown of some observations that I&rsquo;ve made while using this machine:</p>
<ul>
<li>you can actually boot from the microSD card, which is nice</li>
<li>if you dual boot Fedora (two completely separate installations), then you&rsquo;ll get two Fedora entries
in the boot options list, and although the names are identical, you can set a preferred boot order just fine</li>
<li>keyboard and touchpad are not the best things out there, but they are at the very least tolerable</li>
<li>cannot say the same about the <a href="https://xkcd.com/243/">clit mouse</a>, it&rsquo;s not that good</li>
<li>battery life is what I expected from a laptop that&rsquo;s not an Apple M1/M2 based laptop: 2-4 hours of use when doing
any real work, and up to 8 hours if your work involves staring at the screen with the brightness set to low and Wi-Fi/Bluetooth
turned off</li>
<li>lowest power draw I observed with <code>upower</code> was around 6 watts</li>
<li>this machine has enough power to be a solid desktop replacement for software development</li>
<li>the above is true even when you switch turbo boost off, you still have 6 cores running at 2.7 GHz!</li>
<li>never managed to overheat the machine, even if I accidentally forgot to turn the laptop fan back on
while running heavy loads (CPU throttled to around 2.2-2.4 GHz, which is impressive!), or when I accidentally
put it in my backpack while it was still running</li>
<li>&ldquo;power on with USB-C connected&rdquo; or any other UEFI setting with a similar purpose should be avoided, you
<strong>will</strong> end up putting it into your backpack while it&rsquo;s running</li>
<li>this laptop has a full sized Ethernet port, which is incredibly handy for many IT professionals</li>
<li>it even has the old Dell barrel plug charging port, which is great for situations where you&rsquo;ve damaged the only
USB-C port on the laptop</li>
<li>I don&rsquo;t have too much faith in the construction of the machine, some parts feel very plasticky and might not hold up
well 5-10 years from now</li>
<li>I was the one who actually made the recommendation to purchase this particular laptop model at my current job
back in 2020 due to the fleet of ThinkPads being compatibility nightmares with the monitors and docks available, and
in that regard it was an improvement. Shame about the fan and electrical noise.</li>
</ul>
<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>Will I end up switching to a modern laptop now? Maybe. I&rsquo;ve done so for my day job already, but the jury is still
out on whether I might end up with this particular model for my personal use (especially because of the damn Thunderbolt
dock issue). There are alternative laptops out there with similar pricing that are also in this Linux compatibility sweet spot.</p>
<p>Should you get one? If the price is right and you don&rsquo;t mind applying the workarounds for the issues I mentioned, then
go for it!</p>
<p>I have restored some faith in modern laptops now. They all suck in different ways, but this one is
not the worst one, and that&rsquo;s good enough for me. Probably. I&rsquo;ll keep my ThinkPad T430 in an easy to reach spot, just in
case.</p>
]]></content:encoded></item><item><title>TOMO M4: probably the coolest power bank I've owned</title><link>https://ounapuu.ee/posts/2023/03/03/tomo-m4-powerbank/</link><pubDate>Fri, 03 Mar 2023 06:00:00 +0200</pubDate><author>ihavesomethoughtsonyourblog@ounapuu.ee (Herman Õunapuu)</author><guid>https://ounapuu.ee/posts/2023/03/03/tomo-m4-powerbank/</guid><description>All the reasons why I find this particular power bank to be really neat and why it could realistically be the last power bank I buy.</description><content:encoded><![CDATA[<img src="https://ounapuu.ee/posts/2023/03/03/tomo-m4-powerbank/media/cover_hu_7db932d60f3158c.jpg" width="1200" height="630" alt="TOMO M4: probably the coolest power bank I've owned" /><p>A friend once showed me a power bank that was so cool that I had to get one
myself. Ended up getting two, and here&rsquo;s why.</p>
<p>This post is <strong>not</strong> sponsored.</p>
<h2 id="removable-batteries">
  <a class="heading-anchor" href="#removable-batteries">Removable batteries<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>Let&rsquo;s start with the feature that I appreciate the most: removable batteries!
The TOMO M4 accepts up to 4 18650 lithium ion battery cells, which are very
common nowadays and can be purchased from lots of retailers. You can also mix
and match cells and even run the power bank with 1-3 cells in it.</p>









<figure class="center">
  <a href="/posts/2023/03/03/tomo-m4-powerbank/media/image-0.jpg">
    <img src="/posts/2023/03/03/tomo-m4-powerbank/media/image-0_hu_9e4c88835b1afeeb.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="TOMO M4 running on two battery cells.">

  </a>
  <figcaption class="center">TOMO M4 running on two battery cells.</figcaption>
</figure>

<p>If you&rsquo;re feeling adventurous and you know what you&rsquo;re doing, you could in
theory take an used battery pack from a device that utilises 18650 lithium ion
cells, disassemble it completely and use the healthier cells inside power banks
like this one. They might not be healthy enough to power bigger
devices, such as e-scooters, but they might be just enough to charge your phone.
This is something I want to try out eventually with things like old ThinkPad
laptop batteries since the risk of burning the whole building down is smaller
with those.</p>
<p>I&rsquo;ve previously bought cheap &ldquo;10000 mAh&rdquo; power banks from brands like Xiaomi
and have had mixed experiences. Yeah, they usually get the job done, but should
the battery die in it, then you&rsquo;re probably just going to throw the thing away
because the battery is not easily replaceable. That&rsquo;s really wasteful.</p>
<p>With the TOMO M4 it&rsquo;s a matter of sliding the plastic case open and just
replacing the cells, similar to what you&rsquo;d do for a TV remote with AA batteries.
It&rsquo;s so easy that even your grandma could do it!</p>
<p>I don&rsquo;t understand why it&rsquo;s acceptable to enclose consumable items like
batteries in devices that are difficult or impossible to open up (the real
reason is probably profits, right?). The battery <strong>will die</strong> at some point, no
matter how well you take care of it.</p>
<p>If the rest of the device holds up, then the TOMO M4 could realistically be the
last power bank I buy.</p>
<h2 id="the-cool-factor">
  <a class="heading-anchor" href="#the-cool-factor">The cool 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>Now that we&rsquo;re done with the most practical aspect, let&rsquo;s look at the display.
Once you power it on, you&rsquo;ll see the green-lit LCD screen light up. The screen
shows the charge level of the individual cells during standby. While charging,
you&rsquo;ll see a nice little animation.</p>
<p>But that&rsquo;s not the coolest part. If you connect a device to one of the USB ports,
it will show the voltage and current that the power bank is outputting. Multiply
those two numbers and you can actually see the wattage that a device is pulling.</p>









<figure class="center">
  <a href="/posts/2023/03/03/tomo-m4-powerbank/media/image-1.jpg">
    <img src="/posts/2023/03/03/tomo-m4-powerbank/media/image-1_hu_5e8efaa315dddc79.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="The display does exhibit ghosting, which is most noticeable during charging.">

  </a>
  <figcaption class="center">The display does exhibit ghosting, which is most noticeable during charging.</figcaption>
</figure>

<p>Not everyone probably appreciates this as much as I do, but I just find it
to be really cool.</p>
<h2 id="the-downsides">
  <a class="heading-anchor" href="#the-downsides">The downsides<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 some things I&rsquo;ve noticed about this power bank that are less than
ideal.</p>
<p>The charging port is micro-USB, which is not that great in 2023. Out of all the
IT gear that I own, this power bank is the only regularly used item that
charges via that port. I&rsquo;d love to see this replaced with USB-C port, just for
the sake of uniformity. It&rsquo;s probably possible to modify this power bank and
replace the charging port with an USB-C port, but I have not got around to
doing that yet.</p>
<p>The display backlight can be turned off with a single click of the power button.
However, if you&rsquo;re charging a device that is close to being fully charged and
starts trickle-charging, the display backlight will turn back on. This is less
than ideal in situations where the backlight illumination bothers you, such as
during night.</p>
<p>The detailed analysis that I mention in the next paragraph mentioned that this
power bank <em>&ldquo;Can be used as UPS&rdquo;</em>. I put this to the test with two devices:
Raspberry Pi model B+ and a LattePanda V1. The Raspberry Pi struggled a lot and
the red power LED flickered constantly, indicating issues with power delivery.
The LattePanda V1 booted up and ran nicely for a while, but under a bigger load
it threw some errors into kernel logs and eventually locked up completely. On
a functional level this power bank can probably act as a UPS, but in practice
it did not work out for me. Other factors, such as the USB cable used and/or
the lithium ion cells that I used in the power bank, might have also influenced
the results of this quick test.</p>









<figure class="center">
  <a href="/posts/2023/03/03/tomo-m4-powerbank/media/image-2.jpg">
    <img src="/posts/2023/03/03/tomo-m4-powerbank/media/image-2_hu_bcb323ca35012844.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="LattePanda V1, powered by the TOMO M4.">

  </a>
  <figcaption class="center">LattePanda V1, powered by the TOMO M4.</figcaption>
</figure>

<h2 id="the-technical-details-in-detail">
  <a class="heading-anchor" href="#the-technical-details-in-detail">The technical details, in detail<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;re interested in all the technical details for this particular power bank,
then definitely check out <a href="https://lygte-info.dk/review/Review%20USB%20battery%20box%20Tomo%20M4%20UK.html">this review on lygte-info.dk</a>.
It&rsquo;s a very detailed overview of the capabilities of this power bank, its
behaviour under different circumstances and a bunch of measurements and
explanations to back it all up.</p>
<p>I also like the way they phrased the verdict: <em>&ldquo;I will rate it as acceptable.&rdquo;</em>
Short and concise.</p>
<p>The author also reviews lots of other products and has the <a href="https://lygte-info.dk/info/Review%20UK.html">reviewing process
documented in detail.</a></p>
<h2 id="closing-thoughts">
  <a class="heading-anchor" href="#closing-thoughts">Closing thoughts<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>In general, I&rsquo;m very happy with this power bank. Although I&rsquo;d probably not
recommend it as an UPS for low-power computers, I&rsquo;d happily recommend this to
someone who needs a simple power bank that they won&rsquo;t have to throw away
after a few years.</p>
]]></content:encoded></item><item><title>LattePanda V1 - my experience with a Raspberry Pi alternative</title><link>https://ounapuu.ee/posts/2023/02/28/lattepanda-v1/</link><pubDate>Tue, 28 Feb 2023 09:00:00 +0200</pubDate><author>ihavesomethoughtsonyourblog@ounapuu.ee (Herman Õunapuu)</author><guid>https://ounapuu.ee/posts/2023/02/28/lattepanda-v1/</guid><description>I got a LattePanda V1 and gave it a go as a Raspberry Pi replacement for my self-hosting setup. Here's how it went.</description><content:encoded><![CDATA[<img src="https://ounapuu.ee/posts/2023/02/28/lattepanda-v1/media/cover_hu_d0bf1305a5f9620b.jpg" width="1200" height="630" alt="LattePanda V1 - my experience with a Raspberry Pi alternative" /><p>As with many homelab experiments around 2022/2023, it all started with Raspberry Pi-s
being either out of stock or absurdly overpriced.</p>
<p>I once noticed a listing for a <a href="https://www.lattepanda.com/lattepanda-v1">LattePanda V1</a> on a local auction site.
The price was reasonable at 45 EUR, and after I looked at the specifications, I
had to get one to play around with.</p>
<p>The auction site usually sells used items, but this LattePanda V1 was brand new
in box, which surprised me. I got the 2GB RAM/32GB eMMC option.</p>
<p>I put the LattePanda through its paces, and here&rsquo;s what I learned.</p>
<p>Please note that my use cases are more on the software side, I did not try out
the hardware capabilities that SBC-s are also associated with (GPIO, camera/display
ports etc).</p>
<h2 id="the-hardware">
  <a class="heading-anchor" href="#the-hardware">The hardware<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>What makes the LattePanda V1 special is that it&rsquo;s based off of an x86 CPU.
Mine came with an <a href="https://ark.intel.com/content/www/us/en/ark/products/93361/intel-atom-x5z8350-processor-2m-cache-up-to-1-92-ghz.html">Intel Atom x5-Z8350</a>.
4 cores, not very fast ones, but similar or better to what you&rsquo;d find in a
Raspberry Pi 4. Most single-board computers usually come with an ARM-based CPU.</p>
<p>The board behaves like any normal PC. You power it on, you see the LattePanda
logo, and the OS just starts up. Smashing the &ldquo;Delete&rdquo; key during the boot
will direct you to the UEFI settings. Since this board is marketed towards
the technical crowd, it has so many settings that you can play with.
Definitely more than what I&rsquo;d know to do with.</p>
<p>The board comes with Windows 10 preinstalled. I booted it up and gave it a go,
and it was slow as molasses while it downloaded the latest updates. At one
point I reinstalled Windows 10 and ran into issues. It &ldquo;works&rdquo;, but I had trouble
getting any Intel GPU drivers installed on it, which rendered it almost useless
for any media playback use case that I could have used it for.</p>
<p>The port selection is okay. It comes with 100 Mbit/s Ethernet, one USB 3.0 port
and two USB 2.0 ports. I could get around 350 MB/s out of the USB 3 port with
an external SSD, and the USB 2 ports pulled anywhere between 15-40 MB/s,
depending on my luck. If you fancy a gigabit connection, then an USB-to-Ethernet
adapter might do the trick.</p>
<p>Adding one external HDD or SSD over USB is okay and works well, but after
adding a second one I noticed issues with either one of the disks not receiving
enough power. If you intend to use the LattePanda V1 as the brains for a cheap
NAS, then use drives that are powered externally.</p>
<p>The eMMC storage on the board is decent. Regarding performance it&rsquo;s somewhere
between a hard drive and a proper SSD, and the sequential read speeds max out
around 150 MB/s. My main concern with it is the durability. The eMMC chip is probably hidden
behind the metal shielding on the board and replacing it (if that is even
possible) might turn out to be tricky. <code>ls -lah /dev/disk/by-id/</code> lists the
eMMC chip as <code>mmc-DA4032</code>, which a little bit of Googling refers to it being a
SanDisk chip.</p>
<p>The microSD card port works, but either booting from the microSD card is not
possible or the board was a bit temperamental when I gave it a go with Ubuntu Server 22.04.</p>
<p>The board runs hot in its barebones configuration, any decent load over a longer time period
will result in the CPU throttling itself. I recommend rigging up a metal
heat sink to the bottom of the board to avoid throttling and stability issues
under very high load. A thermal pad, a piece of metal, and a bunch of zip ties
will do wonders.</p>









<figure class="center">
  <a href="/posts/2023/02/28/lattepanda-v1/media/image-1.jpg">
    <img src="/posts/2023/02/28/lattepanda-v1/media/image-1_hu_e1f7f36d88fce326.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="Do not look at the bend.">

  </a>
  <figcaption class="center">Do not look at the bend.</figcaption>
</figure>

<h2 id="the-linux-experience">
  <a class="heading-anchor" href="#the-linux-experience">The Linux 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>When experimenting with Linux, I found a couple of annoyances. The LattePanda V1
seems to have a display connector on board. However, in Linux it turned out to
be an annoyance as the system always presented a 1024x768 display being
connected to the system. Booting into a Fedora Linux liveUSB environment will
lead you to staring a blank view with only the wallpaper present.
Playing with settings in UEFI did not lead to any improvements. What works is
<a href="https://unix.stackexchange.com/a/526619">adding a kernel parameter</a>:
<code>video=DSI-1:d</code>. With Fedora Linux, if you apply this fix in GRUB when first
booting into the liveUSB environment, it will persist after the installation
is done.</p>
<p>Once I had Fedora Linux booted up, I did not have a good time. The display
flickered when I dragged the mouse near the edges and the performance was awful.
It didn&rsquo;t take long for the desktop session to crash.</p>
<p>One of the main reasons I wanted to experiment with this setup was the low power
usage of this board. The LattePanda V1 idles at around 3 watts, and under a high
CPU load generated with <code>stress -c 4</code> I could get it to 5-6 watts. This made it
a great candidate for running this website and Wireguard VPN 24/7 at home.
I ended up installing Ubuntu Server 22.04 on it and actually ran this website
off of it for about a week or so.</p>
<p>The reason I stopped using the LattePanda V1 for that purpose was the
performance. The 100 Mbit/s Ethernet wasn&rsquo;t a disaster, but it did set limits
to how much traffic I could push through the board. What made me reconsider was
the CPU performance. Simply put: SSL encryption speeds were about 5-10x slower
than on my ThinkPad T430 that ran as a server before.</p>
<p>My performance testing wasn&rsquo;t scientific or anything, but I did run simple tests.
One of the involved running <code>curl</code> against resources, such as an image on my
blog, in an infinite loop and over multiple threads. The ThinkPad T430 peaked at
around 650 Mbit/s of network bandwidth while the LattePanda V1 struggled at
around 60 Mbit/s.</p>
<p>After looking for some other benchmarking options that I could set up really
quickly, I also gave <a href="https://serverfault.com/a/160807">ApacheBenchmark a go</a>.
This more-or-less confirmed my findings and the requests per second results
are the following:</p>
<ul>
<li>ThinkPad T430: 301.72</li>
<li>LattePanda V1: 55.86</li>
</ul>









<figure class="center">
  <a href="/posts/2023/02/28/lattepanda-v1/media/bench-T430.png">
    <img src="/posts/2023/02/28/lattepanda-v1/media/bench-T430_hu_558c4a4c431b3448.webp"
     width="626"
     height="733"
     loading="lazy"
     decoding="async"
     alt="ApacheBenchmark results for the ThinkPad T430.">

  </a>
  <figcaption class="center">ApacheBenchmark results for the ThinkPad T430.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2023/02/28/lattepanda-v1/media/bench-lattepanda.png">
    <img src="/posts/2023/02/28/lattepanda-v1/media/bench-lattepanda_hu_84fa5fa602aa54cc.webp"
     width="626"
     height="708"
     loading="lazy"
     decoding="async"
     alt="ApacheBenchmark results for the LattePanda V1.">

  </a>
  <figcaption class="center">ApacheBenchmark results for the LattePanda V1.</figcaption>
</figure>

<p>The LattePanda V1 was over 5 times slower in that test. With a slow internet
uplink this might not matter much, though.</p>
<p>I ended up putting the T430 back in service after doing more calculations.
One idea I had with the LattePanda V1 was to have that run 24/7 due to its
low idle power usage and have another beefy server run during certain hours.
I liked that idea until I calculated the difference in power savings. Having
the main server with around 12 W of idle power turn off for 6 hours and the
LattePanda running at the same time would have actually increased the total
power consumption of the setup compared to having the main server running 24/7.</p>
<p>The math will make sense if your main server uses much more power. Most desktop
PC-s that I have seen idle around 35-50 W and rack-mounted servers use even
more than that, so in those situations this might make more sense. <a href="https://maximiliangolla.com/blog/2022-10-wol-plex-server/">Or you can
whip up a solution that starts and stops machines in your homelab on-demand.</a></p>
<p>Oh, and don&rsquo;t expect to run CPU or GPU based transcoding off of this thing with
Jellyfin. It works okay for certain video formats and resolutions, but a 1080p
H.265 video transcoded to H.264 is just not fast enough on this machine.</p>
<h2 id="a-suitable-use-case">
  <a class="heading-anchor" href="#a-suitable-use-case">A suitable use case<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 might change my mind at one point and give the LattePanda a go again as a
low power web server. <a href="/posts/2022/11/01/finding-use-case-for-raspberry-pi/">I hate unused hardware</a>,
which is why this LattePanda V1 is now serving as an offsite backup. The USB 3
port makes sense for attaching a bigger storage device and if you run ZFS, you
can also send your whole filesystem to it with <code>zfs send/receive</code> or <code>syncoid</code>.
I haven&rsquo;t had much luck with ARM and ZFS, but with the LattePanda and its
x86-based CPU I have not had issues.</p>









<figure class="center">
  <a href="/posts/2023/02/28/lattepanda-v1/media/image-2.jpg">
    <img src="/posts/2023/02/28/lattepanda-v1/media/image-2_hu_6b11150490335f68.webp"
     width="600"
     height="800"
     loading="lazy"
     decoding="async"
     alt="LattePanda V1 in its final form: a backup endpoint.">

  </a>
  <figcaption class="center">LattePanda V1 in its final form: a backup endpoint.</figcaption>
</figure>

<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>All-in-all, it&rsquo;s a neat little board that shows signs of instability from time to time.
If you intend to just run Ubuntu Server on it and your workloads are not
very performance critical, then it might work out well for you. Think of it
like a juiced-up Raspberry Pi 4 to get an idea of what it might be suitable for
regarding performance.</p>
<p>It did not fit the use case I intended to use it for, but I&rsquo;m still happy that
I could play around with this board. It was fun!</p>
]]></content:encoded></item><item><title>I have a 'Dall UD19PB ThundeRbglt Dock': my experience with the HP Elitebook 845 G9</title><link>https://ounapuu.ee/posts/2022/11/21/hp-elitebook-845-g9/</link><pubDate>Mon, 21 Nov 2022 07:00:00 +0200</pubDate><author>ihavesomethoughtsonyourblog@ounapuu.ee (Herman Õunapuu)</author><guid>https://ounapuu.ee/posts/2022/11/21/hp-elitebook-845-g9/</guid><description>I've tried out newer laptops before and it was nothing short of a disaster. Is this HP any different, or do I need to go back to my ThinkPad T430 again?</description><content:encoded><![CDATA[<img src="https://ounapuu.ee/posts/2022/11/21/hp-elitebook-845-g9/media/cover_hu_f904b2426d99b085.jpg" width="1200" height="630" alt="I have a 'Dall UD19PB ThundeRbglt Dock': my experience with the HP Elitebook 845 G9" /><p>I&rsquo;ve decided to give a new laptop a test drive, mainly because I had the
opportunity at work, and also out of <a href="/posts/2022/01/09/why-i-went-back-to-using-a-thinkpad-from-2012/">morbid curiosity.</a></p>
<p>It&rsquo;s the HP Elitebook 845 G9, and it has pretty good specifications:</p>
<ul>
<li>CPU: <a href="https://www.amd.com/en/products/apu/amd-ryzen-7-6800u">AMD Ryzen 7 6800U</a></li>
<li>RAM: 2x16GB DDR5</li>
<li>Storage: 512GB KIOXIA NVMe SSD (KBG50ZNV512G)</li>
<li>OS: Fedora 37, kernel version 6.0.8</li>
</ul>
<p>This laptop was also <a href="https://youtu.be/m8lsUvil_S8">shown in a recent LinusTechTips video</a>
and praised for its ease of repair and maintenance.</p>
<p>However, I can&rsquo;t seem to enjoy nice things. This attempt at using a newer
laptop has had some frustrating challenges. Perhaps the common denominator is
Linux. Or me. Can&rsquo;t rule anything out.</p>
<p>This is simply my experience with this laptop, including my attempts to overcome
certain issues with workarounds. If you find something that&rsquo;s factually
wrong about any part of this post, then please reach out!</p>
<h2 id="wi-fi">
  <a class="heading-anchor" href="#wi-fi">Wi-Fi<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 all began with the Wi-Fi card not working. The card <em>can</em> be replaced, but
the results can be mixed.</p>
<p>An Intel Wi-Fi card that I had lying around would not be recognized
by the system at all. The situation was fixed by the reseller who replaced the
Realtek RTL8852BE chip with another Realtek one, this time with the Realtek
RTL8822CE.</p>
<p><a href="https://github.com/lwfinger/rtw8852be">Yes, there exist drivers that you can install,</a>
but it&rsquo;s far from an ideal solution. You will have to reinstall the Wi-Fi driver
after every kernel update, and the kernel updates frequently on Fedora Linux.</p>
<p>The HP website allows you to pick between a Realtek and Qualcomm Wi-Fi chip. My
recommendation is to go with the Qualcomm option because the Realtek RTL8852BE
does not work out of the box.</p>
<h2 id="airplane-mode">
  <a class="heading-anchor" href="#airplane-mode">Airplane 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>This is an issue I didn&rsquo;t think I would ever have to worry about.</p>
<p>The laptop would switch itself to airplane mode at random on boot. Not on every
boot, but about 50% of the time. When you try to disable Airplane mode from
GNOME settings, it would flip back on again, no matter how often you tried.</p>
<p>To turn Airplane mode off properly, you have to use the Airplane mode keyboard
shortcut, and even then it might take an attempt or two.</p>
<p><a href="https://h30434.www3.hp.com/t5/Notebook-Operating-System-and-Recovery/EliteBook-845-G9-BIOS-Update-Causing-Problems/td-p/8490697">Some HP users suspect that the issue might be related to a botched firmware
update.</a>
There&rsquo;s a kernel patch in the pipeline, and some users say that blacklisting
the <code>hp_wmi</code> kernel module could also fix the issue.</p>
<p><a href="https://askubuntu.com/a/965596">Others say that this behaviour might be related to certain events being triggered
on the laptop, such as lid closing or the screen rotating.</a>
The proposed fix did not work to resolve this issue on my laptop.</p>
<p>Blacklisting the <code>hp_wmi</code> kernel module was what improved the situation for me.</p>
<h2 id="usb4-and-thunderbolt">
  <a class="heading-anchor" href="#usb4-and-thunderbolt">USB4 and Thunderbolt<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 laptop is noteworthy due to its support for USB4, which brings with it
support for Thunderbolt, making it one of the first AMD-based laptops to
properly support that feature.</p>
<p>At my current employer the general trend has been towards standardization:
every meeting room and desk has a single USB-C port that you plug into, and
you should be good to go.</p>
<p>I can confirm that USB-C docks seem to work quite well under Linux, especially
the one integrated into my Dell monitor at work.</p>
<p>I can also confirm that the Dell WD19TB Thunderbolt 3 dock does work.</p>
<p>On Windows 10.</p>
<p>Not on Linux though.</p>
<p>At some point the errors I saw in kernel logs got quite ridiculous.</p>









<figure class="center">
  <a href="/posts/2022/11/21/hp-elitebook-845-g9/media/dall.png">
    <img src="/posts/2022/11/21/hp-elitebook-845-g9/media/dall_hu_d728ef9e680cce65.webp"
     width="967"
     height="236"
     loading="lazy"
     decoding="async"
     alt="The device name reads like a counterfeit merchandise listing at Amazon.">

  </a>
  <figcaption class="center">The device name reads like a counterfeit merchandise listing at Amazon.</figcaption>
</figure>

<p>When reconnecting the port, the results were slightly different almost every time.</p>









<figure class="center">
  <a href="/posts/2022/11/21/hp-elitebook-845-g9/media/garbage-time.png">
    <img src="/posts/2022/11/21/hp-elitebook-845-g9/media/garbage-time_hu_da7d0962ae3ddfed.webp"
     width="976"
     height="132"
     loading="lazy"
     decoding="async"
     alt="I think the dock has suffered a stroke.">

  </a>
  <figcaption class="center">I think the dock has suffered a stroke.</figcaption>
</figure>

<p>The UEFI settings allow some control over the behaviour of the USB-C ports.
You can even disable Thunderbolt support and use them as plain USB-C ports with
DisplayPort support.</p>
<p>The behaviour of the dock would also be different depending on how you connect
it. If the dock is connected during boot, your USB devices and Ethernet port
will all be functional, but there&rsquo;s no display output. If you boot while the
dock is disconnected and connect it once you have reached the GUI, your display
will work, but you have no USB or Ethernet support.</p>
<p>Even if one of the two critical functions of the dock work, reconnecting the
cable will eventually result in nothing working. You also have a 50% chance of
the machine locking up completely.</p>
<p>The reasons for these issues can be any one of these:</p>
<ul>
<li>the proper kernel support is not there yet</li>
<li>HP messed something up with the latest UEFI update for Linux users</li>
<li>I was using it wrong</li>
</ul>
<h2 id="dell-wd19tb-thunderbolt-dock-workaround">
  <a class="heading-anchor" href="#dell-wd19tb-thunderbolt-dock-workaround">Dell WD19TB Thunderbolt dock workaround<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 multiple sessions of troubleshooting, I seem to have come up with a
solution that seems to work for my use case, which involves connecting a
couple of USB devices, an Ethernet cable, and one 1440p monitor. You&rsquo;re giving
up Thunderbolt capabilities and forcing the dock to fall back to USB+DP altmode
setting, but in return you&rsquo;ll get a setup that actually works.</p>
<p>To get the Dell WD19TB Thunderbolt dock working, do the following:</p>
<ul>
<li>go to UEFI settings and turn off Thunderbolt mode</li>
<li>save settings and reboot</li>
<li>connect your monitor over HDMI</li>
</ul>
<p>Yup, that was it. I could not get DisplayPort working. Only HDMI.</p>
<p>The UEFI settings do contain a setting that allows you to sacrifice
USB and Ethernet bandwidth to allow for higher resolution DP signals to be passed
through, but that&rsquo;s simply not acceptable to me. Based on the description, I
think that the setting forces all USB devices to run at USB 2.0 speeds.
This setting may fix the issue if you want to use DisplayPort, but I haven&rsquo;t
tried it yet.</p>
<h2 id="suspend">
  <a class="heading-anchor" href="#suspend">Suspend<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>Doesn&rsquo;t work. The screen will go black and the power button indicator will keep
blinking. Only way to break that cycle is to force the laptop to reset by
holding the power button down for an extended amount of time.</p>
<p>On Lenovo laptops I&rsquo;ve seen an option that allows you to change the S3 state
behaviour for Linux compatibility. I haven&rsquo;t found a way to do something
similar on the HP yet.</p>
<h2 id="stability">
  <a class="heading-anchor" href="#stability">Stability<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 straw that broke the camel&rsquo;s back. When playing back video, I
noticed issues with glitching and stuttering. The video would play fine, until
a frame froze for a few seconds, and then everything continued as normal.</p>
<p>What ruined everything for me were the random crashes that only occurred when
playing back video.</p>
<p>When I checked system logs from a previous boot (<code>journalctl -b -1</code>), I found
that something was up with the GPU driver.</p>









<figure class="center">
  <a href="/posts/2022/11/21/hp-elitebook-845-g9/media/amdgpubrr.png" aria-label="View full-size image">
    <img src="/posts/2022/11/21/hp-elitebook-845-g9/media/amdgpubrr_hu_2466209bebcde57b.webp"
     width="1280"
     height="289"
     loading="lazy"
     decoding="async"
     alt="">

  </a>
  
</figure>

<p>This was not a one-off event and once it had happened for the fourth time, I
gave up on this machine and switched back to my trusty ThinkPad T430.</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>Given enough time, I&rsquo;m sure that at least some of the issues will get fixed,
either with a kernel update or HP rolling out a UEFI update that fixes things
for Linux users.</p>
<p>It&rsquo;s also possible that a specific set of UEFI settings will contribute to
fixing any of the issues listed here. The number of combinations you can have
is too high for me to bother testing all of those, so I won&rsquo;t be doing that.</p>
<p>In its current state, I cannot recommend this laptop to Linux users. You <em>can</em>
get most things working, but you will still be incredibly frustrated with the
issues that remain.</p>
<p>Something has to change, and it&rsquo;s going to be how I choose hardware in the
future. Linux will stay, which means that the newest and &ldquo;greatest&rdquo; hardware
is off the table for me. Honestly, lagging behind the newest hardware 3-5 years
(or 10 in my case) doesn&rsquo;t sound too bad, you&rsquo;ll still get the performance
improvements at a fraction of the original price.</p>
<p>If that&rsquo;s what&rsquo;s necessary for a good Linux experience, then so be it.</p>
]]></content:encoded></item><item><title>Testing a cheap ExpressCard to NVMe SSD adapter on my ThinkPad T430</title><link>https://ounapuu.ee/posts/2022/10/04/testing-expresscard-nvme-ssd-adapter/</link><pubDate>Tue, 04 Oct 2022 05:00:00 +0300</pubDate><author>ihavesomethoughtsonyourblog@ounapuu.ee (Herman Õunapuu)</author><guid>https://ounapuu.ee/posts/2022/10/04/testing-expresscard-nvme-ssd-adapter/</guid><description>I got curious about an ExpressCard to NVMe M.2 NGFF adapter I saw on Reddit, so I got one to try out myself, ending up with a total of 4 SSD-s on my ThinkPad T430. Yes, four.</description><content:encoded><![CDATA[<img src="https://ounapuu.ee/media/cover_hu_4fe4cf2661554252.jpg" width="1200" height="630" alt="Testing a cheap ExpressCard to NVMe SSD adapter on my ThinkPad T430" /><p>I stumbled upon <a href="https://www.reddit.com/r/thinkpad/comments/urvkeb/expresscard_to_m2_nvme_key_m_adapter_from/">this post in /r/thinkpad</a>,
which got my attention. It showcases an ExpressCard to M.2 NGFF adapter that
they purchased from AliExpress. The adapter has a similar purpose to the one
designed by <a href="https://thinkmods.store/">thinkmods.store</a>, with the added bonus
that it could fit longer NVMe SSD-s if you didn&rsquo;t mind them sticking out of the
case. You could also order one instantly, so I did.</p>
<p>For those interested, the title of the listing at the time of writing of this
article is &ldquo;ExpressCard interface to m.2 NGFF nvme solid state disc x201 t430 hp8570 w520&rdquo;.
The listing I chose was <a href="https://www.aliexpress.com/item/1005002023877404.html?spm=a2g0o.order_list.0.0.74c21802cTrI3L">this one.</a>
I&rsquo;m not affiliated with the manufacturer or the seller in any way.</p>









<figure class="center">
  <a href="/posts/2022/10/04/testing-expresscard-nvme-ssd-adapter/media/0-cover.jpg">
    <img src="/posts/2022/10/04/testing-expresscard-nvme-ssd-adapter/media/0-cover_hu_b7132969bcfb8a95.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="Bits and pieces.">

  </a>
  <figcaption class="center">Bits and pieces.</figcaption>
</figure>

<h2 id="the-idea">
  <a class="heading-anchor" href="#the-idea">The idea<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 try to avoid buying things that I don&rsquo;t need, which is why I came up with an
excuse for getting this adapter: adding a cache SSD to my <a href="/posts/2022/05/10/thinkpad-as-a-home-server/">ThinkPad-as-a-server</a>.</p>
<p>The OS is running off of an mSATA SSD that I could theoretically use for the
same purpose, but eventually killing the SSD that also hosts the OS with constant
writes sounded like a really bad idea. I also didn&rsquo;t want to have excessive writes
on my pair of Samsung 870 QVO 4TB SATA SSD-s, because replacing those will be
quite expensive down the line.</p>
<p>Here&rsquo;s what we&rsquo;re working with:</p>
<ul>
<li><a href="https://sabrent.com/collections/memory-and-storage/products/sb-1342-512">Sabrent Rocket Nano NVMe 2242 SSD (512GB)</a></li>
<li>the aforementioned ExpressCard to M.2 NGFF adapter</li>
<li>ThinkPad T430 with an ExpressCard34 slot</li>
</ul>
<p>Quick word on the packaging: it was packaged in a small cardboard box, which
held up okay, but a more rough treatment of the box would probably have broken
the tiny PCB.</p>









<figure class="center">
  <a href="/posts/2022/10/04/testing-expresscard-nvme-ssd-adapter/media/1-parts.jpg">
    <img src="/posts/2022/10/04/testing-expresscard-nvme-ssd-adapter/media/1-parts_hu_392afbeee6a2ca65.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="The SSD, adapter PCB, and the case.">

  </a>
  <figcaption class="center">The SSD, adapter PCB, and the case.</figcaption>
</figure>

<h2 id="assembly">
  <a class="heading-anchor" href="#assembly">Assembly<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>According to comments I saw before purchasing the adapter, I expected the assembly
to be a bit tricky, and after assembling it I have to agree with that sentiment.</p>
<p>First, you&rsquo;ll have to squeeze the SSD in there. Unlike M.2 slots that are common
in laptops and desktops alike, this one requires you to horizontally push the SSD
in without breaking anything. Don&rsquo;t be afraid to use a bit of force here, but be
careful in how you apply it.</p>









<figure class="center">
  <a href="/posts/2022/10/04/testing-expresscard-nvme-ssd-adapter/media/2-assembly.jpg">
    <img src="/posts/2022/10/04/testing-expresscard-nvme-ssd-adapter/media/2-assembly_hu_2f837f858065178e.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="na-no">

  </a>
  <figcaption class="center">na-no</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2022/10/04/testing-expresscard-nvme-ssd-adapter/media/3-underside.jpg">
    <img src="/posts/2022/10/04/testing-expresscard-nvme-ssd-adapter/media/3-underside_hu_af7b21b7b9fbcb6f.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="Bottom of the adapter.">

  </a>
  <figcaption class="center">Bottom of the adapter.</figcaption>
</figure>

<p>After the SSD is in, screw it in properly and place the assembly on one of the
metal parts.</p>
<p>Now comes the fun part: you&rsquo;ll have to clip on the top part as well. My
recommendation is to first clip in the part that sits near the contact pins,
then the one at the other end of the adapter, and then push in the metal
shielding at the edges.</p>









<figure class="center">
  <a href="/posts/2022/10/04/testing-expresscard-nvme-ssd-adapter/media/4-assembled.jpg">
    <img src="/posts/2022/10/04/testing-expresscard-nvme-ssd-adapter/media/4-assembled_hu_fbd612045f68d2d4.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="The adapter, 100% assembled.">

  </a>
  <figcaption class="center">The adapter, 100% assembled.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2022/10/04/testing-expresscard-nvme-ssd-adapter/media/5-sideview.jpg">
    <img src="/posts/2022/10/04/testing-expresscard-nvme-ssd-adapter/media/5-sideview_hu_2ada239f212695b8.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="For some reason, mine ended up a bit crooked near the connector.">

  </a>
  <figcaption class="center">For some reason, mine ended up a bit crooked near the connector.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2022/10/04/testing-expresscard-nvme-ssd-adapter/media/6-opening.jpg">
    <img src="/posts/2022/10/04/testing-expresscard-nvme-ssd-adapter/media/6-opening_hu_828eb1cfc210cb27.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="This opening allows for the installation of longer M.2 SSD-s.">

  </a>
  <figcaption class="center">This opening allows for the installation of longer M.2 SSD-s.</figcaption>
</figure>

<h2 id="tests">
  <a class="heading-anchor" href="#tests">Tests<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>To test this adapter out, I just plugged it into my main ThinkPad T430 running
Fedora 36 and Linux kernel version 5.19.12. It worked right out of the box.</p>









<figure class="center">
  <a href="/posts/2022/10/04/testing-expresscard-nvme-ssd-adapter/media/7-led.jpg">
    <img src="/posts/2022/10/04/testing-expresscard-nvme-ssd-adapter/media/7-led_hu_4c08dbca18a1ec54.webp"
     width="600"
     height="800"
     loading="lazy"
     decoding="async"
     alt="Yes, it has a blue LED that blinks.">

  </a>
  <figcaption class="center">Yes, it has a blue LED that blinks.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2022/10/04/testing-expresscard-nvme-ssd-adapter/media/8-installed.jpg">
    <img src="/posts/2022/10/04/testing-expresscard-nvme-ssd-adapter/media/8-installed_hu_42af8bb4aeb094a2.webp"
     width="600"
     height="800"
     loading="lazy"
     decoding="async"
     alt="When not blinking, it looks something like this.">

  </a>
  <figcaption class="center">When not blinking, it looks something like this.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2022/10/04/testing-expresscard-nvme-ssd-adapter/media/9-dmesg.png">
    <img src="/posts/2022/10/04/testing-expresscard-nvme-ssd-adapter/media/9-dmesg_hu_9268cddb4b78501c.webp"
     width="957"
     height="200"
     loading="lazy"
     decoding="async"
     alt="Fedora picked it up with no issues.">

  </a>
  <figcaption class="center">Fedora picked it up with no issues.</figcaption>
</figure>

<p>My ThinkPad T430 can now support hotpluggable NVMe SSD-s, and 4 internal SSD-s
in total. Not quite tricked out as <a href="https://youtu.be/tHNQOJ_nsLc">this setup</a>,
but not bad for a 10 year old laptop.</p>









<figure class="center">
  <a href="/posts/2022/10/04/testing-expresscard-nvme-ssd-adapter/media/10-gnome-disks.png">
    <img src="/posts/2022/10/04/testing-expresscard-nvme-ssd-adapter/media/10-gnome-disks_hu_774bb68429c0cb0d.webp"
     width="960"
     height="392"
     loading="lazy"
     decoding="async"
     alt="4 SSD-s on a ThinkPad T430. Bonkers.">

  </a>
  <figcaption class="center">4 SSD-s on a ThinkPad T430. Bonkers.</figcaption>
</figure>

<p>Please note that these tests are not done with any meaningful testing methodology
and are just quick one-off tests that aim to showcase what to expect when using
this adapter with the configuration I&rsquo;m using it with.</p>
<p>To check how well the adapter performs, I opened <code>gnome-disks</code> and did a quick
benchmark offered by it.</p>









<figure class="center">
  <a href="/posts/2022/10/04/testing-expresscard-nvme-ssd-adapter/media/11-benchmark.png">
    <img src="/posts/2022/10/04/testing-expresscard-nvme-ssd-adapter/media/11-benchmark_hu_2d0b5109e530e691.webp"
     width="634"
     height="594"
     loading="lazy"
     decoding="async"
     alt="Results of the quick one-off benchmark.">

  </a>
  <figcaption class="center">Results of the quick one-off benchmark.</figcaption>
</figure>

<p>The average read speed is at 411.2 MB/s, and writes at 366.7 MB/s.</p>
<p>The results are in line with the limitations of a PCIe 2.0 x1 link, which has a
theoretical cap of 500 MB/s.</p>
<p>What&rsquo;s more noteworthy is the latency. Average access time is at 0.03 ms,
which compares well to a Samsung 870 EVO 1TB SATA SSD that&rsquo;s connected to the
same machine, which reports an average access time of 0.07 ms.</p>
<p>When copying files to the SSD, the temperature sensor reported a maximum of 60°C.
Additional read operations in the form of an ZFS scrub hit 63°C, which was the
maximum I observed during my quick testing.</p>
<p>When I threw both read and write operations to the SSD, the total I/O bandwidth
for both operations was capped at around 390 MB/s according to <code>zpool iostat 1 -v</code>.
If your workloads do a lot of read-write operations in parallel, then take this
into account.</p>









<figure class="center">
  <a href="/posts/2022/10/04/testing-expresscard-nvme-ssd-adapter/media/12-zfs-bandwidth.png">
    <img src="/posts/2022/10/04/testing-expresscard-nvme-ssd-adapter/media/12-zfs-bandwidth_hu_11738924d5bce375.webp"
     width="729"
     height="120"
     loading="lazy"
     decoding="async"
     alt="I/O stats during heavy read-write operations.">

  </a>
  <figcaption class="center">I/O stats during heavy read-write operations.</figcaption>
</figure>

<p>As for my use case, it seems to be holding up okay. I&rsquo;ll have to report back
after this adapter and SSD combo has been in use for a longer time.</p>
]]></content:encoded></item><item><title>I tried out the CyberPower UT650EG UPS</title><link>https://ounapuu.ee/posts/2022/08/04/cyberpower-ut650eg-overview/</link><pubDate>Thu, 04 Aug 2022 07:00:00 +0300</pubDate><author>ihavesomethoughtsonyourblog@ounapuu.ee (Herman Õunapuu)</author><guid>https://ounapuu.ee/posts/2022/08/04/cyberpower-ut650eg-overview/</guid><description>Small and very efficient, but not quite ideal for all use cases. At least it hasn't caught on fire yet!</description><content:encoded><![CDATA[<img src="https://ounapuu.ee/media/cover_hu_4fe4cf2661554252.jpg" width="1200" height="630" alt="I tried out the CyberPower UT650EG UPS" /><p>After some spicy feedback to <a href="/posts/2022/05/10/thinkpad-as-a-home-server/">my post where a ThinkPad T430 acted as a server,</a>
I decided to try out one UPS that was recommended on the basis of it being much
more power efficient compared to the APC UPS that I previously ran.</p>
<p>That UPS? <a href="https://www.cyberpower.com/id/en/product/sku/UT650EG">CyberPower UT650EG</a>.</p>









<figure class="center">
  <a href="/posts/2022/08/04/cyberpower-ut650eg-overview/media/image.jpg">
    <img src="/posts/2022/08/04/cyberpower-ut650eg-overview/media/image_hu_114a0a37badbaeb3.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="My ThinkPad-as-a-server, and the UPS that&#39;s powering it.">

  </a>
  <figcaption class="center">My ThinkPad-as-a-server, and the UPS that&#39;s powering it.</figcaption>
</figure>

<h2 id="why-switch-out-a-perfectly-good-ups">
  <a class="heading-anchor" href="#why-switch-out-a-perfectly-good-ups">Why switch out a perfectly good UPS?<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 APC Smart-UPS 750 is good, but uses a lot of power compared to the whole setup,
making up roughly half of the total power consumption at idle: ~17-18W. It&rsquo;s
also very big compared to what it is actually powering.</p>
<p>One of the main selling points of this particular CyberPower UPS is that it uses
very little power itself. Depending on the model, the UPS can use around 1-2W
of power, at least according to the tests that they <a href="https://www.cyberpower.com/promotion/ut/id/id">publish on their website</a>.</p>
<p>Once I set up everything with the new UPS, I gave it a go. After the battery was
fully charged, I did observe a dramatic drop in power usage. The whole setup now
ran around 19-21W when idle, which confirms the power consumption numbers
claimed by CyberPower.</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 UPS itself is great for someone who just wants to connect a couple of
devices into a standalone UPS. The model I got came with three EU-style sockets.
Compared to the APC UPS, this is a much cleaner setup as I do not have to
connect an extension cord using an adapter.</p>
<p>The APC Smart-UPS 750 can provide anywhere between 100 and 120 minutes of runtime
with my setup. I did a quick runtime test with the CyberPower UPS as well and
found that with around 25W of load it ran for 37 minutes. Not the best runtime,
but given its size it&rsquo;s a respectable result.</p>
<p>Uninterruptible power supplies like to be noisy when running off of batteries.
This CyberPower unit is no exception. However, by letting it run on batteries
and double-clicking the power button I managed to silence the alarm and in
subsequent power cut scenarios it has not started beeping. I was unable to find
a simple manual explaining how to operate the UPS and what other button combos
might be out there. The piece of paper that came with the UPS was also
lackluster. I&rsquo;m not sure if this was intended functionality or not, but I do
like that turning the alarm off is an option in the first place.</p>
<p>The status LED-s on the unit are okay. There aren&rsquo;t many of them and the legend
explaining the behaviour of those lights is just enough to understand what&rsquo;s
going on.</p>
<h2 id="the-not-so-good-parts">
  <a class="heading-anchor" href="#the-not-so-good-parts">The not-so-good parts<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 particular unit has an issue. I did a poor job reading the spec sheet at
my local retailer and missed the fact that this specific model does <em>not</em> come
with USB connectivity. If the UPS runs out of power, it cannot warn my server
to shut down in advance, resulting in a dirty shutdown scenario. Given how
stable the power at my apartment generally is, this won&rsquo;t likely be
a major issue, but it&rsquo;s definitely something I miss. The APC UPS supports this,
plus you can log everything about how the batteries are doing and even detect
input voltage anomalies that you probably weren&rsquo;t even aware of.</p>
<p>What I&rsquo;m concerned about is the battery. <a href="https://www.cyberpower.com/id/en/product/sku/UT650EG#specification">The specifications</a>
say that the battery is not user replaceable. I hope that this is simply something
the legal team thought of to avoid any liability when dealing with users who
messed this process up. If not, then it will be a major problem down the line.
Batteries are consumable items, and according to various threads on the web
about UPS batteries, the consensus is that you should replace them every 3-4
years to avoid problems with the batteries swelling up and potentially causing
fires.</p>
<p>If the battery dies and I cannot replace it, then what am I supposed to do,
throw the otherwise functional UPS straight to the landfill? Not acceptable.</p>
<p>Speaking of concerns, I happened to see some
<a href="https://forums.redflagdeals.com/some-cyberpower-upses-may-pose-fire-hazard-2516306/">troubling</a>
<a href="https://www.youtube.com/watch?v=9gqBzLNMFe4">reports</a>
about certain <a href="https://www.reddit.com/r/homelab/comments/voy9kl/cyberpower_cp1500pfclcd_fire_hazard/">CyberPower UPS-es catching on fire.</a>
The culprit seems to be a certain type of glue used in the manufacturing of the
UPS that ends up conducting electricity after a longer time period. I unplugged
my UPS, powered it off and gave it a look, and it seems like I should be fine.
At least I hope so.</p>









<figure class="center">
  <a href="/posts/2022/08/04/cyberpower-ut650eg-overview/media/hopefullynotafirehazard.jpg">
    <img src="/posts/2022/08/04/cyberpower-ut650eg-overview/media/hopefullynotafirehazard_hu_6a24703ac4909581.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="Inside of the UPS.">

  </a>
  <figcaption class="center">Inside of the UPS.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2022/08/04/cyberpower-ut650eg-overview/media/inside.jpg">
    <img src="/posts/2022/08/04/cyberpower-ut650eg-overview/media/inside_hu_a98afada1f31cc43.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="I sure hope that this piece of glue won&#39;t burn my house down.">

  </a>
  <figcaption class="center">I sure hope that this piece of glue won&#39;t burn my house down.</figcaption>
</figure>

<p>Based on this view inside the UPS, I feel like changing the battery should at
least be possible, assuming that replacement batteries are readily available.
Just make sure to not touch the rest of the components as they can probably
kill you, and that&rsquo;s just not a fun thing to do.</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 want a dumb and efficient UPS that protects you from basic power cutouts
and input voltage changes, then do consider this UPS. However, if you care about
USB connectivity and ease of maintenance, then I recommend looking for other
options.</p>
]]></content:encoded></item><item><title>My self-hosting setup has an UPS now, here's my experience with it</title><link>https://ounapuu.ee/posts/2022/03/21/ups-i-did-it-again/</link><pubDate>Mon, 21 Mar 2022 06:00:00 +0200</pubDate><author>ihavesomethoughtsonyourblog@ounapuu.ee (Herman Õunapuu)</author><guid>https://ounapuu.ee/posts/2022/03/21/ups-i-did-it-again/</guid><description>UPS, I did it again 🎵</description><content:encoded><![CDATA[<img src="https://ounapuu.ee/media/cover_hu_4fe4cf2661554252.jpg" width="1200" height="630" alt="My self-hosting setup has an UPS now, here's my experience with it" /><p>I changed my setup again.</p>
<p>I&rsquo;m now the proud owner of an APC Smart-UPS 750.</p>









<figure class="center">
  <a href="/posts/2022/03/21/ups-i-did-it-again/media/ups.jpg">
    <img src="/posts/2022/03/21/ups-i-did-it-again/media/ups_hu_8b82e70f8d835724.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="The UPS is many times larger than the actual server.">

  </a>
  <figcaption class="center">The UPS is many times larger than the actual server.</figcaption>
</figure>

<p>Why? Because I got it as a gift, and I have never actually had an UPS before, so
it makes for a good introduction to this world.</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>My setup is quite basic: everything that I have on my table (server, monitor,
laptop) is connected through the UPS. Since my setup uses very little power,
I&rsquo;m running way below the output limit of 500 watts.</p>
<p>When I&rsquo;m not using my laptop, the UPS reports itself at 10% utilization. My
server and the UPS itself seems to consume around 35-40 watts, as measured by
an energy meter. When the laptop and monitor are also powered on, the load is
around 15-25%, depending on the workload.</p>
<p>To make sure that I get the full benefit of the UPS, I connected it to my server
with an USB cable and installed <code>apcupsd</code>. By default, the daemon could not
detect the UPS, which was then fixed with the help of <a href="https://unix.stackexchange.com/a/538636">this StackExchange answer</a>:</p>
<blockquote>
<p>I had the same problem with COMMLOST with a USB connection, after a lot of
research I found by pure hazard that with a USB connection you should change
DEVICE /dev/ttys0 to DEVICE in /etc/apcupsd/apcupsd.conf with nothing after it,
this way apcupsd search everywhere on the system to find the UPS and connect
correctly, no more COMMLOST.</p>
<p>After that, restart apcupsd with:</p>
<p>$ sudo /etc/init.d/apcupsd restart</p>
</blockquote>
<p>With the UPS connected and the service up and running, I could now see more
detailed specs. The output for <code>apcaccess</code> looks something like this:</p>
<pre tabindex="0"><code>APC      : 001,043,1007
DATE     : 2022-02-04 21:49:08 +0200  
HOSTNAME : deskmini
VERSION  : 3.14.14 (31 May 2016) debian
UPSNAME  : deskmini
CABLE    : USB Cable
DRIVER   : USB UPS Driver
UPSMODE  : Stand Alone
STARTTIME: 2022-02-01 05:45:50 +0200  
MODEL    : Smart-UPS 750 
STATUS   : ONLINE 
LINEV    : 241.9 Volts
LOADPCT  : 9.1 Percent
BCHARGE  : 100.0 Percent
TIMELEFT : 98.0 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME  : 0 Seconds
OUTPUTV  : 241.9 Volts
SENSE    : High
DWAKE    : -1 Seconds
DSHUTD   : 90 Seconds
LOTRANS  : 208.0 Volts
HITRANS  : 253.0 Volts
RETPCT   : 0.0 Percent
ITEMP    : 33.3 C
ALARMDEL : 30 Seconds
BATTV    : 27.4 Volts
LINEFREQ : 50.0 Hz
LASTXFER : No transfers since turnon
NUMXFERS : 0
TONBATT  : 0 Seconds
CUMONBATT: 0 Seconds
XOFFBATT : N/A
SELFTEST : NO
STESTI   : 14 days
STATFLAG : 0x05000008
MANDATE  : 2007-03-16
SERIALNO : &lt; serial number goes here &gt;
BATTDATE : 2007-03-16
NOMOUTV  : 230 Volts
NOMBATTV : 24.0 Volts
FIRMWARE : 651.13.I USB FW:7.3
END APC  : 2022-02-04 21:49:10 +0200  
</code></pre><p>I&rsquo;ve seen some unintentionally funny abbreviations, but <code>CUMONBATT</code> takes the
cake.</p>
<h2 id="battery-runtime-test">
  <a class="heading-anchor" href="#battery-runtime-test">Battery runtime test<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>To test out the state of the batteries and understand how the UPS handles power
failure scenarios, I decided to pull the plug and see what happens next.</p>
<p>The first thing you&rsquo;ll notice is the beeping. It&rsquo;s not quite as loud as a smoke
detector, but I couldn&rsquo;t blame my neighbours for thinking that this was the case.
To silence the UPS, just press the power on/test button (the one with the | on
it).</p>
<p>While on batteries, the UPS emits a hum that&rsquo;s not too different from the one
present near some power stations and transformers. Other than that, it doesn&rsquo;t
get awfully loud or anything, at least on a small load.</p>
<p>I continued using my laptop and monitor while keeping an eye on the <code>apcupsd</code>
daemon and <code>apcaccess</code> output. The estimated runtime was around the 60 minute
mark and it ended up being quite close to the actual figure.</p>
<p>Around the 10% capacity mark <code>apcupsd</code> triggered a shutdown of the server. The
UPS still provided power at that point. I decided to supply the UPS with power
again and turn on my server. To my surprise, the UPS now cut off all output
power and started blinking some lights, one of them indicating some sort of an
issue with the battery. I turned everything off, then on again and the UPS was
just fine.</p>
<p>I&rsquo;m not sure if the last incident was intended behaviour or my inexperience
causing an issue.</p>
<h2 id="power-usage">
  <a class="heading-anchor" href="#power-usage">Power usage<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 goal of <a href="/posts/2022/01/17/asrock-x300-future-of-desktops/">moving my setup to an efficient machine</a>
was to experiment with how low can I go with the power usage of my setup.
Unfortunately with the introduction of the UPS I have wiped out almost all of
the gains that I got from the move. The UPS itself seems to constantly consume
around 17-18 watts, which is just a bit more than my server itself is using.</p>
<p>However, I hope that the reliability improvements and various protections
that come with the use of an UPS make up for that downside.</p>
<h2 id="lan-resilience">
  <a class="heading-anchor" href="#lan-resilience">LAN resilience<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 initial setup that I had, the server and the UPS were both on my desk.
In the event of a power outage, the server, my laptop and all the connected
peripherals would continue working. The only issue is that the networking won&rsquo;t
work in such a scenario, as both the ISP provided modem-router box and my own
router would be knocked offline. What use is a server disconnected from the
network?</p>
<p>Since I use my laptop for work, I&rsquo;m not too worried about it losing power.
Laptops have batteries, so in the event of a power outage, it will just continue
running off of the internal battery.</p>
<p>I&rsquo;ve configured my router to resolve my own domains internally, meaning that even
when I cannot connect to the Internet, my locally hosted services will keep
working in some capacity.</p>
<p>With all of this in mind, I decided to move my setup closer to my main router.</p>









<figure class="center">
  <a href="/posts/2022/03/21/ups-i-did-it-again/media/newsetup.jpg">
    <img src="/posts/2022/03/21/ups-i-did-it-again/media/newsetup_hu_6a26e086f041e5f1.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="Not the prettiest setup, but it does do the trick, and it makes for a good conversation starter.">

  </a>
  <figcaption class="center">Not the prettiest setup, but it does do the trick, and it makes for a good conversation starter.</figcaption>
</figure>

<p>Power goes out, my server and local network will still keep on working for up to
2 hours due to the low combined power usage.</p>
<h2 id="desktop-integration">
  <a class="heading-anchor" href="#desktop-integration">Desktop integration<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>When testing the UPS on my main workstation (ThinkPad T430 running Fedora 35), I
was positively surprised by the out of the box experience that I had with the
UPS. With the USB cable connected to the laptop and the <code>apcupsd</code> service
running in the background, I could see the remaining battery life of the UPS the
same way that the laptop battery shows up.</p>









<figure class="center">
  <a href="/posts/2022/03/21/ups-i-did-it-again/media/gnome-power-info.png">
    <img src="/posts/2022/03/21/ups-i-did-it-again/media/gnome-power-info_hu_347b5c3294d0c6ea.webp"
     width="718"
     height="265"
     loading="lazy"
     decoding="async"
     alt="The UPS showing up as the main battery in GNOME 41.">

  </a>
  <figcaption class="center">The UPS showing up as the main battery in GNOME 41.</figcaption>
</figure>

<p>And once I ran out the batteries, I got a notification saying that the UPS was
about to run out of power soon.</p>









<figure class="center">
  <a href="/posts/2022/03/21/ups-i-did-it-again/media/gnome-ups-warning.png">
    <img src="/posts/2022/03/21/ups-i-did-it-again/media/gnome-ups-warning_hu_3462b75ba9ef5f21.webp"
     width="508"
     height="106"
     loading="lazy"
     decoding="async"
     alt="Warning notification that pops up once the UPS is running low on power.">

  </a>
  <figcaption class="center">Warning notification that pops up once the UPS is running low on power.</figcaption>
</figure>

<p>I love seeing these relatively niche use cases supported out of the box. Props
to the developers behind these quality of life improvements!</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>Would I have gone out and bought this UPS if I didn&rsquo;t receive it as a gift?
Probably not, because I didn&rsquo;t see much of a need for one.</p>
<p>Now that I have it, will I keep using it? Definitely, assuming that the
inevitable battery replacement cost is reasonable and the process of changing
them is easy enough for an enthusiast to handle.</p>
<p>From the manual:</p>
<blockquote>
<p>For Professional Business Applications – Not For Consumer Use</p>
</blockquote>
<p>Look, ma, I&rsquo;m a professional now!</p>
]]></content:encoded></item><item><title>ASRock X570M Pro4 motherboard overview</title><link>https://ounapuu.ee/posts/2022/02/02/asrock-x570m-pro4-overview/</link><pubDate>Wed, 02 Feb 2022 06:00:00 +0200</pubDate><author>ihavesomethoughtsonyourblog@ounapuu.ee (Herman Õunapuu)</author><guid>https://ounapuu.ee/posts/2022/02/02/asrock-x570m-pro4-overview/</guid><description>Quick overview from someone who does this thing as a hobby, focusing on PCIe connectivity, fan control and the poor state of AM4 socket and UEFI upgrades.</description><content:encoded><![CDATA[<img src="https://ounapuu.ee/media/cover_hu_4fe4cf2661554252.jpg" width="1200" height="630" alt="ASRock X570M Pro4 motherboard overview" /><p>Not too long ago, I had the goal of consolidating all my computing needs onto a
single desktop PC. That meant moving from an mITX-based build to something that
had a bit more expandability. Since I already had a
<a href="https://www.fractal-design.com/products/cases/meshify/meshify-c-mini-dark-tempered-glass/black/">Fractal Meshify C Mini</a>,
I decided to go for an mATX motherboard. And that&rsquo;s how I ended up with an
<a href="https://www.asrock.com/mb/AMD/X570M%20Pro4/">ASRock X570M Pro4</a>.</p>









<figure class="center">
  <a href="/posts/2022/02/02/asrock-x570m-pro4-overview/media/glamshot.jpg">
    <img src="/posts/2022/02/02/asrock-x570m-pro4-overview/media/glamshot_hu_96cab6cd6b670713.webp"
     width="600"
     height="800"
     loading="lazy"
     decoding="async"
     alt="ASRock X570M Pro4. Looks great, doesn&#39;t it?">

  </a>
  <figcaption class="center">ASRock X570M Pro4. Looks great, doesn&#39;t it?</figcaption>
</figure>

<h2 id="matx-a-dying-breed">
  <a class="heading-anchor" href="#matx-a-dying-breed">mATX: a dying breed?<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 of the requirements for the build was that it had to support IOMMU well so
that a VFIO setup would be possible. While AMD B-series motherboards may work
just fine in such scenarios, the X-series boards allegedly have better IOMMU
groups and thus better compatibility with VFIO.</p>
<p>Once I started the search for the new motherboard, I was surprised to see that
locally there was only one mainstream option available. There were plenty of
B450 and B550 boards available, but only a single X570 board in this form factor.</p>
<p>I checked the board out, saw that it had plenty of NVMe and SATA storage options,
and went for it.</p>
<h2 id="pcie-connectivity">
  <a class="heading-anchor" href="#pcie-connectivity">PCIe connectivity<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>When you have a bunch of PCIe devices to connect, the way those lanes are
connected start to matter.</p>
<p>Based on my own testing, I&rsquo;ve found the following:</p>
<ul>
<li>the first M.2 slot (under the heatsink) is connected to the CPU</li>
<li>the first PCIe x16 slot is also connected to the CPU</li>
<li>the rest of PCIe connectivity goes through the chipset</li>
<li>most (if not all) SATA ports seem to go through the chipset as well</li>
</ul>









<figure class="center">
  <a href="/posts/2022/02/02/asrock-x570m-pro4-overview/media/lstopo.jpg">
    <img src="/posts/2022/02/02/asrock-x570m-pro4-overview/media/lstopo_hu_2ebd299829f27b52.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="Hardware topology, as shown by `lstopo`.">

  </a>
  <figcaption class="center">Hardware topology, as shown by `lstopo`.</figcaption>
</figure>

<p>This matters, because anything connected to the CPU via the chipset shares the
bandwidth of a limited x4 link. This was apparent when running two NVMe drives and
noticing that one of them was much slower when I also put load on SATA SSD-s.</p>
<p>GPU-s can still work fine when connected via the chipset, but there&rsquo;s definitely
a performance penalty involved. While I don&rsquo;t have the exact numbers available
at this time, I do remember a CSGO benchmarking map showing at least a double-digit
framerate difference compared to the full x16 slot.</p>









<figure class="center">
  <a href="/posts/2022/02/02/asrock-x570m-pro4-overview/media/gpu-in-chipset.jpg">
    <img src="/posts/2022/02/02/asrock-x570m-pro4-overview/media/gpu-in-chipset_hu_9392dfe09abc1536.webp"
     width="600"
     height="800"
     loading="lazy"
     decoding="async"
     alt="The GPU works just fine in the chipset PCIe slot, albeit at lower performance.">

  </a>
  <figcaption class="center">The GPU works just fine in the chipset PCIe slot, albeit at lower performance.</figcaption>
</figure>

<p>I also gave PCIe bifurcation a go. I borrowed an ASUS PCIe adapter card that can
support up to 4 NVMe SSD-s, hoping that I could set up a crazy storage setup.
The bifurcation works, but for the CPU I used (AMD Ryzen 7 5700G) I was only
provided the option of 2x4 split, which meant that at most I could run two SSD-s
in the riser card at a time. A non-APU Ryzen CPU is likely needed to take full
advantage of the bifurcation support.</p>









<figure class="center">
  <a href="/posts/2022/02/02/asrock-x570m-pro4-overview/media/bifurcation-uefi.jpg">
    <img src="/posts/2022/02/02/asrock-x570m-pro4-overview/media/bifurcation-uefi_hu_471a7ba53278b5d0.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="The setting that controls bifurcation in ASRock UEFI settings.">

  </a>
  <figcaption class="center">The setting that controls bifurcation in ASRock UEFI settings.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2022/02/02/asrock-x570m-pro4-overview/media/bifurcation-card.jpg">
    <img src="/posts/2022/02/02/asrock-x570m-pro4-overview/media/bifurcation-card_hu_9f046ac9c2554355.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="ASUS Hyper M.2 PCIe card installed in the system.">

  </a>
  <figcaption class="center">ASUS Hyper M.2 PCIe card installed in the system.</figcaption>
</figure>

<p>For VFIO, this board is fine. Anything in PCIe slots, including the chipset ones,
I was able to pass through to the VM. USB and SATA ports were a different story,
I wasn&rsquo;t able to pass through a single controller, the VM would not start up
properly.</p>
<p>If you have an use case where you need reliable and fast PCIe connectivity,
then I&rsquo;d recommend another platform that has lots of real PCIe connectivity,
such as the AMD Threadripper/EPYC platform. This board exhibited some odd
behaviour when trying to utilize all the PCIe slots, or when trying to use the
ASUS Hyper M.2 card in bifurcation mode while also having the GPU connected at
the bottom PCIe x16 slot.</p>
<h2 id="chipset-fan">
  <a class="heading-anchor" href="#chipset-fan">Chipset fan<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 X570 boards that stuck out to most people on release was the
inclusion of a chipset fan. Not too long after, people started to report that
those fans are very loud and low quality, resulting in them failing easily.</p>
<p>For this particular board, ASRock provides an option in UEFI settings that allows
you to run this chipset fan semi-passively. It will spin up once on boot and
sit idle the rest of the time, unless the temperatures are high enough. I was
not able to get that fan to spin even with a full GPU load and all SSD-s running
heavy read operations at the same time.</p>
<p>If you have PWM fans, it&rsquo;s also possible to manually control these in Linux
with the use of <a href="https://wiki.archlinux.org/title/fan_speed_control#Fancontrol_%28lm-sensors%29">fancontrol</a>.
For me, it just took a bit of trial and error to figure out the mapping between
the software fan controls and the actual fan in the PC, after that I could
fine-tune them to run as quietly as possible. Yes, even the chipset fan was
controllable using the same method.</p>
<h2 id="am4-socket-long-term-support">
  <a class="heading-anchor" href="#am4-socket-long-term-support">AM4 socket long term support<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>AMD introduced the <a href="https://en.wikipedia.org/wiki/Socket_AM4">AM4 socket</a> back in
2016 and promised to support it until 2020. I applaud that effort and am
happy that I was able to run the latest AMD Ryzen 5000 series APU on a B450
board. If you happen to have a newer CPU that requires a UEFI upgrade for it to
be supported, then you will be in a world of hurt.</p>
<p>I found myself in a situation where I had a motherboard that didn&rsquo;t have the
newest UEFI version from the factory, and a CPU that was just a bit too new for
it to work. The board supported AMD Ryzen 5000 series CPU-s, not 5000 G-series
CPU-s. I also didn&rsquo;t have an older CPU available that I could use to perform
this upgrade on my own. Luckily I was able to find a loaner 5000 series CPU,
perform the upgrade and finally assemble the machine.</p>
<p>At least ASRock puts a sticker with the UEFI version on the chip itself so that
you can check the CPU support once you physically have the motherboard, but it&rsquo;s
pretty much useless when buying this board online. There&rsquo;s no indication as to
which version it will ship with, the best you can do is to look for some Reddit
threads where others have shared their experiences with the board and the UEFI
version it shipped with from the factory.</p>
<p>Pro tip for CPU and motherboard manufacturers: if you&rsquo;re going for long-term
support on your platform, please include a CPU-less UEFI upgrading solution.
Some high-end motherboards already ship with that type of functionality, but I
believe it should be made mandatory for all boards. Avoiding headaches like that
will be worth the extra cost.</p>
<h2 id="verdict">
  <a class="heading-anchor" href="#verdict">Verdict<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 fine, looks good and gets the job done. Can&rsquo;t recommend it for someone who
needs a lot of performance and PCIe lanes, but for hobbyist workloads it will
<em>probably</em> be just fine. UEFI flashing situation really soured the experience
though.</p>
]]></content:encoded></item><item><title>ASRock DeskMini X300: the future form factor of desktop PC-s?</title><link>https://ounapuu.ee/posts/2022/01/17/asrock-x300-future-of-desktops/</link><pubDate>Mon, 17 Jan 2022 07:00:00 +0200</pubDate><author>ihavesomethoughtsonyourblog@ounapuu.ee (Herman Õunapuu)</author><guid>https://ounapuu.ee/posts/2022/01/17/asrock-x300-future-of-desktops/</guid><description>Honey, I shrunk my desktop PC!</description><content:encoded><![CDATA[<img src="https://ounapuu.ee/media/cover_hu_4fe4cf2661554252.jpg" width="1200" height="630" alt="ASRock DeskMini X300: the future form factor of desktop PC-s?" /><p>I wasn&rsquo;t happy with my <a href="/posts/2021/12/29/vr-vfio-latency/">&ldquo;one machine that does it all&rdquo;</a>
setup, which is why I finally bit the bullet and got myself an <a href="https://www.asrock.com/nettop/AMD/DeskMini%20X300%20Series/index.asp">ASRock DeskMini X300 bare-bones kit</a>.
This is a fantastic little desktop PC kit that is very small, quiet and can
still be configured to have ridiculous amounts of power. In the past. I once
built a low-power server based off of the predecessor, <a href="https://www.asrock.com/nettop/AMD/DeskMini%20A300%20Series/index.asp">the DeskMini A300</a>,
and instantly fell in love with this form factor. Since then, I&rsquo;ve tried to come
up with a reason to get one, and finally I&rsquo;ve got one.</p>









<figure class="center">
  <a href="/posts/2022/01/17/asrock-x300-future-of-desktops/media/0-assembled.jpg">
    <img src="/posts/2022/01/17/asrock-x300-future-of-desktops/media/0-assembled_hu_582636fe3dc6562.webp"
     width="600"
     height="800"
     loading="lazy"
     decoding="async"
     alt="The ASRock DeskMini X300, up and running.">

  </a>
  <figcaption class="center">The ASRock DeskMini X300, up and running.</figcaption>
</figure>

<h2 id="configuration">
  <a class="heading-anchor" href="#configuration">Configuration<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>Because this is a bare-bones kit, you have to supply your own parts.</p>
<p>My configuration:</p>
<ul>
<li>CPU: AMD Ryzen 7 5700G, locked to 35 W TDP in UEFI settings.</li>
<li>Cooling: Noctua NH-L9a</li>
<li>RAM: 2x 16 GB DDR4-3200 SODIMM</li>
<li>NVMe storage: 2x Samsung SSD 980 500GB</li>
<li>SATA storage: 2x Samsung SSD 870 QVO 4TB</li>
<li>USB storage: 1x Samsung SSD 860 EVO 250GB in an IcyBox USB enclosure</li>
</ul>









<figure class="center">
  <a href="/posts/2022/01/17/asrock-x300-future-of-desktops/media/1-mobo.jpg">
    <img src="/posts/2022/01/17/asrock-x300-future-of-desktops/media/1-mobo_hu_dd2b8d53a1ea5414.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="Initial test configuration with Ryzen 5 PRO 4650G and 16GB of RAM.">

  </a>
  <figcaption class="center">Initial test configuration with Ryzen 5 PRO 4650G and 16GB of RAM.</figcaption>
</figure>

<p>The use case for my kit is simple: it&rsquo;s my server that hosts all my services and
data, including this blog you&rsquo;re reading.</p>
<p>Why this setup in particular?</p>
<ul>
<li>Most of my storage needs can be served by two 4 TB SSD-s.</li>
<li>8 cores with SMT are perfect for multithreaded workloads, such as <a href="https://jellyfin.org/">Jellyfin</a>
transcoding. This also works well for just running a bunch of services on the same
machine.</li>
<li>Can support up to 64 GB of RAM, which should be plenty in the foreseeable
future.</li>
<li>Supports fast NVMe SSD-s, which are perfect for more IO-sensitive workloads,
such as databases.</li>
<li>Low power usage. Even with my almost maxed out kit, it still uses around
14 W in idle. At most this PC can use around 50-60 watts due to the CPU TDP
limit and SSD-s hitting full load.</li>
</ul>









<figure class="center">
  <a href="/posts/2022/01/17/asrock-x300-future-of-desktops/media/3-testbed.jpg">
    <img src="/posts/2022/01/17/asrock-x300-future-of-desktops/media/3-testbed_hu_ccae4dc7a42f9185.webp"
     width="600"
     height="800"
     loading="lazy"
     decoding="async"
     alt="Never assemble the whole PC without checking if it actually works.">

  </a>
  <figcaption class="center">Never assemble the whole PC without checking if it actually works.</figcaption>
</figure>

<h2 id="why-is-this-form-factor-so-good">
  <a class="heading-anchor" href="#why-is-this-form-factor-so-good">Why is this form factor so good?<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>Desktop PC-s are big. Really big. While the small form factor PC movement has become
more popular lately, the most commonly available cases and parts still end up
taking a lot of space and resources. There are legitimate use cases for these
types of setups, especially if you&rsquo;re running video renders, scientific
simulations or a lot of VM-s as part of a lab. Not every workload needs such a
big setup, however.</p>
<p>The DeskMini X300 looks like a miniature version of a desktop PC in a tower case.
Similar shape and features, but at a fraction of the size and raw resources usage.
One might say that it even looks adorable, similar to how
<a href="https://www.reddit.com/r/pcmasterrace/comments/nlddyc/since_gpus_are_in_short_supply_i_decided_to_build/">Raspberry Pi-based builds look compared to desktops</a>.</p>
<p>This PC takes up just 1.92 liters in volume (excluding the power adapter). For
comparison, a micro-ATX case like <a href="https://www.fractal-design.com/products/cases/meshify/meshify-c-mini-dark-tempered-glass/black/">the Fractal Meshify Mini C</a>,
takes up a whopping 33.4 liters. I don&rsquo;t have the raw numbers regarding material
usage or the weight difference, but this comparison should give you an idea of
the material usage difference between the two.</p>









<figure class="center">
  <a href="/posts/2022/01/17/asrock-x300-future-of-desktops/media/5-size.jpg">
    <img src="/posts/2022/01/17/asrock-x300-future-of-desktops/media/5-size_hu_ff89a889b8dda0ca.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="Included driver CD for scale. Not sure where you&#39;d insert it, though.">

  </a>
  <figcaption class="center">Included driver CD for scale. Not sure where you&#39;d insert it, though.</figcaption>
</figure>

<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>I love this piece of kit, but I do have to acknowledge that there are some
trade-offs that you should be aware of.</p>
<p>Starting with the obvious one first: you&rsquo;re trading off some expandability.
No discrete GPU-s will fit in this thing, not even an external one due to lack
of Thunderbolt. On the other hand, if you don&rsquo;t foresee a need for such
additions to your PC, then the DeskMini will be a great choice.</p>
<p>Something that&rsquo;s specific to the X300 is the lack of USB connectivity. You get
two USB 3.0 Type-A ports, one USB 2.0 port and a USB 3.2 Gen 1 Type-C port as
well. If you have a USB hub, then this won&rsquo;t be much of an issue, but this
configuration is quite limited compared to most modern desktop motherboards.</p>
<p>The motherboard inside this thing can also be a point of concern. It&rsquo;s a
non-standard form factor, meaning that in case of failure you&rsquo;re unlikely to
easily find a replacement. The most obvious step here would be to either repair
it or get another DeskMini kit to replace your existing one.</p>
<p>One aspect of the DeskMini X300 that you may care about is the fact that the
power supply is an external 19V 120W power brick. This does mean that replacing
the power supply won&rsquo;t be much of an issue, but you do have to take this into
account when planning your build. The power brick is quite big and has to be
placed somewhere, after all. In my setup, I&rsquo;ve opted for sticking it to the
underside of my desk with double-sided tape.</p>









<figure class="center">
  <a href="/posts/2022/01/17/asrock-x300-future-of-desktops/media/8-powersupply.jpg">
    <img src="/posts/2022/01/17/asrock-x300-future-of-desktops/media/8-powersupply_hu_3786ce24a6498256.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="How to hide bulky power supplies: the tutorial.">

  </a>
  <figcaption class="center">How to hide bulky power supplies: the tutorial.</figcaption>
</figure>

<h2 id="gpu-s-apu-s-and-the-future">
  <a class="heading-anchor" href="#gpu-s-apu-s-and-the-future">GPU-s, APU-s, and the future<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>For anyone who&rsquo;s followed the GPU market in 2021/2022, the ridiculously high pricing
of GPU-s shouldn&rsquo;t come as a surprise. As a firm believer in thinking that low
power computing is the future, I think that this presents a great opportunity
to start thinking differently about our computing architecture.</p>
<p>AMD introduced the concept of <a href="https://en.wikipedia.org/wiki/AMD_Accelerated_Processing_Unit">APU-s back in 2011</a>.
In its current iteration in the form of AMD Ryzen 5000 series APU-s, they provide
a compelling package, combining powerful CPU cores with a decent GPU that&rsquo;s perfectly
capable of many tasks, including low-spec gaming.</p>
<p>I&rsquo;ve <a href="/posts/2021/11/03/tech-rants-1/">previously covered what I think about the state of computer hardware and the resource
usage associated with it</a>. It&rsquo;s possible that
we&rsquo;re simply in a time in history where resource abundance allows us to push the
limit of what computer hardware is capable of without thinking much about the
cost. At some point we do need to address that issue, and I think APU-s will
play a role in it.</p>
<p>We already have examples of what APU-like chips can be capable of in the form of
the last two console generations. To get an idea about the power usage numbers,
check out the <a href="https://www.playstation.com/en-gb/legal/ecodesign/">power usage statistics shared by Sony for the PS4 and PS5</a>.
The power usage of the PS5 is still almost 200 W under load, which isn&rsquo;t that great,
but that&rsquo;s likely due to the high performance goals set for the console itself.
You&rsquo;d have to give up some image quality or performance for a more efficient setup,
which is something the marketing department isn&rsquo;t probably very happy about, given
that they&rsquo;re in direct competition with Microsoft with their newest XBOX lineup
that is also pushing the limits of the custom APU inside it.</p>
<p>The integrated GPU solutions that AMD and Intel have put out are becoming more
and more capable. Even an AMD Ryzen 3 2200G from 2018 with its measly 4 cores
and a Vega 8 GPU is still capable enough to run GTA V at 1080p with low-medium
settings smoothly (60 FPS or more). You do have to make a conscious trade-off
in image quality and performance when relying on APU-s, but if you&rsquo;re willing
to make that trade-off, you can get a decent gaming experience.</p>
<p><a href="https://store.steampowered.com/steamdeck/">Even the Steam Deck is shipping with a custom AMD APU.</a>
What makes this one different from AMD-s previous APU-s is the inclusion of a
modern GPU core based on the RDNA 2 architecture, which should be a big jump
from the relatively old Vega-based GPU-s that desktop APU-s have shipped with.</p>
<p>If it weren&rsquo;t for the progress in gaming tech, such as high refresh rate monitors
and ever-increasing system requirements for newer games, APU-s would be a good
default choice for casual gamers, negating the need to get a huge box that you
have to somehow also fit on your desk.</p>
<p>I have run on an APU-based setup and was happy with the experience, unfortunately
an APU-based machine just doesn&rsquo;t cut it for virtual reality workloads, yet.</p>
<h2 id="comparison-to-tinyminimicro-pc-s">
  <a class="heading-anchor" href="#comparison-to-tinyminimicro-pc-s">Comparison to TinyMiniMicro PC-s<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><a href="https://www.servethehome.com/introducing-project-tinyminimicro-home-lab-revolution/">ServeTheHome&rsquo;s TinyMiniMicro series</a>
gives a good overview of the options available for someone who wants a very small
1 liter PC to do all their work on. Since these machines are also very small,
power-efficient and yet still quite powerful, I think a comparison between the
two is a reasonable one.</p>
<p>One area where the TinyMiniMicro PC-s win is an obvious one: the size. They are
about half the size of the DeskMini X300: 1 liter vs 1.92 liters.</p>
<p>TinyMiniMicro PC-s are also abundant on the used market with various configurations.
In most cases, the storage and RAM are upgradeable, and with some older models
you&rsquo;ll find that the CPU is also socketed. Depending on your market, this means
that you may be able to get a whole PC for cheaper than the DeskMini + the rest
of the components (CPU, RAM, storage, Wi-Fi etc.).</p>
<p>The size and cost benefits do come with some compromises that are not acceptable
for my use case. At 1 liter, the only option you have is to include a blower
type cooler in your PC. This type of cooler is similar to the ones found in
laptops and has in my experience resulted in a lot of annoying noise under heavy
load.</p>
<p>The UEFI settings on these machines may also be quite limited. Sure, if you just
need the basics, these will be fine, but if you want to configure the fan
behaviour, you might find yourself unable to do so. On the DeskMini, you can
setup the CPU fan to run just the way you like it. In my case, the fan only
turns on when the system is under load, the fan is completely stopped while the
machine is idle.</p>
<p>The DeskMini also allows you to change out the CPU cooler with anything that&rsquo;s
AM4 socket compatible. The case of course sets some limits to that,
<a href="https://www.reddit.com/r/Amd/comments/enw3up/a3003400g_w_ml120_aio_mod/">unless you&rsquo;re a madlad who doesn&rsquo;t let boundaries bother them.</a>
With the <a href="https://noctua.at/en/nh-l9a-am4">Noctua NH-L9a AM4</a>, the setup is very
quiet, especially once you limit the CPU TDP and adjust the fan curve. In my
experience, the &ldquo;coil whine&rdquo; noise that the system produces under load is more
audible than the CPU fan itself.</p>









<figure class="center">
  <a href="/posts/2022/01/17/asrock-x300-future-of-desktops/media/2-cooler-installed.jpg">
    <img src="/posts/2022/01/17/asrock-x300-future-of-desktops/media/2-cooler-installed_hu_1ab963d658dec229.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="Low profile Noctua cooler: looks good, is quiet and keeps the system cool.">

  </a>
  <figcaption class="center">Low profile Noctua cooler: looks good, is quiet and keeps the system cool.</figcaption>
</figure>

<p>When it comes to storage options, the DeskMini is an obvious winner. In modern
TinyMiniMicro machines that I&rsquo;ve seen, you can at most install two NVMe SSD-s.
This is a step up from older machines and you can still do a lot with that, but
the DeskMini trumps that with the addition of two SATA ports, which allows you
to go crazy with the storage configuration.</p>









<figure class="center">
  <a href="/posts/2022/01/17/asrock-x300-future-of-desktops/media/4-bulk-storage.jpg">
    <img src="/posts/2022/01/17/asrock-x300-future-of-desktops/media/4-bulk-storage_hu_3f5d94339265be4d.webp"
     width="600"
     height="800"
     loading="lazy"
     decoding="async"
     alt="8TB of solid state storage. Bonkers.">

  </a>
  <figcaption class="center">8TB of solid state storage. Bonkers.</figcaption>
</figure>

<p>Both the DeskMini and TinyMiniMicro-series PC-s are fantastic, but for my use
case the DeskMini X300 was the obvious choice.</p>
<h2 id="tech-tip-vesa-mounts-for-what">
  <a class="heading-anchor" href="#tech-tip-vesa-mounts-for-what">Tech tip: VESA mounts, for what?<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 DeskMini X300 is so light and small that you can easily attach it to a
monitor arm using a piece of foam and long velcro strips.</p>









<figure class="center">
  <a href="/posts/2022/01/17/asrock-x300-future-of-desktops/media/6-custommount.jpg">
    <img src="/posts/2022/01/17/asrock-x300-future-of-desktops/media/6-custommount_hu_2101070382b2a45.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="DeskMini X300 mounted on a monitor arm.">

  </a>
  <figcaption class="center">DeskMini X300 mounted on a monitor arm.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2022/01/17/asrock-x300-future-of-desktops/media/7-custommount.jpg">
    <img src="/posts/2022/01/17/asrock-x300-future-of-desktops/media/7-custommount_hu_f7b4950e8939cd42.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="Behind the scenes.">

  </a>
  <figcaption class="center">Behind the scenes.</figcaption>
</figure>

<h2 id="future-plans">
  <a class="heading-anchor" href="#future-plans">Future plans<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;m hoping that the current DeskMini-based server configuration is the one that
will last me a while. The obvious upgrades in the future would be to max out the
RAM at 64 GB and upgrade the NVMe and SATA storage to whatever options are
available in the future. I&rsquo;m not expecting the DeskMini X300 to get a CPU
upgrade, which isn&rsquo;t too tragic, given that the Ryzen 7 5700G has 8 fast cores.</p>
<p>My adventures in low power computing may take me to another setup in the future.
Until then, I&rsquo;ll see how the DeskMini does. So far, it has met my expectations
in performance, power usage, reliability and noise.</p>
<h2 id="future-of-desktop-computing">
  <a class="heading-anchor" href="#future-of-desktop-computing">Future of desktop computing?<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>Predictions are difficult to make, especially in turbulent times that we&rsquo;ve
found ourselves in. I do hope that this form factor takes off and that we
reevaluate our current computing workloads to be more suitable for machines
that use a lot less power.</p>
<p>Constraints often result in clever tricks and fantastic end results. Hopefully
we&rsquo;ll see something similar in the future.</p>
<p>To get an idea of what you can achieve with very limited hardware, check out
the <a href="https://www.youtube.com/c/CodingSecrets">Coding Secrets YouTube channel</a>
that showcases all the tricks and thinking behind some of the most impressive
effects on game consoles from early 90&rsquo;s.</p>
<p>Sure, you can argue that not having to think about such limitations can help
create solutions faster and that definitely has some value, but at some point
we need to start optimizing. Computing resources are cheap right up to the point
where every app on your PC thinks the same way.</p>
]]></content:encoded></item><item><title>AMD Ryzen 7 5700G: first impressions on Fedora 34</title><link>https://ounapuu.ee/posts/2021/08/07/amd-ryzen-7-5700-first-impressions/</link><pubDate>Sat, 07 Aug 2021 07:00:00 +0300</pubDate><author>ihavesomethoughtsonyourblog@ounapuu.ee (Herman Õunapuu)</author><guid>https://ounapuu.ee/posts/2021/08/07/amd-ryzen-7-5700-first-impressions/</guid><description>Or _'How to downgrade your CPU at great expense!'_</description><content:encoded><![CDATA[<img src="https://ounapuu.ee/media/cover_hu_4fe4cf2661554252.jpg" width="1200" height="630" alt="AMD Ryzen 7 5700G: first impressions on Fedora 34" /><h2 id="introduction">
  <a class="heading-anchor" href="#introduction">Introduction<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;ve covered my self-hosting setup in <a href="/posts/2021/05/23/self-hosting-endgame/">a previous post</a>. It has been a couple of
months and the setup has mostly been fine. Sure, the power usage was pretty big under load, and yes, my internet did cut
out every time I turned the VM on with all the services starting, but other than that, it has been rock-solid.</p>
<p>However, I soon realized that in most situations, the 12 CPU cores is a bit overkill. Performance was fantastic, but due
to the case and the cooling solution that I&rsquo;m using, the fans did have to ramp up to cool the CPU down. Due to the
ongoing GPU drought driven by yet another cryptocurrency bubble, it also felt a bit wasteful to use an AMD RX 560 just
to drive two 1080p monitors.</p>
<p>It just so happened that around this time, AMD released the Ryzen 5000 G-series APU-s to retail. Yes, you could buy the
4000 series &ldquo;OEM-only&rdquo; APU-s from certain online retailers as well, but with this release, it&rsquo;s 100% official. The
release date rolled around, and the reviews were good. A day later, the CPU was also listed at a local reseller and was
actually in stock. After checking the street price for a used Ryzen 9 3900X and the Radeon RX 560, I decided to go for
it, as it would be very close to a free &ldquo;upgrade&rdquo;.</p>









<figure class="center">
  <a href="/posts/2021/08/07/amd-ryzen-7-5700-first-impressions/media/image1.jpg">
    <img src="/posts/2021/08/07/amd-ryzen-7-5700-first-impressions/media/image1_hu_e44d061a3baf7773.webp"
     width="600"
     height="800"
     loading="lazy"
     decoding="async"
     alt="CPU retail packaging. Holds the APU and a small CPU cooler as well.">

  </a>
  <figcaption class="center">CPU retail packaging. Holds the APU and a small CPU cooler as well.</figcaption>
</figure>

<h2 id="prep-work">
  <a class="heading-anchor" href="#prep-work">Prep work<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>Before performing the purchase, I confirmed that the motherboard that I
use (<a href="https://www.gigabyte.com/Motherboard/B450-I-AORUS-PRO-WIFI-rev-10#kf">Gigabyte  B450 I AORUS PRO WIFI</a>) supports
this CPU after a BIOS upgrade. B450 chipset lives in a bit of a gray area where the CPU support is determined by the
motherboard manufacturer. No updates? No CPU support for you.</p>
<p>From my previous BIOS updating experiences, I remember that this particular motherboard had some buggy BIOS
implementations. I ran into two issues:</p>
<ul>
<li>PC would get stuck on POST if you reboot. It&rsquo;s annoying when making changes to UEFI settings, but with my use case
this is not that big of a deal.</li>
<li>If you remove a boot option, then it is impossible to get it back. Seriously, even a CMOS reset did not help with this
one.</li>
</ul>
<p>This time around, I decided to update the versions one by one to follow the happy path and not run into other types of
issues. The bug did resurface right after the first version that I tried, so that was a bit disappointing.</p>









<figure class="center">
  <a href="/posts/2021/08/07/amd-ryzen-7-5700-first-impressions/media/image2.jpg">
    <img src="/posts/2021/08/07/amd-ryzen-7-5700-first-impressions/media/image2_hu_e5575283135b3859.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="Now would be the perfect time for a surprise power outage or a cat intervention.">

  </a>
  <figcaption class="center">Now would be the perfect time for a surprise power outage or a cat intervention.</figcaption>
</figure>

<p>Once I was all up-to-date, I carefully removed the old CPU and plugged in the new one.</p>









<figure class="center">
  <a href="/posts/2021/08/07/amd-ryzen-7-5700-first-impressions/media/image3.jpg">
    <img src="/posts/2021/08/07/amd-ryzen-7-5700-first-impressions/media/image3_hu_b1b288149193258a.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="There&#39;s something very satisfying and beautiful about computer hardware. Just look at it!">

  </a>
  <figcaption class="center">There&#39;s something very satisfying and beautiful about computer hardware. Just look at it!</figcaption>
</figure>

<h2 id="hold-on-why-would-you-intentionally-downgrade-your-cpu">
  <a class="heading-anchor" href="#hold-on-why-would-you-intentionally-downgrade-your-cpu">Hold on, why would you intentionally downgrade your CPU?<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 all came down to <em>&ldquo;use the right tool for the job&rdquo;</em>. The Ryzen 9 3900X is a good CPU, no doubts about that, but
during my work, I kept an eye on my CPU usage quite often and found that even in the worst-case scenarios, such as
IntelliJ IDEA performing indexing, I wasn&rsquo;t using the CPU to the full extent. It&rsquo;s great for those scenarios, but I
wasn&rsquo;t hitting them as often as I would have thought.</p>
<p>It also did not help that the CPU did not have an integrated GPU. When all you have to run is a basic desktop setup with
60Hz 1080p monitors, having a dedicated GPU to run them sounds so wasteful. This increased the power use of the whole
setup and the GPU could be utilized better elsewhere.</p>
<p>The Ryzen 7 5700G is a downgrade in multi-core performance, mainly due to 4 fewer cores and only 25% of the L3 cache,
but according to various reviews and benchmarks, you could actually expect a small single-core performance uplift.
Nothing groundbreaking, but good enough for my use case.</p>
<h2 id="power-usage">
  <a class="heading-anchor" href="#power-usage">Power usage<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>Because I don&rsquo;t change my CPU-s too often, I thought I&rsquo;d take the time to run some benchmarks and measure the power
usage of the whole setup. This includes everything: the PC (with two spinning hard drives), standing desk, two 1080p
monitors and peripherals.</p>
<p>Please note that these benchmarks are not very scientific and are simply my observations of the change you can expect
when performing a switch like this on your own setup. I did my best to make sure that the running conditions are as
close as possible by stopping the service VM, waiting until the background CPU usage was normal, running the memory at
the same spec etc.</p>
<h3 id="amd-ryzen-9-3900x--radeon-rx-560">
  <a class="heading-anchor" href="#amd-ryzen-9-3900x--radeon-rx-560">AMD Ryzen 9 3900X + Radeon RX 560<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>
</h3>
<ul>
<li>Idle, sitting on desktop: ~139W</li>
<li>Full synthetic CPU load using <code>stress</code>: ~253W</li>
</ul>
<h3 id="amd-ryzen-7-5700g--integrated-vega-8-gpu">
  <a class="heading-anchor" href="#amd-ryzen-7-5700g--integrated-vega-8-gpu">AMD Ryzen 7 5700G + integrated Vega 8 GPU<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>
</h3>
<ul>
<li>Idle, sitting on desktop: ~99W (generally between 85-100W)</li>
<li>Full synthetic CPU load using <code>stress</code>: ~166W</li>
</ul>
<p>As expected, the change of the CPU and removal of the dedicated GPU results in a big drop when it comes to the power
usage of the whole workstation setup. To go even lower, I&rsquo;d have to switch out the core of the PC to something like
the <a href="https://www.asrock.com/nettop/AMD/DeskMini%20X300%20Series/">ASRock Deskmini X300</a> and replace the hard drives with
two big SSD-s. I&rsquo;d go for that as soon as bulk SSD storage became a viable option. Unfortunately, this is not the case,
yet.</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>Reputable review sites, such
as <a href="https://www.anandtech.com/show/16824/amd-ryzen-7-5700g-and-ryzen-5-5600g-apu-review">AnandTech</a>, have already done a
lot of benchmarks with better testing methodologies, so I instead went ahead and tested out something that I do quite
often at work: running tests in poorly written Java projects!</p>
<p>For this, I have two Java projects that have their own test suites. Project A has 900 or so tests, which are mainly
parallel in nature. Project B has 2000+ tests, where a good number of them are dependent on a single thread to do all
the work.</p>
<p>To run the tests, I just call the &ldquo;Run all tests&rdquo; function in IntelliJ and let it do the work of running the tests and
measuring the elapsed time. And as mentioned before: this is not scientific, there are probably some errors in here, but
the actions performed here are in my opinion a pretty good reflection of day-to-day work, and that&rsquo;s what matters the
most to me. Tests were run twice with a short break between the test runs to let the CPU cool down a bit.</p>
<h3 id="project-a-amd-ryzen-9-3900x">
  <a class="heading-anchor" href="#project-a-amd-ryzen-9-3900x">Project A: AMD Ryzen 9 3900X<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>
</h3>
<p>Test run 1: 10.396s.</p>
<p>Test run 2: 10.494s.</p>
<h3 id="project-a-amd-ryzen-7-5700g">
  <a class="heading-anchor" href="#project-a-amd-ryzen-7-5700g">Project A: AMD Ryzen 7 5700G<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>
</h3>
<p>Test run 1: 15.561s.</p>
<p>Test run 2: 15.690s.</p>









<figure class="center">
  <a href="/posts/2021/08/07/amd-ryzen-7-5700-first-impressions/media/image4.png">
    <img src="/posts/2021/08/07/amd-ryzen-7-5700-first-impressions/media/image4_hu_df8ef1bdccee37b.webp"
     width="952"
     height="407"
     loading="lazy"
     decoding="async"
     alt="CPU usage on the Ryzen 9 3900X during the test run.">

  </a>
  <figcaption class="center">CPU usage on the Ryzen 9 3900X during the test run.</figcaption>
</figure>

<h3 id="project-b-amd-ryzen-9-3900x">
  <a class="heading-anchor" href="#project-b-amd-ryzen-9-3900x">Project B: AMD Ryzen 9 3900X<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>
</h3>
<p>Test run 1: 364s.</p>
<p>Test run 2: 365s.</p>
<h3 id="project-b-amd-ryzen-7-5700g">
  <a class="heading-anchor" href="#project-b-amd-ryzen-7-5700g">Project B: AMD Ryzen 7 5700G<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>
</h3>
<p>Test run 1: 471s.</p>
<p>Test run 2: 480s.</p>
<p>The performance hit was somewhat expected for project A due to the parallel nature of the tests. However, for project B
I expected better results than that due to the alleged improvements in single-thread CPU performance.</p>
<h2 id="the-linux-experience">
  <a class="heading-anchor" href="#the-linux-experience">The Linux 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>I expected the APU to work as expected, with perhaps some small issues popping up here and there. I&rsquo;m currently running
Fedora 34 with all the latest updates installed and the kernel version at 5.13.6, which should be the best option when
trying to get new hardware working on Linux.</p>
<p>The CPU portion of the APU is working relatively well for a CPU that was released just a couple of days ago. I have
noticed that for some reason this CPU is constantly clocked at around 4.2GHz on all cores at all times, even if there
isn&rsquo;t too much going on in the system. <code>sensors</code>, the program I use to monitor system temperatures, is also having a
small hiccup, as I cannot see the CPU temperatures at all, only the integrated GPU temperatures show up even after
running <code>sensors-detect</code>.</p>
<pre tabindex="0"><code>nvme-pci-0900
Adapter: PCI adapter
Composite:    +47.9°C  (low  = -40.1°C, high = +89.8°C)
                       (crit = +93.8°C)
Sensor 2:     +47.9°C  (low  = -40.1°C, high = +89.8°C)

iwlwifi_1-virtual-0
Adapter: Virtual device
temp1:        +48.0°C  

amdgpu-pci-0a00
Adapter: PCI adapter
vddgfx:        1.36 V  
vddnb:       999.00 mV 
edge:         +51.0°C  
power1:        6.00 mW 
</code></pre><p>The GPU seems to be a bit rough around the corners. I&rsquo;m using the <a href="https://www.gnome.org/">GNOME desktop environment</a>,
which means that I&rsquo;ve learned to endure laggy user interfaces. I default to using Wayland, but I sometimes also use Xorg
for those situations where the application I&rsquo;m trying to run does not work properly under Wayland (looking at you, Slack
and your screen sharing functionality&hellip;).</p>
<p>The integrated Vega 8 graphics are almost as fast as the dedicated RX 560 GPU under normal light desktop workloads. Once
you run something very heavy, like Furmark, the GPU performance tanks and the desktop becomes almost unusable. This is
not the case when running some
<a href="https://webglsamples.org/">WebGL workloads</a> though, so it could be an isolated case.</p>
<p>The most serious issue I&rsquo;ve managed to find is that Firefox has some issues with this GPU once you put enough load on
the GPU. You may start to notice flickering and UI elements blinking when moving around. A good test case for this is to
run <a href="https://www.netdata.cloud/">Netdata</a> in live mode and have a 1080p Youtube video in another window. I haven&rsquo;t seen
anything like that since running
the <a href="https://www.pny.eu/en/consumer/explore-all-products/graphics-cards/1294-geforce-gt-710-2gb-ddr3-single-fan">Nvidia GT 710</a>
with Nouveau drivers under Fedora 34. At least it does not crash the browser or the Wayland session, so it&rsquo;s not a
complete disaster. Still, pretty annoying, so I hope this gets resolved eventually. If I had to guess: the issue is
probably related to the Webrender implementation that makes use of the GPU to speed up the browsing experience.</p>
<h2 id="closing-thoughts">
  <a class="heading-anchor" href="#closing-thoughts">Closing thoughts<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>Overall, I&rsquo;m happy that the APU actually works. I&rsquo;ve had a couple of bad experiences in the past where the Ryzen 3 2200G
had stability issues and had to be replaced, so this experience is already a step up from that. The PC runs cooler and
quieter, the desktop experience is good enough for me and the CPU performance is acceptable.</p>
<p>I&rsquo;m sure that the issues that I&rsquo;ve had with this APU under Linux will be fixed eventually. Each kernel update usually
brings lots of improvements to new hardware and I&rsquo;m sure that this APU is no exception.</p>
<p>As for the BIOS issues, I&rsquo;m happy that AMD and Gigabyte opted to support the B450 chipset well into 2021, but I&rsquo;m sure
that this choice has come at the cost of QA. If I had to choose between buggy support and having to buy a new
motherboard for my new, shiny CPU, then I&rsquo;d still pick the first one.</p>
<h2 id="update-2021-08-18">
  <a class="heading-anchor" href="#update-2021-08-18">Update (2021-08-18)<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;ve had this CPU for a while now, and there have been a couple of kernel updates in the meantime. Here are my notes.</p>
<p>The idle power usage has recently been in between 65-70W for the whole setup. I&rsquo;ve measured the desktop itself to take up 38W of that.</p>
<p>Although my motherboard does not seem to expose the cTDP option or have <code>ECO mode</code> available, I still managed to limit my TDP to 45W
using <a href="https://www.reddit.com/r/Amd/comments/j3ro5j/eco_mode_setting_in_bios_on_gigabyte_b550i_aorus/g7dysoo/">this trick that /u/The-Stilt mentioned over at Reddit</a>:</p>
<pre tabindex="0"><code>The potential lack of the ECO-mode does not prevent you from using it, 
since it is nothing but a preset of PPT/TDC/EDC settings.

Eco-Mode (95W): PPT = 128W, TDC = 80A, EDC = 125A

Eco-Mode (65W): PPT = 88W, TDC = 60A, EDC = 90A

Eco-Mode (45W): PPT = 61W, TDC = 45A, EDC = 65A
</code></pre><p>This had a great effect on the full load of the system: 3.8GHz all-core while the whole setup consumed 113W.</p>









<figure class="center">
  <a href="/posts/2021/08/07/amd-ryzen-7-5700-first-impressions/media/image5.jpg">
    <img src="/posts/2021/08/07/amd-ryzen-7-5700-first-impressions/media/image5_hu_734652f1c723e4d1.webp"
     width="1067"
     height="800"
     loading="lazy"
     decoding="async"
     alt="Precision Boost Overdrive settings that should result in a nice efficiency win. Target = 45W.">

  </a>
  <figcaption class="center">Precision Boost Overdrive settings that should result in a nice efficiency win. Target = 45W.</figcaption>
</figure>

<h2 id="update-2021-08-20">
  <a class="heading-anchor" href="#update-2021-08-20">Update (2021-08-20)<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>Quick update on the GPU situation: Firefox seems to be fine now, I could not get the flickering to occur again even under
worst case scenarios.</p>
<h2 id="notes-and-stuff">
  <a class="heading-anchor" href="#notes-and-stuff">Notes and stuff<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>Here are the outputs for a couple of commands that I could think of.</p>
<h3 id="iommu-groups">
  <a class="heading-anchor" href="#iommu-groups">IOMMU groups<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>
</h3>
<p>Script taken from <a href="https://wiki.archlinux.org/title/PCI_passthrough_via_OVMF#Setting_up_IOMMU">Arch wiki</a>.</p>
<pre tabindex="0"><code>shopt -s nullglob
for g in `find /sys/kernel/iommu_groups/* -maxdepth 0 -type d | sort -V`; do
    echo &#34;IOMMU Group ${g##*/}:&#34;
    for d in $g/devices/*; do
        echo -e &#34;\t$(lspci -nns ${d##*/})&#34;
    done;
done;

IOMMU Group 0:
        00:01.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Renoir PCIe Dummy Host Bridge [1022:1632]
IOMMU Group 1:
        00:02.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Renoir PCIe Dummy Host Bridge [1022:1632]
IOMMU Group 2:
        00:02.1 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne PCIe GPP Bridge [1022:1634]
IOMMU Group 3:
        00:02.2 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne PCIe GPP Bridge [1022:1634]
IOMMU Group 4:
        00:08.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Renoir PCIe Dummy Host Bridge [1022:1632]
        00:08.1 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Renoir Internal PCIe GPP Bridge to Bus [1022:1635]
        00:08.2 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Renoir Internal PCIe GPP Bridge to Bus [1022:1635]
        0a:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Cezanne [1002:1638] (rev c8)
        0a:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Renoir Radeon High Definition Audio Controller [1002:1637]
        0a:00.2 Encryption controller [1080]: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 10h-1fh) Platform Security Processor [1022:15df]
        0a:00.3 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne USB 3.1 [1022:1639]
        0a:00.4 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne USB 3.1 [1022:1639]
        0a:00.6 Audio device [0403]: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 10h-1fh) HD Audio Controller [1022:15e3]
        0b:00.0 SATA controller [0106]: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] [1022:7901] (rev 81)
        0b:00.1 SATA controller [0106]: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] [1022:7901] (rev 81)
IOMMU Group 5:
        00:14.0 SMBus [0c05]: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller [1022:790b] (rev 51)
        00:14.3 ISA bridge [0601]: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge [1022:790e] (rev 51)
IOMMU Group 6:
        00:18.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:166a]
        00:18.1 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:166b]
        00:18.2 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:166c]
        00:18.3 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:166d]
        00:18.4 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:166e]
        00:18.5 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:166f]
        00:18.6 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:1670]
        00:18.7 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:1671]
IOMMU Group 7:
        01:00.0 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset USB 3.1 XHCI Controller [1022:43d5] (rev 01)
        01:00.1 SATA controller [0106]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset SATA Controller [1022:43c8] (rev 01)
        01:00.2 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Bridge [1022:43c6] (rev 01)
        02:00.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
        02:01.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
        02:04.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
        02:05.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
        02:06.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
        02:07.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
        06:00.0 Network controller [0280]: Intel Corporation Wireless-AC 9260 [8086:2526] (rev 29)
        08:00.0 Ethernet controller [0200]: Intel Corporation I211 Gigabit Network Connection [8086:1539] (rev 03)
IOMMU Group 8:
        09:00.0 Non-Volatile memory controller [0108]: Kingston Technology Company, Inc. U-SNS8154P3 NVMe SSD [2646:5008] (rev 01)
</code></pre><pre tabindex="0"><code># lscpu
Architecture:                    x86_64
CPU op-mode(s):                  32-bit, 64-bit
Byte Order:                      Little Endian
Address sizes:                   48 bits physical, 48 bits virtual
CPU(s):                          16
On-line CPU(s) list:             0-15
Thread(s) per core:              2
Core(s) per socket:              8
Socket(s):                       1
NUMA node(s):                    1
Vendor ID:                       AuthenticAMD
CPU family:                      25
Model:                           80
Model name:                      AMD Ryzen 7 5700G with Radeon Graphics
Stepping:                        0
Frequency boost:                 enabled
CPU MHz:                         3800.000
CPU max MHz:                     4672,0698
CPU min MHz:                     1400,0000
BogoMIPS:                        7585.94
Virtualization:                  AMD-V
L1d cache:                       256 KiB
L1i cache:                       256 KiB
L2 cache:                        4 MiB
L3 cache:                        16 MiB
NUMA node0 CPU(s):               0-15
Vulnerability Itlb multihit:     Not affected
Vulnerability L1tf:              Not affected
Vulnerability Mds:               Not affected
Vulnerability Meltdown:          Not affected
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp
Vulnerability Spectre v1:        Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:        Mitigation; Full AMD retpoline, IBPB conditional, IBRS_FW, STIBP always-on, RSB filling
Vulnerability Srbds:             Not affected
Vulnerability Tsx async abort:   Not affected
Flags:                           fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid ap
                                 erfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topo
                                 ext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a rdseed adx smap clflushopt clwb sha_ni 
                                 xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local clzero irperf xsaveerptr rdpru wbnoinvd arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists paus
                                 efilter pfthreshold avic v_vmsave_vmload vgif v_spec_ctrl umip pku ospke vaes vpclmulqdq rdpid overflow_recov succor smca fsrm
</code></pre><pre tabindex="0"><code># lspci -nnk
00:00.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne Root Complex [1022:1630]
	Subsystem: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne Root Complex [1022:1630]
00:00.2 IOMMU [0806]: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne IOMMU [1022:1631]
	Subsystem: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne IOMMU [1022:1631]
00:01.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Renoir PCIe Dummy Host Bridge [1022:1632]
00:02.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Renoir PCIe Dummy Host Bridge [1022:1632]
00:02.1 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne PCIe GPP Bridge [1022:1634]
	Kernel driver in use: pcieport
00:02.2 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne PCIe GPP Bridge [1022:1634]
	Kernel driver in use: pcieport
00:08.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Renoir PCIe Dummy Host Bridge [1022:1632]
00:08.1 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Renoir Internal PCIe GPP Bridge to Bus [1022:1635]
	Kernel driver in use: pcieport
00:08.2 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Renoir Internal PCIe GPP Bridge to Bus [1022:1635]
	Kernel driver in use: pcieport
00:14.0 SMBus [0c05]: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller [1022:790b] (rev 51)
	Subsystem: Gigabyte Technology Co., Ltd Device [1458:5001]
	Kernel modules: i2c_piix4, sp5100_tco
00:14.3 ISA bridge [0601]: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge [1022:790e] (rev 51)
	Subsystem: Gigabyte Technology Co., Ltd Device [1458:5001]
00:18.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:166a]
00:18.1 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:166b]
00:18.2 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:166c]
00:18.3 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:166d]
00:18.4 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:166e]
00:18.5 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:166f]
00:18.6 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:1670]
00:18.7 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:1671]
01:00.0 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset USB 3.1 XHCI Controller [1022:43d5] (rev 01)
	Subsystem: ASMedia Technology Inc. Device [1b21:1142]
	Kernel driver in use: xhci_hcd
01:00.1 SATA controller [0106]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset SATA Controller [1022:43c8] (rev 01)
	Subsystem: ASMedia Technology Inc. Device [1b21:1062]
	Kernel driver in use: ahci
01:00.2 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Bridge [1022:43c6] (rev 01)
	Kernel driver in use: pcieport
02:00.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
	Kernel driver in use: pcieport
02:01.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
	Kernel driver in use: pcieport
02:04.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
	Kernel driver in use: pcieport
02:05.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
	Kernel driver in use: pcieport
02:06.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
	Kernel driver in use: pcieport
02:07.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
	Kernel driver in use: pcieport
06:00.0 Network controller [0280]: Intel Corporation Wireless-AC 9260 [8086:2526] (rev 29)
	Subsystem: Intel Corporation Device [8086:0014]
	Kernel driver in use: iwlwifi
	Kernel modules: iwlwifi
08:00.0 Ethernet controller [0200]: Intel Corporation I211 Gigabit Network Connection [8086:1539] (rev 03)
	Subsystem: Gigabyte Technology Co., Ltd Device [1458:e000]
	Kernel driver in use: igb
	Kernel modules: igb
09:00.0 Non-Volatile memory controller [0108]: Kingston Technology Company, Inc. U-SNS8154P3 NVMe SSD [2646:5008] (rev 01)
	Subsystem: Kingston Technology Company, Inc. U-SNS8154P3 NVMe SSD [2646:5008]
	Kernel driver in use: nvme
	Kernel modules: nvme
0a:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Cezanne [1002:1638] (rev c8)
	Subsystem: Gigabyte Technology Co., Ltd Device [1458:d000]
	Kernel driver in use: amdgpu
	Kernel modules: amdgpu
0a:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Renoir Radeon High Definition Audio Controller [1002:1637]
	Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Renoir Radeon High Definition Audio Controller [1002:1637]
	Kernel driver in use: snd_hda_intel
	Kernel modules: snd_hda_intel
0a:00.2 Encryption controller [1080]: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 10h-1fh) Platform Security Processor [1022:15df]
	Subsystem: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 10h-1fh) Platform Security Processor [1022:15df]
	Kernel driver in use: ccp
	Kernel modules: ccp
0a:00.3 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne USB 3.1 [1022:1639]
	Subsystem: Gigabyte Technology Co., Ltd Device [1458:5007]
	Kernel driver in use: xhci_hcd
0a:00.4 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne USB 3.1 [1022:1639]
	Subsystem: Gigabyte Technology Co., Ltd Device [1458:5007]
	Kernel driver in use: xhci_hcd
0a:00.6 Audio device [0403]: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 10h-1fh) HD Audio Controller [1022:15e3]
	Subsystem: Gigabyte Technology Co., Ltd Device [1458:a0c3]
	Kernel driver in use: snd_hda_intel
	Kernel modules: snd_hda_intel
0b:00.0 SATA controller [0106]: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] [1022:7901] (rev 81)
	Subsystem: Gigabyte Technology Co., Ltd Device [1458:b002]
	Kernel driver in use: ahci
0b:00.1 SATA controller [0106]: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] [1022:7901] (rev 81)
	Subsystem: Gigabyte Technology Co., Ltd Device [1458:b002]
	Kernel driver in use: ahci
</code></pre>]]></content:encoded></item><item><title>What running out of SATA ports looks like</title><link>https://ounapuu.ee/posts/2020/08/29/what-running-out-of-sata-ports-looks-like/</link><pubDate>Sat, 29 Aug 2020 17:21:21 +0300</pubDate><author>ihavesomethoughtsonyourblog@ounapuu.ee (Herman Õunapuu)</author><guid>https://ounapuu.ee/posts/2020/08/29/what-running-out-of-sata-ports-looks-like/</guid><description>How I slapped two hard drives on a long PCIe x1 card.</description><content:encoded><![CDATA[<img src="https://ounapuu.ee/media/cover_hu_4fe4cf2661554252.jpg" width="1200" height="630" alt="What running out of SATA ports looks like" /><p>One day I stumbled upon a <a href="https://www.youtube.com/watch?v=nQiWP8T9R60">Craft Computing video</a>
about his new server build, and on the parts list was a Sedna PCI Express 2x SATA adapter card:</p>









<figure class="center">
  <a href="/posts/2020/08/29/what-running-out-of-sata-ports-looks-like/media/image1.jpg">
    <img src="/posts/2020/08/29/what-running-out-of-sata-ports-looks-like/media/image1_hu_ab7a146edba408d5.webp"
     width="500"
     height="500"
     loading="lazy"
     decoding="async"
     alt="The card in question.">

  </a>
  <figcaption class="center">The card in question.</figcaption>
</figure>

<p>There are different designs out there, including a 4x SATA card, which is bonkers.</p>
<p>Anyway, I thought that I might as well give this a shot, since I have two 4TB 2.5&quot; 15mm Seagate hard drives running,
<a href="/posts/2020/08/22/disk-is-ok/">with one of them being in the process of accumulating bad sectors</a>.</p>









<figure class="center">
  <a href="/posts/2020/08/29/what-running-out-of-sata-ports-looks-like/media/20-08-26-19-48-37-1942.jpg">
    <img src="/posts/2020/08/29/what-running-out-of-sata-ports-looks-like/media/20-08-26-19-48-37-1942_hu_75dac604464ff51f.webp"
     width="1024"
     height="768"
     loading="lazy"
     decoding="async"
     alt="Adapter card with two drives installed (front).">

  </a>
  <figcaption class="center">Adapter card with two drives installed (front).</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2020/08/29/what-running-out-of-sata-ports-looks-like/media/20-08-26-19-48-58-1944.jpg">
    <img src="/posts/2020/08/29/what-running-out-of-sata-ports-looks-like/media/20-08-26-19-48-58-1944_hu_2c16666f075f2054.webp"
     width="1024"
     height="768"
     loading="lazy"
     decoding="async"
     alt="Adapter card with two drives installed (back).">

  </a>
  <figcaption class="center">Adapter card with two drives installed (back).</figcaption>
</figure>

<p>The installation procedure itself is simple, just take your drives, screw them in and
plug this into a PCIe slot.</p>









<figure class="center">
  <a href="/posts/2020/08/29/what-running-out-of-sata-ports-looks-like/media/20-08-26-19-55-14-1945.jpg">
    <img src="/posts/2020/08/29/what-running-out-of-sata-ports-looks-like/media/20-08-26-19-55-14-1945_hu_158a5b5bf4dc792f.webp"
     width="1024"
     height="768"
     loading="lazy"
     decoding="async"
     alt="This is what it looks like installed into my server.">

  </a>
  <figcaption class="center">This is what it looks like installed into my server.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2020/08/29/what-running-out-of-sata-ports-looks-like/media/20-08-26-19-55-19-1946.jpg">
    <img src="/posts/2020/08/29/what-running-out-of-sata-ports-looks-like/media/20-08-26-19-55-19-1946_hu_f6c7d8eb46ed23c0.webp"
     width="1024"
     height="768"
     loading="lazy"
     decoding="async"
     alt="Alternate angle.">

  </a>
  <figcaption class="center">Alternate angle.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2020/08/29/what-running-out-of-sata-ports-looks-like/media/20-08-26-19-55-30-1947.jpg">
    <img src="/posts/2020/08/29/what-running-out-of-sata-ports-looks-like/media/20-08-26-19-55-30-1947_hu_d034eeb1ca74dcc6.webp"
     width="1024"
     height="768"
     loading="lazy"
     decoding="async"
     alt="Alternate angle.">

  </a>
  <figcaption class="center">Alternate angle.</figcaption>
</figure>










<figure class="center">
  <a href="/posts/2020/08/29/what-running-out-of-sata-ports-looks-like/media/20-08-26-21-15-02-1948.jpg">
    <img src="/posts/2020/08/29/what-running-out-of-sata-ports-looks-like/media/20-08-26-21-15-02-1948_hu_8e6fd98d676b1c98.webp"
     width="1024"
     height="768"
     loading="lazy"
     decoding="async"
     alt="As you can see, it did not kill the system.">

  </a>
  <figcaption class="center">As you can see, it did not kill the system.</figcaption>
</figure>

<h2 id="so-how-well-does-it-work">
  <a class="heading-anchor" href="#so-how-well-does-it-work">So, how well does it work?<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>Quite well, actually.</p>
<p>The PCIe 2.0 x1 link does mean that your speeds will be capped at around 500MB/s, but
with current hard drives you are unlikely to reach this limit. SSD-s, on the other hand,
will be bottlenecked in sequential read/write workloads.</p>
<p><code>lspci -nnk</code> output:</p>
<pre tabindex="0"><code>01:00.0 SATA controller [0106]: ASMedia Technology Inc. ASM1062 Serial ATA Controller [1b21:0612] (rev 01)
        Subsystem: ASMedia Technology Inc. Device [1b21:1060]
        Kernel driver in use: ahci
        Kernel modules: ahci
</code></pre><p>The drives are individually addressable and show up as normal drives (like <code>/dev/sda</code>).
S.M.A.R.T info is functional and readable.</p>
<p>This adapter has been running in my system for over half a week now and so far
there haven&rsquo;t been any stability issues whatsoever.</p>
<h2 id="should-i-get-this">
  <a class="heading-anchor" href="#should-i-get-this">Should I get this?<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 adapter is a good fit for the following use cases:</p>
<ul>
<li>there are no more HDD/SSD drive mounts in your system left and you do not want
to use double-sided tape as one</li>
<li>you have run out of SATA ports and don&rsquo;t mind using up a PCIe slot</li>
<li>you want to install additional SATA drives in your system, but also would prefer
to keep the amount of cabling in your system at a minimum</li>
<li>flexing on your friends with your fancy new 8/10 TB storage card</li>
</ul>
<p>I would recommend looking into alternative solutions if your use case matches one of these:</p>
<ul>
<li>using this adapter with SSD-s on sequential read/write workloads that exceed 500+MB/s</li>
<li>adding more than two SATA drives into your system (get a simple PCIe -&gt; SATA adapter
that only provides the data connectors instead)</li>
</ul>
]]></content:encoded></item></channel></rss>