(2022-10-14) A Modded Mini PC And A Linux Adventure

I have been a Windows user all my life, from Windows 2000 to XP to 7 to (briefly) 8, and today I'm on 10. However, Microsoft has kind of been putting Windows on a path I don't really like starting with Windows 11, so I've been looking at the alternatives. One of these alternatives is... desktop Linux. I have played around with Linux (Ubuntu & Debian) in a virtual machine almost a decade ago, but it was a frustrating experience for me at that time and I stopped. Many people have been saying recently that Linux has gotten really good and can be used with minimal fuss. At least, that's what they say, I kind of want to find out if that is the case myself.

My plan originally was to buy a cheap old laptop, maybe a Libreboot-able MacBook, but I didn't really want to have an old laptop lying around, and I didn't want to spend any money, and also librebooting MacBooks isn't great, so I was kind of stuck for a moment. But then I realized that I had access to a basically throwaway computer that would be great to try Linux on. When I built my parents a new computer, it replaced a crappy mini PC which had a partially-broken & annoyingly loud fan. That mini PC wasn't thrown away and was just lying in a closet collecting dust. My new plan was to take this mini PC apart, take out the loud fan, somehow attach a regular computer fan that I had left over from my past PC build, and try out Linux on it. This is what the modded mini PC looks like:

Getting the fan on to the mini PC was an interesting little exercise. First I took apart the whole thing. There were 4 screws on the bottom covered by the rubber feet, which opened the top part of the case. The top part only had the 128GB M.2 SATA SSD that the mini PC came with and an empty spot to put in a 2.5" drive. To get to the bottom part of the case I had to unscrew 4 screws that were attached to the PCB. On the bottom of the PCB there was the fan I needed to get rid of. It was attached with 3 screws to the metal heatsink that was attached to the processor. I removed the fan and kept it for later. One nice thing I liked was that literally all the screws I unscrewed were all identical Phillips-head screws. There was no need for me to sort them so I can put the mini PC back together without any problems.

The top part of the mini PC was made of metal, which was something I didn't notice before. The bottom part though was made of plastic, which was easy for me to drill holes into to attach the 92mm fan I had left over from my NR200 case on my current PC. I drilled a not-exact 82.5×82.5mm hole pattern in the plastic part for the fan as well as a hole that I hoped would fit the fan cable through. The plastic was thicker and more solid than I expected, and I had to push the drill through hard.

Next up was connecting the computer fan to the internal fan connector. The internal connector was some sort of mini-4-pin connector that wasn't the same size as the larger 4-pin connector I had on my Cooler Master 92mm fan. Thankfully I didn't need all 4 wires to get the fan running, I only needed to connect the two DC wires to get the fan to spin. To be able to connect the fan with the internal connector I cut off the bad old fan's connector and wires and "spliced" it together with the female 4-pin end of a Noctua low noise adapter I had lying around which could connect with my 92mm fan. I didn't have a soldering iron and solder around so I just twisted the wires together from both ends and covered them with electrical tape. This isn't ideal, but the fan spins with no issues. I didn't specifically plan this, but I basically made a fan adapter that I could use to easily switch out the fan to some other fan, which is important later.

One thing I want to mention is that the old fan was a 5V fan, while the new fan was 12V. Some 12V computer fans are unable to run at that low voltage, but if they can, they just spin at low RPM. This is great for me because if my new fan could spin up at 5V, which it did, that means that it won't be super loud spinning at its "max" 12V speed. Airflow at a low fan RPM also wasn't an issue as I'll demonstrate later with stress tests because it's a much larger fan than the tiny fan and moves more than enough air into the case and through the heatsink.

Now came the time to put everything together, and it didn't go all smoothly. The hole pattern that I drilled wasn't precise, and I had to apply some force to get the fan attached with all 4 screws. Next problem was trying to carefully stuff in the fan adapter I had made into the case. It eventually got in fine, but I accidentally split apart my fan adapter in one of my attempts. The biggest problem in reassembly though was getting the fan cable from the outside into the inside of the case. The hole for the cable I drilled wasn't large enough for the large 4-pin fan connector to fit through, and I didn't have a drill on me when I discovered that. I could have tried to sandwich the fan cable in between the two parts of the case, but that would have left a gap between them, not ideal.

