First workstation build in years

published on in category Linux , Tags: linux amd ryzen radeon apple macos ubuntu

In the past fifteen years, I have used Macs and macOS became my operating system of choice. The first mac I got was a Mac Mini G4 and in the following years it was exchanged by a multitude of other devices. There are many things to love about the Mac, including the asthetics, silent operation, the fact that it all works out-of-the-box, alongside a neat UNIX-based operating system that can run both most proprietary applications alongside open source UNIX apps. As my projects started to get more sophisticated in the recent years, I figured that my requirements shifted from the need for the perfect all-rounder that can run popular image editing apps, music and video production, development environments etc., to a more specific set of requirements. So I decided to build a PC for development purposes.

Hardware

Since I wanted to preserve many of the hardware aspects I like on the Mac, I decided to go with a setup targeting silent operation, snappy desktop usage, a somewhat minimalistic design (meaning no RGB or anything like that) and enough performance to be able to accomplish all the tasks I likely throw at it including somespare resources.

Build

Originally, I wanted to go with an GeForce RTX 1050 Ti since it has better ffmpeg hardware accelleration support, but as it turns out, Nvidia still sucks on Linux. So I went with a Radeon RX 5500 XT which works like a charm out of the box and has such a good fan control that with my normal workload, it’s basically inaudible.

The reason I went with be quiet! instead of Noctua is that I got everything with black PCBs and since the H210 has a tempered glass side panel, I wanted everything to be as calm and uniform as possible - hence the black be quiet! components ;-)

The mainboard turned out to be a great choice: It comes with enough USB 3, USB-C, Intel 2.5GBit/s LAN adapter, WiFi 6 and BT. This leaves not a single drawback comparing to the Mac when it comes to peripheral connection options.

Build internals

Configuration

Be sure to update your BIOS as the first thing before installing an OS. Seems to be a thing nowadays, after a few crashes and problems I had initially, updating the BIOS to the latest version just fixed basically everything.

I configured the case fans to pull air from the top and exhaust them to the back of the case. No front fans are connected. And I enabled hardware virtualization… No clue why it is not turned on by default.

Optimizing for silence

For slient operation, I adjusted the case fans with a custom curve, being off by default until the CPU hits > 60°C, then they’ll kick in. Unfortunately, ASUS does not allow to set the fans to a really slow RPM by default, otherwise I would have enabled them constantly - but the lowest level is still to loud. The CPU cooler fan also has a custom curve to ramp up only when CPU temp grows high. This leads to a slightly higher average CPU temperature, but in normal desktop usage, it’s almost completely inaudible.

Temperatures

Even with the setup optimized for silence, temps are okayish with the CPU running at ~50°C at idle & light workloads and heating up to maximum temperatures of 75-80°C when under heavy loads, which I would consider good enough from a system health perspective - but therefore it’s virtually inaudible. Maybe I will tweak fan curves as time goes by to be able to drop the CPU temps by a few degrees, but for now I’,m more than happy.

k10temp-pci-00c3
Adapter: PCI adapter
Vcore:         1.46 V  
Vsoc:          1.02 V  
Tctl:         +57.2°C  
Tdie:         +57.2°C  
Tccd1:        +49.2°C  
Tccd2:        +47.5°C  
Icore:        35.00 A  
Isoc:          7.75 A  

nvme-pci-0100
Adapter: PCI adapter
Composite:    +49.9°C  (low  = -273.1°C, high = +84.8°C)
                       (crit = +84.8°C)
Sensor 1:     +49.9°C  (low  = -273.1°C, high = +65261.8°C)
Sensor 2:     +50.9°C  (low  = -273.1°C, high = +65261.8°C)

amdgpu-pci-0a00
Adapter: PCI adapter
vddgfx:      712.00 mV 
fan1:           0 RPM  (min =    0 RPM, max = 3200 RPM)
edge:         +51.0°C  (crit = +113.0°C, hyst = -273.1°C)
                       (emerg = +99.0°C)
junction:     +51.0°C  (crit = +99.0°C, hyst = -273.1°C)
                       (emerg = +99.0°C)
mem:          +50.0°C  (crit = +99.0°C, hyst = -273.1°C)
                       (emerg = +99.0°C)
power1:        5.00 W  (cap = 135.00 W)

Peripherals

Nothing special here, I really like the display itself but at the same time I would wish that I was able to control the backlight brightness using the keyboard’s function keys, maybe I’ll figure out how to do this at some point.

In general, while the Apple peripherals included with e.g. the iMac are much more cohesive all in all, being able to cherry pick things like a webcam instead of using the built-in one turned out to be great.

Software

After playing around with Arch for a bit and remembering why I stopped using it back when I used Linux as a desktop OS, I went with the boring and obvious choice for a stable but fairly recent Linux desktop: Ubuntu. By now I updated to the 20.10 beta to get support for the Intel 2.5Gits/s NIC because the kernel in 20.04 was too old and did not support it.

Running ZFS also gives me the possibility to snapshot the whole system (in fact Ubuntu automatically does this on every apt operation using Zsys) without the crazy btrfs CLI syntax.

Everything else is fairly basic, I’m running KDE Plasma minimal and the most basic apps including Firefox, Thunderbird, QOwnNotes, Spotify, VSCodium, etc.

All in all, I’m very pleased with how good Linux has become handling even recent hardware in the last years. Of course you have to keep that in mind when building a computer, but with some basics done right (using an AMD GPU, going with a supported chipset and built-in connectivity, especially WiFi and bluetooth controllers) it’s easy to build a good experience without being occupied for two weeks fixing hardware compatibility. Even suspend worked out of the box with the in-kernel amdgpu drivers.

Moving existing data

I was prepared for the worst including migrating data from my old machine to the new one over the (slow) network, but was surprised when I found out that Ubuntu acutally has userspace R/O drivers for APFS. So migrating my data was just a matter of attaching my USB-C Time Machine backup to the new computer and mount it:

sudo apt install libfsapfs-utils
fsapfsmount /dev/sda2 /mnt/usb

Conclusion

In the end I could not be happier. Compile speeds for my everyday work are down from 40 seconds to ~ 5 (which is a big deal when you run it everytime you save) and for my occational video encoding, ffmpegs VA-API support delivers good enough performance to encode HEVC/1080p at roughly 8x speeds. I feel I could have gone with at least 1TB of NVME storage and I probably will upgrade at some point in time, or at least throw in some SATA SSDs, for which I have plenty of room in the H210.

Finished build with peripherals Finished build with peripherals Finished build with peripherals