Articles Linux

Raspberry Pi 400

This is a brief review of the Raspberry Pi 400 that landed under my tree on the 25th of December. I have to admit that the Pi 400 is something I’ve been waiting to see for a long time and as a result the temptation to gush is proving difficult to resist on many levels. That said, with the words of Jedi master Sir Alec Guinness ringing in my ears, although a superb machine, maybe not quite there yet in all departments.

First let me set out what I was hoping for. I’m looking at a £65 machine to which I need only add a mouse, some storage and a screen, which is capable of running a relatively standard Linux distribution. For me, this can point in only one direction; “the year of the Linux Desktop“.

To this end I started by ensuring I had the right accessories waiting to hopefully use the device as a proper desktop. Specifically a random travel mouse that historically cost me around £10, a 128Gb NVMe module for about £25, an external USB3 NVMe enclosure for about £25, an official Pi 4 power supply for £12 and 3m micro-HDMI to HDMI video cable to allow me to connect to a big-screen telly. This gave me a total spend of £65 for the device and another £72 for accessories. Whereas I could have made it work for much less, £137 for a “complete” desktop still sounds like a pretty good deal, not least of if it will let me work against the TV using my distance glasses.


Getting Set Up

One of the things I’d wondered about is whether I would need an SD card or the official Raspberry Pi Operating System to get going. As it turns out, so long as you have another computer handy then the answer is no – if you can set up your external USB3 storage and make it bootable, the Pi will boot straight from that. So concern one is out of the way. Number two, how do I get a disk image onto my external storage and make it bootable, something I’ve done in the past on many different types of devices, and generally something that can be a little fiddly. Turns out all you need to do is to install the raspberry Pi imager which you can find here.

Once you run the imager it’s a case of selecting your external USB drive from the drop-down menu, selecting the operating system you want (in my case Ubuntu 20.xx) from the drop down menu, click WRITE and wait a few minutes. Literally couldn’t be much easier.

Next step, boot your Pi 400 directly from your newly written USB drive. The imager essentially writes an installation CD onto your USB drive, so when you boot from the drive, it runs you through the process of installing your chosen operating system on top of the installation CD. If you’re familiar with the Ubuntu installation, there should be no surprises for you. If not, then it’s a fairly straight forward Wizard driven process and if you accept all the defaults, you can’t go too far wrong. One point of note that applies to all similar OS installations; it will ask you to enter a username and password as a part of the installation – you will need to remember this. If you do not, don’t expect to be able to log in once the installation is complete (!)

(I know this sounds obvious, but I’ve forgotten this soooo many times …)

Using the Pi 400

I’m not going to include lots of gratuitous screenshots of Ubuntu 20.10. It looks on the Pi 400 exactly the same as it does on a normal PC, so take is as read the User Interface is pretty. In use, the Pi 400 seems to cope with Ubuntu’s default desktop settings in terms of presentation and animations, it looks good and feels pretty responsive.

It shows up with 4 CPU’s and 4Gb of RAM as expected and at idle seems to have a couple of Gb to spare for applications. My general preference with Ubuntu in under 8Gb of RAM is to load up XUbuntu (which I did try) which is a little leaner on memory if not quite as pretty or easy to use. XUbuntu also worked fine, but with one minor caveat which I’ll cover later.

So, what works well, are there any issues with it?

  • Web browsing – check
  • Email and web based email – check
  • Calendar, contacts – check
  • General use, basic server functionality – check

Here comes the “but” …

Now you maybe wondering about my comments in the introduction. It all sounds great, so what’s the problem? Well, this partly stems from another elephant in the room, which is “why do Raspberry Pi produce their own OS if other mainstream OS’s work on the platform?” The answer (as far as I can tell) seems to be that there are a number of shortcomings in the hardware and potentially firmware / software, that seem to require a lot of tweaking to circumvent, and even then, it’s a bit of a squeeze.

Starting with the really easy bit, 4Gb of non-upgradable RAM isn’t “quite” enough, at least not for me. Given the Pi 4 has an 8Gb option, not providing an 8Gb option for the 400 seems, well, odd. Whereas 4Gb will get you going and allow you to play with stuff, to be considered as a serious desktop option, 8Gb might have been a better option and allowed for the choice of “GNOME” rather than what might be considered a light-weight option.

Next is storage. I attempted to circumvent this from the start with my external USB3 storage choice. If you use the built-in SD-card storage then you have potential issues with write-cycles, but more importantly, your main OS storage is running with a throughput limit of around 30M/sec, which for me is too slow. Again, it’s enough to get you going, but to be realistic, if you want to use the machine as a desktop then you really want something a little quicker. To this end, they could really do with putting an NVMe.2 slot into the 400 case. Not only would this remove the £25 cost of an external enclosure, it would also remove the need to attach persistent storage to the keyboard via a short USB string. Another point worth mentioning, the USB3 on the 400 appears to be 3.0 rather than 3.1, so whereas my NVMe can support transfer speeds of up to 2G/sec, I’m only actually seeing around 320M/sec because the additional speed I was hoping for seems only to be available in USB 3.1. Now, 10x faster than the SDCard is good enough for a desktop, just saying there’s more potential available …

Now comes the hard part – video. I read the support for 2 x 4k screens as an indication of good video support, and by good I mean the ability to operate in today’s video-rich environments. Maybe a misconception on my part, but so far it would appear that it will “just” about play a 1080p YouTube video full-screen, IF you use the Raspberry Pi OS (with all it’s tweaks). Even then, it’s not something I would use in preference to my current desktop of any of my dedicated media devices. Without the tweaks, you’ll get away with quarter (maybe) half screen YouTube, but that’s probably about it .. then there’s the halfway house once you apply some of the tweaks but not all.

It maybe possible to improve of this, however I did spend a lot of time on the video, I got the Ubuntu playback pretty close to the Raspberry Pi OS playback, but I couldn’t quite match it. At the end of the day, if it doesn’t just work it’s not going to be acceptable to the average user. Just to add fuel to the fire, platforms like Netflix require a DRM system that is apparently (currently) unavailable on the ARM platform (windvine?), so even if the hardware would comply, your options for accessing online video systems is somewhat limited.


Just a word of warning for anyone trying this while not quite fully awake, maybe on Christmas or boxing day .. Ubuntu boots with the NUMLOCK off, but XUBUNTU boots (apparently) with NUMLOCK on. Now the NUMLOCK LED on the keyboard is clearly labelled with a “1” so you can tell it’s on (!). Which is good, because when it’s on, half of the alpha keys on the keyboard will actually generate numbers when you press them. This can be a problem logging in, given the password characters you type are hidden by stars and it’s not immediately obvious the keys you’re hitting aren’t generating the right letters. (like the CAPSLOCK problem, just not quite as obvious)

About the author

Gareth Bult

Gareth is a long time Linux User and enthusiast and currently works for Mad Penguin Consulting Ltd as a Full-stack / Python developer.