A few years ago I took a plunge into the world of Arduino, a family of cheap, fun little single-board computers that you can use for all kinds of things. I bought various boards and accessories but as often happens, without any clear projects in mind I eventually lost interest. During that time I was aware of a "rival" platform, the Raspberry Pi, but I didn't pay them too much attention as I felt I'd already made my choice in that arena and didn't want to move my foot from one camp to the other.
That position is, of course, ridiculous. As an enthusiast you should feel free, time and budget allowing, to have as many feet in as many camps as you want, and even to combine camps if you like. Certainly you shouldn't restrict yourself from the fun of exploration because you feel you have already been drafted onto one side or another of some imaginary technological holy war that largely exists inside your own head.
When the Raspberry Pi 4 was released not too long ago I paid a bit more attention, and realised that it's quite a different thing to Arduino. With Arduino you tend to write a program on your PC, then compile it and upload it to the board itself, which then is usually used for one single purpose or a specific set of pre-determined tasks. Raspberry Pi on the other hand is much more general-purpose, whereby you run Linux on the board and interact with it to do all kinds of things. It's correspondingly more powerful and more expensive, but not ridiculously so.
As it happens, I have been looking to solidify my years of Linux experience and maybe get some certifications under my belt. I've been using Linux continuously since the early 90's - I remember buying an InfoMagic 3 CD set around 1994 or so which contained pretty much all the distributions then available, along with source code, documentation and assorted apps. Since its inception, OCAU has always been hosted on Linux boxes of various flavours, right up to the present day. At home I have a couple of ex-OCAU servers and an HP MicroServer which I use for testing and messing around. But those machines are cumbersome to use for simple tasks like refreshing my memory about Linux config file locations, and frankly whenever I fire them up I seem to spend the rest of the weekend getting them working again and up to date. I know about VirtualBox and I guess that would be an easy solution, but what I really want is a simple little Linux machine that I can play around with while studying and refreshing my Linux-fu.
When the 8GB variant of the Raspberry Pi 4 was announced, I decided to get my head out of the sand and actually look into it. 8GB is no longer kidding around. With that much RAM I could run a decent LAMP stack and use it to test OCAU upgrades. But the spec sheet made me double-take. A four-core 1.5GHz CPU? Twin HDMI ports, and it can drive two 4k displays from them? Gigabit Ethernet, Bluetooth, WiFi, USB 3.0, USB-C for power, AND the aforementioned 8GB of RAM? What even IS this little thing? I decided to find out.
A smidge over AUD$200 and a couple of days later I had the Raspberry Pi, a heatsink-and-fans case, a power supply, an inline power switch, two micro-HDMI to HDMI cables and a MicroSD card preinstalled with NOOBS. This apparently stands for "New Out Of Box Software", but I think the name makes it pretty clear who it's aimed at. The heatsink case isn't mandatory, in that you can run the board bare if you like, but if you are going to push it hard for long periods the CPU can apparently become quite hot. I haven't felt the need to install it yet. The main expense was the Raspberry Pi 8GB itself at $130, but the 4GB is only about $100 and the 2GB under $75.
It really is tiny. That OPAL card is the same size as a credit card. In fact it's so small that the USB ports seem to loom hugely on one edge of it. Most other ports are on one long edge and there are some further connectors for optional accessories.
So, as a first try, I simply connected a monitor to HDMI-0, plugged in the wireless dongle for my keyboard and mouse, inserted the MicroSD card, connected the power switch and power supply and fired it up. Sadly at this point I was greeted with a cryptic error message about text file incompatability and incorrect versions. Not too promising. Digging around I realised the shipped version of NOOBS was 3.2, dated in mid 2019, which is apparently too old for this particular Raspberry Pi model. So, I downloaded the latest version, 3.4, extracted it to another MicroSD card and tried again. This time, success. It's a shame it didn't work first time - for me, an inconvenience, but for a beginner, that can be a baffling roadblock. Also for my son, who had marvelled at the tiny size of the board, it marked the Raspberry Pi as a confusing geeky-dad project, instead of an easy fun new gadget. I should clarify that the NOOBS MicroSD card was entirely optional and a separate purchase to the Pi itself, so I guess the vendor I bought from isn't tracking versions they ship against the Pi model in the same order.
NOOBS has various operating system options available, and if you set up your WiFi connection at this point, even more choices appear. When you choose one, there is a process of resizing partitions and extracting files which again takes a little while, during which my son wandered off back to his more urgent Minecraft and Roblox duties. But eventually it was finished, and the installer politely suggested I reboot. So I did.
I admit to being quite unprepared for what happened next. The monitor went blank, then woke up and after some loading screens displayed a perfectly functional windowed operating system. I had it plugged into a 27" curved widescreen monitor I normally use with my laptop's docking station, and the Raspberry Pi correctly set itself up in 2560x1440 resolution, filling the entire screen. The backdrop was a high-res sunset photo and above the single "Trash" desktop icon there was a status bar with WiFi strength, the correct time, volume and various menu icons. I tentatively clicked around. LibreOffice, an open-source equivalent to Microsoft's commercial offering, was preinstalled. So were various games and other applications, including Minecraft, which provoked an interested grunt from the nearby 13yo. On the programming side there's preinstalled Scratch, Java and Python IDEs. There's even VLC for playing media and Chromium, a web browser based on the same engine as Chrome and (more recently) Microsoft Edge. YouTube worked fine and the audio automatically went to my monitor speakers via HDMI. In File Manager, under the "Go" menu was a Network option, and selecting that gave me a view of all the devices on my network, including the two NAS with their Samba/Windows shares ready to use.
This was quite jarring. You have to remember, I was expecting to run this like every other Linux machine I've used for the past two decades or so. Headless, which is to say no keyboard or monitor attached, and I'd SSH in from remote and configure it from the command line. I would set up MySQL and Apache and use it as a webserver or similar. But here it was being a completely functional desktop machine. To get myself back on familiar ground I opened a CLI window and ran "top" - it was only later I'd notice there is a "Task Manager" app. In top I could see the four CPU cores and indeed the 8GB of RAM. Under the hood the default "Raspbian" distro is based on Debian so feels very familiar. The filesystem shown by "df -Th" looked fairly standard - the only storage device is the SD card, but there's nothing stopping you from mounting a USB drive or network device. You might be surprised at the lack of info from "lspci" because (as I understand it) there's no PCI bus on ARM, but "lshw" will give you plenty of info if you install it.
At this point it's worth taking a very quick side-step into the world of CPU architectures. Your normal PC, be it powered by Intel or AMD, is x86-based and traces its roots right back to Intel's 8080 in 1974. Even modern Apple machines are based on this architecture now. The Raspberry Pi on the other hand is based on an ARM platform. ARM are a bit of an oddball in that they don't manufacture CPUs, but they design them and license the designs to people who do make them, or more commonly, to people who enlist other people who own chip fabs to make the CPUs for them. Historically ARM CPUs have been used in specific-purpose machines where the concern is more about low power usage rather than computational grunt. They're probably best known as the brains of smartphones but they're hidden away in all kinds of devices, usually running Linux or some specialised software, and most people don't even know they exist. But there is a big shift happening at the moment, with ARM CPUs popping up in increasingly challenging roles, with increasingly impressive stats. Linux has had ARM support for nearly twenty years, but Windows 10 also supports ARM, with some restrictions. They've even appeared in the datacentre, where AWS (full disclosure: my employer) are using ARM CPUs to challenge the long-standing Intel and more recent AMD domination of enterprise-class server CPUs - more info here and here. It's really interesting to see ARM go from being a very niche player to a serious option in many applications. The CPU in this Raspberry Pi 4 is a Broadcom BCM2711, a 64-bit, 4-core 1.5GHz Cortex-A72 design, including a VideoCore VI GPU.
The phrase "the year of the Linux desktop" has become a running joke in the tech community, and every year it gets trotted out again and again. As far as I was aware, nobody really took it seriously. Personally I had only used Linux for remote servers so never bothered looking into the GUI side of things. So I wasn't really sure what to do next. In the "Preferences" menu there was an "Add/Remove Programs" options, so I installed GIMP in case I wanted to edit screenshots, and while browsing games I noticed an old friend - DOOM. Also, Quake - and Quake III! There's some legal shenanigans involved but the install process for all those is pretty simple and soon I was fragging my way past Nazis and blasting dobermans and demons alike, and being smashed by a wise-cracking bot in Q3. They all ran super-smooth, admittedly in a 640x480 window, but.. did I mention this computer cost a hundred bucks or so and is the size of a credit card?! Also, even when I went nuts and loaded eveything I could think of at the same time, I was only using 700MB or so of RAM. For desktop use you could easily get away with using the 2GB or 4GB versions and save some money. Also, the previous versions are still available and are substantially cheaper than this 4 Model B, the current flagship.
Desktop Linux is a huge topic and well beyond the scope of this article. Fortunately there are countless sources of information including forums, how-to websites and YouTube videos. I am amazed at how mature and seamless it has become in the years that I've been ignoring it. I had no intention of using this little board as a desktop PC but I am definitely considering it now, not to mention taking a serious look at my older laptop which needs a refresh anyway. If, like me, you spend most of your life in a web browser, email client or text editor, these are all available in Linux desktop versions. Even more serious applications are generally available on Linux now too.
It's also very difficult to summarise just how much can be done with this board. As with Arduino, there are countless bolt-on gadgets and accessories to expand its capabilites. Googling "fun things to do with a Raspberry Pi" leads you down a rabbit-hole of Retro Arcade machines, home theatre kits, DIY robots, game servers and so on. Of course, you can also do anything you would normally do with a Linux server, which is pretty much anything a server is capable of. Most servers on the internet run Linux and it's a doddle to set up a LAMP stack to run WordPress or XenForo. But beyond those traditional Linux roles the possibilities really are endless.
A good place to start is The MagPi, the official Raspberry Pi magazine, with nearly 100 back issues available as free PDFs, full of info and projects. There's a projects section on RaspberryPi.org, and loads more on Instructables and PiMyLifeUp. There's also a long-running OCAU thread, started when the original Raspberry Pi came out in 2011.
The retro gaming community in particular have embraced the Raspberry Pi, and I can see why. Not only are retro games available and perfectly playable on this platform, but the entire ecosystem is built by enthusiasts. You learn to find and use open-source versions of everything you need, and as I browsed through the various options I was transported back to my own computing roots. I remember Dad driving us in his ET Turbo through the pouring rain to Amiga User Group meetings, to catch up with fellow Amiga geeks. This was well before household internet, so the only way to get the programs you needed was to pore through shareware catalogs and decide in our case which Fish Disks we would buy (for the cost of media only of course) at the next meetup. You used shareware and open source because generally that's all there was, without the huge commercial software monoliths of today. If things didn't work, you tinkered until they did. If you couldn't make it work, you found someone who could and copied them. There was a genuine collaborative feel which probably still exists somewhere in the shiny sharp-edged world of Windows and Mac OS, but is absolutely fundamental to Linux.
I was genuinely gobsmacked by the capabilities of the Raspberry Pi 4. But more so, I was humbled by what it represents. Somehow it reminded me of why I got into computing, so long ago. In 1984 I was 9 years old, at a friend's house, typing BASIC programs into his VIC-20 and marvelling at the magic of seeing the programs run. Through my Amiga days, discovering Bulletin Boards and the early internet. Building my first custom PC, a 386DX40 in the house I shared with two friends after moving out from my parent's place. My time at BankAmerica, seeing the bigger picture of commercial infrastructure and realising my interest in computers could earn me a salary. Setting up OCAU, in itself just a large Bulletin Board, and the twenty years (and counting!) of fun and experiences there, all leading to my current role working behind the scenes in Amazon's datacentres. Who knows what's next? It's been a heck of a ride, and as I look at my kids, engrossed in their own world of Minecraft and Roblox, it boggles the mind to think where their journeys, just starting now, will take them. Platforms like Raspberry Pi are comforting because they show there's still room for enthusiasts to invent and share without too much commercial entanglement. The world at large seems like a giant dumpster fire at the moment, but somehow, strangely, this little slab of PCB and componentry, and its peek into the thriving world of enthusiast Linux and beyond, has reminded me of who I am, and brightened my view of the future.
So yeah. The Raspberry Pi 4 is pretty cool. You should get one. Let me know what you get up to with it, but most of all, remember to have fun with it - and whatever comes next.
Feel free to discuss this article in this thread, and check out OCAU's Raspberry Pi thread!