Micro Code

Michael's blog about teaching, hardware, software and the things in between

Tiny computers are great!

September 05, 2020 — Michael Engel

So far, I was using my trusty old Macbook 12" from 2015 as my main office computer, still running MacOS X High Sierra (I don't agree with Apple's decisions to dumb and lock down the more recent versions of what they now call macOS). However, the Macbook is getting a bit long in the tooth, buying a new x86-based Macbook doesn't really make sense and the ARM-based Macs aren't out yet (and will only run macOS 11 "Big Sur" with all the downsides of the new version).

This means I am motivated to look for a new OS platform for the first time since 2000 - I have used MacOS X on a blue and white G3 PowerPC machine since then, starting with the developer previews. While running Raspberry Pi OS (formerly called Raspbian) on a Raspberry Pi 4 with 8 GB RAM is almost useful, especially web browsing on the RPi is a bit painful.

There are two major web browsers available on Raspberry Pi OS. Firefox (my preferred browser) is unfortunately rather slow on the RPi4. Chromium runs much faster, but is extremely crash-prone. Even though the previous session is restored after a restart, this is not really ideal. So, almost there, but not quite.

What other alternatives are available, then? The number of affordable ARM-based systems is rather low. I was thinking of buying a Honeycomb LX2K board made by SolidRun, which is based on an NXP LX2160A 16-core ARM Cortex-A72 SoC that is intented for use in the high-end communication market (e.g., it has several 10 Gbps Ethernet ports). This board can take up to 64 GB RAM, but has long lead times and is rather expensive here in Norway (around 10,000 NOK plus RAM, disk, case, power supply and video card).

RISC V systems able to run a desktop OS are not yet available; the HiFive Unleashed board by SiFive is sold out and the new FPGA board based on Microsemi's PolarFire SoC/FPGA only has 2 GB of RAM.

So, back to x86-64 for now. I try to avoid systems with Intel CPUs (had no choice with the Macbook, unfortunately) due to their handling of the Meltdown/Spectre fiasco and their creepy Management Engine. While AMD does not fare much better in both respects, it seemed like the less unattractive option. In addition, the new Ryzen Renoir systems seem rather attractive due to their price/performance relation.

However, I did not want a large tower-style PC, but something smaller. Luckily, Asus has recently announced the PN50, a mini PC (11x11x6 cm^3) with up to an 8-core Ryzen 4000, two DDR4 SO-DIMM slots, a M.2280 NVMe SSD slot and a slot for a regular 2.5" SATA drive. The PN50 comes as a barebones PC (bring your own RAM and disk, the Wifi PCIe card - an Intel Wi-Fi 6 AX200 - is included) All this for a reasonable price - RAM and SSD prices are rather affordable at the moment, too.

My new desktop system is now a PN50-BBR545MD-CSM with a six-core AMD Ryzen 4500 CPU (no hyperthreading), 64 GB DDR4-3200 SO-DIMM, a 1 TB Kingston SSD and a 2 TB ST2000LM015 spinning rust disk. All this for less than 10,000 NOK (ca. 1000 Eur). This machine is small enough to take home in the evening, though you need to remember to pack the (tiny) external power supply...

Itsy-bitsy six-core workstation PN50

So far, the system works quite well. A couple of things I noticed:

  • There seems to be no way to boot from the internal SATA disk
  • There is no boot device selection shortcut (but you can temporarily choose a different boot device in the BIOS)
  • The fan can get quite loud under load, but that's probably expected...
  • It could use more USB A ports, three (two in the back, one in the front) are tight for camera, keyboard and mouse (though it also has two USB-C ports)

However, the choice of an operating system was not easy. In Corona times, there are requirements to run commercial software such as:

  • zoom
  • Slack
  • Skype
  • and even Microsoft Teams (eek, absolutely horrible!)

This means that Linux is more or less the only option here. OpenBSD doesn't provide the Linux emulation any more. FreeBSD Linux emulation is an option I might try later, but I needed a system to work with... You didn't think I would consider running Windows, did you? ;) A Hackintosh is also out of the question for an official workstation.

Originally, I wanted to run a systemd(eek, more horrible!)-free distribution. There are not that many around nowadays, it seems. I first tried Alpine Linux, which is based on the musl libc instead of glibc. In general, this worked well after a kernel upgrade (the Renoir Ryzen need a Linux kernel >= 5.5 to support DRI on the GPU), only the sound was problematic. However, getting commercial software products to run was a nightmare, since they are all linked against glibc (and, of course, no source code is available). Next, I tried Void Linux, which I could not get to support the graphics (the 5.8-1 kernel of void needs "nomodeset" to boot in the framebuffer console, which disables the AMD GPU DRI functionality).

I am using Linux in one form or the other since kernel version 0.12 in 1992 (on an AMD (!) 386DX40 with 8 MB RAM, an ET4000 VGA card, an Adaptec 1542 ISA SCSI controller and a Quantum 730 MB (!) SCSI Disk). So it's really sad to see that Linux is in such a sorry state. Thus, a bad compromise currently is to run Ubuntu 20.04 with systemd. It works, the system is fast and stable, the only problematic thing is the audio output, but I got it to work (at least once...).

But I don't feel comfortable with all the (IMHO absolutely unnecessary) changes, configuration stupidity (have you tried enabling a getty on a UART with systemd? Yikes!) and complexity systemd brings along. I am administering Unix systems for almost 30 years now (started with SunOS 4.1.1 on my trusty old 3/60) and this doesn't feel right. So, still looking for a good alternative here.

Oh, btw., the PN50 hangs at reboot with an error message: "Waiting for process: systemd-journal". Thanks, I guess. Switching off the system in that state has worked so far fingers crossed.

Tags: AMD, Ryzen, Asus, PN50