I was stuck for a few minutes thinking for a way, any way, to fix this without going far to get a drill, and I came up with a dumb but satisfactory solution. What I did was take a table knife, heat it up on my stove as hot as I could, and use it melt a little slit in the plastic part of the case for the fan cable to fit through. This worked surprisingly well, but it had the side effect of me ruining the knife. Basically, some of the melted plastic stuck to the metal when it cooled, and I couldn't get it off. Good thing I almost never need table knives for eating. But anyway, the slit was perfect for the fan cable and I could finally put everything together just how I wanted it.

After this point I had started installing and trying Linux on the mini PC, but I made two further changes to my fan mod setup. First thing I did was change the fan. The Cooler Master fan that I originally put on the mini PC case wasn't some jet engine, but it was too loud for my liking. I switched it with a 92mm Fractal Design fan that I had in the carcass of my old computer. This "new" fan is dead silent, I can only hear it making any sound when my ear is right next to it, and it's just a subtle clicky sound. The next change that I made was add a fan grill to the fan.

A fan grill wasn't really needed for this mini PC. The fan isn't going to hurt anyone, and if it got jammed by something, the mini PC would still function, but I still wanted a fan grill because it looks "professional" and might be helpful some day. I didn't have any 92mm fan grills on me and getting one would take time and cost money. I came up with another dumb but satisfactory solution for this: convert an extra 120mm fan grill that I had from my NR200 case into a 92mm fan grill and attach it to the fan. To get this done I just cut off the two outermost rings on the 120mm grill and then twist & cut the ends through the screw holes to get the grill attached to the fan.

Okay, let's move on to Linux! (GNU/Linux interjectors click here.) Now this may not exactly be intuitive to everyone, but Linux is not a singular operating system like Windows or MacOS, but rather a collection of digital building blocks that get put together to create what we know of as an OS. Putting all these building blocks together into an OS that you can install on your computer is what various Linux distributions or "distros" like Ubuntu do, and they don't all do it exactly the same way. Your experience using Linux could be completely different from mine if you don't use the distros I have. Depending on what your needs are and what distro you choose, you can have a great experience or a frustrating experience, so just know that there isn't really one Linux experience the same way there is one Windows experience. All that being said, there are negative parts of the Linux experience that are universal across all distros, and I'm certain that I ran into at least one of them so far.

So far I've been using Linux for just under a week and I've only really been just playing around with it on my modded mini PC, but I've tried to do most of the things I would normally do on my main computer. I feel I've seen enough to share a good present day first impressions for people on a similar computer level as me. I am 100% writing and publishing this entire post from my Linux mini PC, so it's not like I'm talking shit from my Windows machine. One more thing I will mention is that I remember some stuff from my previous Linux VM experience and I've heard enough about Linux through other tech nerds that I'm familiar with things like "Wayland vs X11", but otherwise I kind of went in as a Linux n00b.

Because my mini PC doesn't have a super powerful processor, the first distro I installed was Lubuntu. I heard that Lubuntu is lightweight and can run on slow/old computers, and thought that it meant something like "Light Ubuntu", but no it's actually just Ubuntu with LXDE as its desktop environment ("DE"). The way I installed Lubuntu was by downloading the ISO from the site and then "burned" it on to a USB stick using balenaEtcher. Using Lubuntu, I didn't like the appearance of the DE, and also there was this strange error that prevented the computer from shutting down or completing a restart, requiring me to hold the power button or unplug it to turn it off. I used Lubuntu for a very short amount of time, and decided to jump to a different distro I heard was good: Fedora (m'lady *tips*). The vanilla version of Fedora came with GNOME as its DE, which looked pretty, but I did not like how it worked. Also, the same shutdown error I had with Lubuntu persisted, so it was likely a hardware problem, not a distro choice problem. I decided to look up the error and found a possible solution, but I left that for later.

