Saturday, March 21, 2026

Raspberry Pi vs used mini PC for home server

In the past I have always preferred using new hardware instead of used 2nd hand hardware because I don't want to deal with annoying hardware issues with used 2nd hand hardware. Sometimes it's small things like CMOS battery replacement, or having to redo the thermal paste, or replace the CPU fan, or replace the PSU. Those are pretty annoying but easily doable. Sometimes the hardware will just randomly turn off, and you have to spend time trying to fix it, and sometimes you can fix it by just upgrading the BIOS or changing some BIOS settings. For all these reasons I have generally preferred to use new hardware instead of used 2nd hand stuff. Especially in this case as a new Raspberry Pi costs less than an old used mini PC most of the time.

However, recently I tried to set up a new home server, and I have some experiences to share. Below I compare the experience of using a Raspberry Pi vs a used HP mini PC.
  1. The mini PC was noisier than expected. I fixed this by replacing the CPU fan.
  2. The mini PC was not storing date/time on power loss. I fixed this by replacing the CMOS battery.
  3. The mini PC sometimes randomly rebooted for no reason. I fixed this issue by upgrading the BIOS and changing a whole bunch of BIOS settings including disabling wake on LAN.
  4. The Raspberry Pi SD card corrupted the file system on power loss. This turns out to be a common problem with the Raspberry Pi and there is no solution to it except "use a UPS". This happened so many times that I swore to never use SD cards with Pi ever again (unless it's a use case where I can use a read only file system).
  5. The Raspberry Pi is very picky about what USB SATA adapters it will boot from. Careful research and testing is required to find one that works with the Pi, supports UASP, TRIM etc.
  6. The Raspberry Pi has a very limited USB power budget of 900mA. And this is shared across all USB ports. This means, if you are using the Pi to power a USB SSD, that may use up something like half of the power budget by itself, leaving not much left for other USB devices (mouse, keyboard, etc). This is a motivation for using an externally powered USB SATA adapter.
    1. Unfortunately, many externally powered USB SATA adapters will backfeed power to the Pi.
    2. Unfortunately, it is not possible to use a USB power blocker to prevent the backfeed, because the Pi will not boot from SSD if the SSD is connected via a power blocker.
    3. I found an externally powered USB SATA adapter on Amazon where the reviewers said it doesn't backfeed power to the Pi. Unfortunately, trying to boot from this USB SATA adapter fails. The initial boot works but as soon as the boot finishes it fails (screen goes blank, the adapter LED starts blinking).
  7. The Raspberry Pi has a problem where sometimes, plugging in a USB device OR unplugging a USB device will cause all USB devices to disconnect. If you are running the Pi from a USB SSD, this means your Pi will crash. This made me afraid of plugging in / unplugging USB devices as I could never be sure when it would crash the Pi.
  8. I use a USB power blocker to prevent power backfeed from my powered USB hub. I connect the USB hub to all my machines (PC, laptop, mini PC) through the power blocker, and all my USB devices (mouse, keyboard, speaker etc) work perfectly. Except it doesn't work properly with the Raspberry Pi. The USB keyboards work, but the USB mice (I have multiple) do not work. On all my other computers (PC, laptop, mini PC), they work fine, they only don't work properly on the Pi.
  9. A lot of software just doesn't support ARM. Going off the beaten path just a little bit will have you running into pain. For example NixOS has publicly said they won't be supporting RPi5 , they said even supporting the Pi 4 was a mistake. On x86, everything is supported and just werks (TM), you can run whatever software you want on your home server. 
  10. Running a desktop environment on the Pi is extremely slow even with the light DE on the Raspberry Pi OS. On the mini PC, running a full fat KDE Plasma felt snappy and responsive. I can use the mini PC as a desktop whenever I want, I can browse the internet and even play games on it. Whenever I want to use the mini PC as a server, I can just unplug the HDMI and USB, and it goes down to 5.5W, and this is while running a full desktop environment. The Raspberry Pi idles around 5W because the USB SSD draws like 2-3W of power by itself.
Overall, although the mini PC is more expensive than the Pi, for the extra money you get a 100x better user experience - it just werks (TM). The Raspberry Pi has tons of software compatibility issues because most software just doesn't support ARM, as well as tons of hardware issues (SD card corruption, USB instability, etc) that you don't have to worry about on any normal PC, laptop, or mini PC. Furthermore, the mini PC can be used as a desktop and when it's used as a server the power draw is similar to the Pi.

In conclusion, I would say that a used mini PC is in almost all cases a better choice for home server than the Raspberry Pi.

EDIT: Here is the relevant quote from samueldr regarding NixOS stance on Raspberry Pi:

"NixOS" proper won't see support for the Raspberry Pi 5.

Just like all other ARM platforms, NixOS support depends on the platform's support in upstream mainline projects.

We will not repeat the mistake we did with the Raspberry Pi 4 and adding bespoke support for a proprietary ecosystem. It is too much work to support for the resources available to NixOS.

Note that this reply applies to any $BOARD, and not limited to ARM things.

So the roadmap to "NixOS booting trivially on Raspberry Pi 5" is:
  • upstream support in U-Boot
  • upstream support in Linux  
Then we can add its U-Boot build to the token pre-baked firmware partition (assuming we still ship it by then) and it should work [just as well as mainline supports it].

And here is a quote from ElvishJerricco regarding NixOS and Raspberry Pi:


The sd image works for the pi4 because we have a working boot loader (u-boot) for that device and because a ton of volunteer work has gotten the pi4 to work pretty well in the mainline kernel. The pi5 doesn't have either of these things. We could package the pi5 kernel, but nixpkgs generally has a policy of not including new vendor kernels anymore because of the maintenance nonsense they entail. We could use the pi4 kernel since that should work too, but given the posture against vendor kernels, it's best if we don't introduce new uses of the ones we already have. Even if we had a working kernel, there isn't a working boot loader. There's some patches for u-boot we could use, but they're not complete enough. There was an EDK2 port we could use, but that was abandoned very quickly by the person who wrote it and it doesn't work on later revisions of the board.

Raspberry Pi has been sorta hostile to distros in this way. They don't care about us, so they don't do anything to support our efforts to use a standard, maintainable boot chain. Nixpkgs maintainers have been fed up with vendors like RPi for years for stuff like this, so the official position by the relevant teams is: Keep these things out of the nixpkgs repo and let someone else maintain it if they want. The result has been predictable; because maintaining support for these boards is such a pain in the ass until mainline u-boot and Linux have good support for it (and even then it's still a bespoke boot chain in the image), there have been multiple efforts since the pi5 was released to produce working images, and as far as I know they've all been abandoned because no one can be bothered to maintain this nonsense.

I didn't even mention the pain that comes from Device Trees on most ARM boards, or how RPi, makes that even more painful with their abuse of DT overlays.

These boards suck if you don't want to run Raspbian. Buy a low power x86 mini PC instead. They're usually better anyway.


No comments:

Post a Comment