Notes On The Raspberry Pi 4

Of course I ordered one. I did it partly because I need to plan ahead for replacing my ageing ODROID U2, which has been the main house server for nearly six years (since it was the only ARM device I had with 2GB of RAM), and partly because my lab setup (which runs on a 3B+) is a little short on RAM.

Even though I don’t own a sample of every single Raspberry Pi model, I’ve gone through enough board revisions to know that there will be teething issues (like the current USB power intake), so this was a calculated bet.

I got the 4GB model intending to use it as a direct replacement for my lab machine, and was amused to see that the Safety and User Guide that comes in the box with it actually says Raspberry Pi 4 Model B 1GB, 2GB, 4GB + 8GB variants – but the 8GB bit is said to be a typo, since there are currently no matching RAM chips that would fit the current design.

Not wanting to bore you with a full review (there are zillions of them out there by now), here are my impressions:

The Good Bits

  • It is markedly faster on all counts, even compared to the last CPU revisions of the 3+ boards. I moved the latest SD card I had (already running Raspbian Buster) from a 3A+ to the 4B and the Docker containers I was running there were much snappier, even via Wi-Fi.
  • The 4GB of RAM mine comes with mean that the Arduino IDE, Mathematica and Firefox ESR (which is what I prefer to use instead of Chromium), as well as an ARM custom build of VS Code, are all usable simultaneously.

In comparison with the 3B+ and 3A+ (which, as I’ll explain later, are now my staple devices), it is a pretty solid upgrade, but…

Pitfalls

  • It has no on-board flash/eMMC, which is (together with its 2GB of RAM) one of the main reasons the ODROID U2 is still the house server. SD cards are amazingly resilient these days, but performance is still uneven and I don’t want to run 24/7 off them.
  • The form factor is mostly the same. Irritatingly, though, the Ethernet port swapped sides, which means the former official case (which has pop-out panels on the sides) cannot be re-used at all. I have two of those in black I can carve into suitable replacements, but…
  • The thermal envelope is definitely an issue, and from what I’ve seen the official case doesn’t account for airflow or any form of cooling, so I’m waiting on a couple of 5V 30mm fans and tweaking the STL files for this case in the meantime.

I’ve been browsing through pieces like Tom’s Hardware and other active/passive cooler comparisons, and the inescapable conclusion seems to be that you need some decent cooling to run the thing with a case.

vcgencmd reports 56-59°C in my office when idle, i.e., with all services except ssh shut down, and accessing it via Wi-Fi, which is sort of OK.

But it gets too hot for my liking under load, especially considering that it’s 27°C outside now and that Summer heat around these parts usually rises way above 40°C, and the prospect of having fan noise in my office again after years of quiet machines isn’t one I relish.

Stuff I’m not going to Use (Yet)

  • Dual micro-HDMI out. I haven’t plugged mine in to any kind of monitor yet and am curious about the potential for digital signage, but right now that’s not a priority (I think I have the right cable someplace, but most of my use is via SSH/RDP/VNC, so I haven’t bothered).
  • I don’t expect to make much use of USB 3 (but I’ll be keeping an eye on the in-progress USB firmware fixes that aim to lower heat output as well).
  • PoE/GPIOs are not something that I’m likely to use with this board either–all the hardware stuff I do these days tends to be a lot simpler, and an ESP8266 is often enough.

The Sweet Spot

So, what would I improve (besides thermals and storage)?

Well, I’d probably like to see a 4A revision of this–or, without doing any major CPU revisions, a Zero-sized board with a 3A+ CPU and more RAM, since my main “production” use cases right now are:

  • A “lab” station with 1-2 USB ports for plugging in an USB oscilloscope and/or FTDI adapters for flashing MCUs of various sorts (currently a 3B+) and needs all the RAM it can get.
  • A home automation server to run homebridge and a number of other Docker containers and plug in a single ZigBee SDR dongle (currently an ODROID U2), which requires a minimum of 2GB of RAM and (ideally) eMMC storage.
  • A Docker registry/build server that runs off a single USB external disk (currently a 2B) and needs more CPU and RAM.
  • A HomeKit camera running off a Zero W (which badly needs more CPU power).

That is besides the IoT/MCU stuff (which is better handled by the ESP8266/ESP32 devices I’m using these days), so there’s a yawning gap between what I need and what I got with the 4B.

Then there’s the “toy” stuff (for instance, my previous lab 3B was turned into a game console running Lakka for the kids with Bluetooth controllers), but that’s besides the point–there’s a trend here for the sweet spot (as far as I’m concerned) being somewhere in the middle.

The A Team

I recently got two Pi 3A+ boards (the same CPU as the 3B+, but only 512MB of RAM) and find them a great compromise between CPU speed and expandability (even with only the one USB A port). I also went and got a Banana Pi M2-Zero to see if I could have the same experience in a smaller package1:

From left to right, the Banana Pi Zero, a Zero W, one of my 3A+ boards with a ReSpeaker Mic Array, and the 4B

The 3A+ above is currently running a voice recognition shim (I’m really interested in building something that will do basic voice commands completely on-device), and I hijacked its sibling (which was destined to other purposes) into a sort of “portable Linux sidecar” for my iPad following this fad from a couple of weeks back.

And for me, the A series makes the most sense. I like the smaller form factor a lot, (mostly) don’t need the extra USB ports (or even Ethernet) and all I really need right now (taking the 3A+ as an example, and covering 100% of my use cases above) is a 4A board with 2GB RAM and an eMMC flash–something that is tantalizingly feasible now.

I would also love to see a 64-bit version of the OS (I’ve been tinkering with various kinds of ARM servers) but the move to Debian Buster as a base, even if a little premature, seems to have fixed a lot of my annoyances.

And that’s it. Time to go back to cloud orchestration and more impacting stuff, I’ve fallen behind schedule on most of my personal projects (as usual)…


  1. I didn’t succeed. The Banana Pi is a disaster in terms of OS support, and mine hasn’t booted to a stable state once yet. Don’t buy it. ↩︎