The next day I installed a different version ("spin") of Fedora that used KDE Plasma as its DE. Wow, Plasma is a beautiful desktop environment and I kind of felt like I'd stepped into some futuristic operating system. Plasma is its own unique thing, but if I had to compare it to something, it's like an advanced modern version of Windows 7. There are a lot of neat little features that it has that I like, but the one that I think is the coolest is that it shows which windows are playing sound and lets you mute them just like browser tabs. At this point I started using Fedora more and I ran into an unexpected problem: some YouTube videos wouldn't play in Firefox for some reason. Videos that had a lot of views played fine, but videos with, say, under 10K views spit out an error. I first assumed this was a browser issue, and installed Chrome. In Chrome, all the videos that I couldn't play played fine. I tried a solution for YouTube playback issues I found where I disabled a hardware acceleration option, but it didn't work. I kind of got mad at Firefox for a moment, because it's my favourite browser, and I literally couldn't listen to my favourite obscure songs on Linux using it.

I had a hunch and decided to install Kubuntu (KDE Plasma Ubuntu) in a virtual machine on my main PC to check if this was some weird Fedora problem and yeah, it was a Fedora thing, all YouTube videos played fine in Firefox on Kubuntu. Turns out that there is a fix for this issue that I wasn't aware of: installing a bunch of stuff that Fedora doesn't include by default from a place called RPM Fusion, which includes a bunch of audio/video codecs that Firefox needs to be able to play all YouTube videos. This video goes through a list of things people need to do to get Fedora up to speed after installing it. Though I'm kind of confused why Chrome didn't have this YouTube problem. Must be some Google web monopoly thing amirite?

Another thing I did was solve my shutdown error problem. Here is a photo the error I was getting. So basically the reason my computer wasn't able to shut down or restart properly was because, get this... the built-in microSD card reader on my mini PC wasn't playing nicely with the Linux kernel SD reader driver. The best solution that I found for this was to blacklist the SDHCI driver in the kernel by creating and adding a blacklist file somewhere. At first it didn't work, but that's because I also needed to refresh initramfs. The solution I found was for solving this error on Ubuntu, and the command that it had to type into the terminal for initramfs didn't work in Fedora. I did find the command to do this in Fedora though, and after that, the shutdown and restart problems finally stopped. The only side effect of this solution is that I can't use the microSD card reader, but I don't have a need for it.

One thing I am particular about on digital devices is date and time formats. It's one of the first things I change when I have a new OS or a new device. I want ISO 8601 date formats (YYYY-MM-DD) and 24 hour clocks with a leading zero for single digit hours (e.g. 9am is 09:00). In Plasma, changing the date and time format in the bottom right is done by right clicking on the date and time and clicking "configure digital clock". Kind of a weird and unintutive place for it to be, but okay. However, changing that setting does not change the clock format for the login/lock screen for some reason, it still stays an AM/PM clock. I tried to find a way to do it, and one of the suggested solutions was to change the time format in the regional settings to one that matches what I want. Okay, I set my date/time format to "Burundi" because that was somehow the only country that had the formats I wanted, and the lock screen time didn't change. Another solution was to find a clock.qml file in the SDDM folder and edit a line of text in the code, which did work. Maybe I'm doing something wrong or I'm being unreasonable, but this is one of dumbest ways to change literally the simplest setting I can think of, and it should have been synced with the regular clock setting in the first place.

One of the things I do on the computer is communicate with people, and one of the apps I use is Gajim, an XMPP client that I use to chat with holeinmyheart. It worked fine on Windows for me, until a later feature-breaking update, which I downgraded from back to my old version. On Fedora, I got a shiny new version too, and it didn't have that feature-breaking issue, but it did have a few new issues: I couldn't send attachments (the button was greyed out) and it crashed very often for seemingly no reason. I kinda-sorta fixed the attachment issue by changing some setting that seemed relevant, but it broke again after another random crash. One other strange problem was that Gajim didn't show an icon in the system tray like it did on Windows, and I knew it should be there because later on I unintentionally changed a setting that launched Gajim without opening a window and I couldn't use it. All these problems I (seemingly) solved by doing two things: uninstalling Gajim, then reinstalling it through the command line... and changing my desktop environment from Wayland Plasma to X11 Plasma (Fedora comes with Wayland Plasma by default in its KDE spin). I also tried the currently Linux-exclusive Dino XMPP client. It looks nice and had zero issues, but I like Gajim more. Good news though, I updated my Windows Gajim to the latest version and it had no broken features.

