Linux on a New Computer for the First Time

For years, I’ve had Raspberry Pi boxes around for specific duties, like classic arcade game emulation, running Pi-hole (a DNS sinkhole), running NextCloudPi (a self-hosted cloud platform), and for running Home Assistant. But until about a year ago, I’d never seriously tried to run Linux on a computer I’d actually regularly use face-to-face. But, having some old Apple hardware around prompted me to give it a whirl, and it’s truly been a great experience. That said, old hardware is still old hardware, and I decided I needed an upgrade: A brand-new computer onto which I would install Linux.

What prompted this decision was that my mid-2012 MacBook Pro 13″ was getting pretty laggy. Its main focus was running my ham radio applications, but I found myself using the computer more and more for other things too, including writing, doing research, and tinkering with new amateur radio stuff. It was bad enough that I couldn’t, for example, run GridTracker with WSJT-X since it just made everything run way too slow. Enough was enough; I started looking for a replacement.

Because I’d been using an old Apple Thunderbolt Display with the MacBook, I wanted a new computer that supported Thunderbolt 3 or 4 so I could use an adapter and continue to take advantage of the Thunderbolt Display, which still looks great, given its QHD specs, and which provides a nice hub-like group of connections on its back panel (audio, Ethernet, USB, etc.). That led me to a Bosgame NUC on Amazon, which claimed that it had Thunderbolt 4 support.

But, it most certainly did not. Apparently this is a common lie, as nobody’s checking or certifying anything, and most people won’t notice the difference between real Thunderbolt 4 and what comes along with USB 4. Unfortunately, I did. The specs on the unit were otherwise what I wanted, and after a lot of back-and-forth, I decided to decommission the Thunderbolt Display, and just repurpose a (very) infrequently used QHD display from ASUS, that like the Apple product, was a 27″ model. Using the same VESA wall mount I was using with the Thunderbolt display, it was a quick like-for-like replacement, and with the wider array of connectivity methods, worked nicely with the Bosgame. So, problem solved.

Installing and Migrating Linux

Unlike my other experience with NUCs, booting the Bosgame from a USB Linux boot drive was easy and quick, and all the necessary drivers were automatically brought online with no complaint… Ethernet, WiFi, Bluetooth… everything. So far, so good. I did a permanent wipe-and-install with Linux Mint 22.2, overwriting the copy of Windows that was preinstalled.

Next up was migrating data. I used rsync for this, to bring my old home directory over to the new machine in its entirety; that was relatively painless.

Moving software is never a fun task under any operating system, but the myriad ways that software can be installed on Linux makes the experience a little bit of a head spinner. In the end, I had to try my best to catalog the software that mattered to me as it existed on the old machine, and then, application by application, reconstitute how I’d installed it to begin with, determine what my options were (Flatpak, APT, build from source, etc.) and which of them was best long-term, and then set about putting it all back in place. The good news? With no observed exceptions, all picked-up their configurations from files scattered around the home directory, and “just worked” — apart from changing audio port settings.

Speaking of which, most of the applications I use do use audio. Wherever possible, I tried to move to Alsa configurations from PipeWire or other methods. Since all of them “talk” to the Icom IC-7300 transceiver, it was a matter of pointing things (generally) to hw:CARD=CODEC,DEV=0. That approach lets me avoid numbers incrementing on their own when the USB cable to the rig was unplugged and replugged (necessitating a reconfiguration in things like WSJT-X, which then had to be changed again after a reboot).

Audio is a real pain on Linux; the aim is to make it less so where possible.

It was still a lot of time and effort, but in the grand scheme of things, not THAT much effort to get things working. On the new machine, I quickly:

  • Resumed my Firefox browsing session in-place.
  • Had a working instance of wfview for controlling my IC-7300 and providing rigctld emulation.
  • Got WSJT-X Improved PLUS Edition running, now in its latest (3.0.0) release.
  • Had GridTracker2 up and running with WSJT-X with high performance (no lag!).
  • Got Fldigi up and running for RTTY, PSK31, etc.
  • Ended-up with both Dire Wolf + QtTermTCP working again for HF packet.
  • Did get Pat + ARDOP running for Winlink operation.
  • Got my hack job interface between Wavelog and rigctld so SSB and CW contacts were set-up right in the log entry screen of Wavelog.
  • Got everything else I used set-up anew (e.g., Emote, Déjà Dup, etc.).

I next turned my attention to solving something else that was bugging me on the old system: Incompatibility between Pat, and wfview’s rigctld emulation. Frequency wasn’t returned in a way that pat liked, and PTT had some issues too. With the help of ChatGPT, I put together a “shim” application in Python that translates the broken stuff back and forth, while passing through everything else. Pat talks to the shim, the shim talks to wfview’s rigctld layer, and everything was then working as it should. Now all I had to do was click a station in the RMS list to auto-tune and start the exchange — which is how it’s supposed to work. (The “real” rigctld just plain did not work for me; completely unreliable for some reason.)

How Do Things Perform?

The best part of the new system is simple: performance.

When I first set-up Linux, I decided to install it on an old iMac 14,1 — the 2013 version of the smaller-screened iMac. I later upgraded (or, I thought it was an upgrade) to my old MacBook Pro 9,2 — the mid-2012 MBP with the 13″ screen. When I did the upgrade, it SEEMED faster. But running Geekbench 6 on both of those machines plus the new one, showed otherwise. In any case, here are the results:

Old iMac 21.5 (iMac 14,1) (first Linux machine for ham radio)

Intel Core i5-4570R
1 Processor, 4 Cores
3.20 GHz
RAM 8 Gig

Old MacBook Pro 13 (MacBookPro 9,2) (second Linux machine for ham radio)

Intel Core i7-3520M
1 Processor, 2 Cores, 4 Threads
3.60 GHz
RAM 16 Gig

Bosgame NUC (third and now current Linux machine for ham radio)

Intel Core i9-12900H
1 Processor, 14 Cores, 20 Threads
4.90 GHz
RAM 32 Gig

The net-net is that compared to the system it replaced, this NUC is running 11x to 13x faster.

The Core i9-12900 is a surprising chip. With six performance cores (two threads each) and eight efficiency cores, it seems well-suited to the sorts of things I do with the ham radio computer. The performance cores can handle things like audio data encoding and decoding with ease, while the efficiency cores can attend to the more mundane things going on behind the scenes in every modern computer. And with so many cores/threads to work with and so much more horsepower overall, it’s little surprise that my experience is lag-free with everything I’ve thrown at it.

As I write this blog post in Firefox on this very machine, the system monitor tells me that two of the “CPUs” are running in the 10-15% range, while the other 18 are mostly sitting at 0% utilization. The only other thing running is WSJT-X, operating some FT8 on 10m… which, I might add, decodes faster than it ever did on the previous system.

Bottom Line

The bottom line for me is that while I love the idea of running Linux on old hardware that’s too long in the tooth for anything else, old hardware is still old hardware, and if you want a performant computer for certain types of modern applications, it may not be enough. Everything worked on the old system, just not as well as I needed or wanted it to. And for just under $500, it was worth it to buy new hardware for my primary Linux box. With 32 Gig of RAM, a speedy 1 TB Kingston SSD, and a decent modern chip at its core? I don’t think I’ll see a need for another upgrade for a long time to come.