The final thing I am going to complain about is the built-in "app store" that comes with the KDE Fedora spin: the Discover software center. At first it was seemingly fine, no issues, but after some time I realized that something was wrong with it. Basically what happened was that its features didn't work until you waited for some time. The culprit: Discover's built-in app and package updater hangs on "fetching updates" for a few minutes while it's checking everything that needs to be updated, and until that is done, you can't install new apps (mostly), uninstall apps you have installed, or just open a .rpm file you've downloaded to install an app. Now I could still install, uninstall, and update apps and packages through the terminal and there's also a thing called dnfdragora that I can use to do package manager things through a GUI, but how on Earth was an app store thing coded in such a way that you can't do anything with it until it takes a little update break first? This is one of the most basic parts of an OS, and it doesn't work properly? Looking on the internet it seems like other people have issues with the "fetching updates" thing and there were some other bugs with Discover that made people hate it.

To test my new mini PC fan setup I installed a tool called GtkStressTesting that let me create a synthetic load on the CPU and see how hot the CPU gets. At idle my CPU is about 50°C, but under a long sustained load it got up to 90°C, which is an acceptable temperature as the CPU thermal throttles at 105°C. I consider the fan mod a success according to this data. One thing I noticed when I was doing a long stress test was that the case of the mini PC got quite warm. The included wall adapter for this mini PC is only capable of outputting 35W of power, so it's a pretty efficient little machine, although the processor clearly lags often with what I have installed.

By pure coincidence, when I was using my mini PC to play around with Linux I happened to need to torrent a large file that took almost a day to download with my internet connection. My mini PC was perfect for this as it has a low-power laptop processor and I can leave it on overnight. I didn't do that for an idiosyncratic reason, but I certainly liked that I had a secondary low-power computer that I could leave to do the torrenting and have my main PC asleep while I'm away. Not sure if I'll need one in the future, but this mini PC would make a great home server to use as a NAS or a seedbox or whatever. After I finished downloading that torrent, I wanted to transfer the file to my main PC. For this I used Syncthing, an open source file transfer app. At first I was transferring the file over WiFi and I was getting ~25MiB/s (200Mbps) of file transfer, but I had to see what it was like to transfer a large over gigabit ethernet because I've literally never done it before and it was beautiful seeing "121MiB/s" in the data transfer rate with the large file transferring in a few minutes.

Alright, so after all this do I recommend Linux? This is kind of a hard question to answer because it depends on your needs and to some extent your tech skills or patience. Despite all the complaints and issues I have, everything pretty much worked right away, no driver issues, the WiFi worked, the audio worked, and the screen worked. My biggest regret is not listening to the wise tech nerds and not using Linux Mint first, which is the most commonly recommended beginner Linux distro at the moment. But I guess I got to experience something a tiny bit less beginner-friendly. The 4-part Linux challenge series from LinusTechTips is an interesting and entertaining video series to watch if you want to see long-time computer nerds who've never used desktop Linux on their main computers struggle and figure out how to get things to work.

Linux may not have all the apps people want, but it does have alternatives or replacements for almost everything that people may want to do, assuming they don't really really need to use something like Microsoft Office or Adobe apps. Here's a list of apps you can use on Linux to do various tasks:

There is even one app that I really like on Windows called Paint.NET which I thought had no Linux alternative, but turns out, there is one called Pinta that is extremely similar. Basically, you can do almost anything on Linux if you're willing to deal with Linux's random issues ("open sores"). Also, gaming on Linux isn't perfect, but it's come a long way from where it's been in the past thanks to the efforts of Valve with Steam Deck, SteamOS and Proton making "Windows only" games playable on Linux and encouraging developers to make Linux ports of their games.

Will I switch to Linux? Well, not at the moment, I'm still okay with my main Windows PC, and I currently use or might later want to use software that is not available on Linux. However, if I were somehow forced to use desktop Linux forever, I wouldn't suffer a lot, and there's a chance you wouldn't either. Linux may be a great option to install on a secondary computer or a laptop. There is also the option of dual booting a computer in case you can't avoid using Windows.

This isn't the end of my Linux adventure, I'll probably be trying some more advanced distros later on, and I'll definitely continue trying to find a Linux experience that has minimal fuss. Doing this whole thing with my mini PC was interesting, and I hope you enjoyed reading about it. Bye.

◀  Return To Blog Feed