It's official: Raspberry Pi OS goes 64-bit

64-bits. More is always better, right?

Well, not exactly. And that's why it's taken years for Raspberry Pi OS to add an officially-supported 64-bit version, in addition to the 32-bit version they've had since the original Pi came out.

Since May 2020, there's been a beta 64-bit version of Pi OS, but it wasn't intended for beginners, and was never linked from the main downloads page.

You had to kinda be 'in the know' to get it. And the reason for that is it's actually branched directly off of Debian Linux and had a few growing pains. But almost all those problems have been ironed out now, and apparently it's time for the Raspberry Pi's 64-bit era.

Raspberry Pi OS 64-bit blog post

Yesterday Raspberry Pi announced the 64-bit version is finally official. It's no longer hidden away in a crusty forum link, it's linked straight from their public downloads page and the Raspberry Pi Imager. Check out this video from leepspvideo for a guide on how to get it installed on your Pi.

The 32-bit image is still listed first because it's still compatible with every Raspberry Pi ever made—including this ancient first generation model B!

Gen 1 Raspberry Pi model B

And it probably won't go away for a while either, because Raspberry Pi still supports the Compute Module 1, which has the same processor, and that'll be supported until the end of 2026!

The 64-bit release is only compatible with more recent Pis, like the Pi 3 and Pi 4 generations, as well as the Pi Zero 2 W.

64-bits, why?

But what are some reasons you might wanna run 64-bit Pi OS? Well, since I've been running it on all my Pis since spring last year, I'll tell you why I run it.

RAM

The first reason has to do with RAM.

If you have less than 4 gigs of RAM, then memory isn't a huge concern and the 32-bit OS should run fine.

But 32-bit OSes can't address more than 4 gigabytes of RAM without some weird hacks like the one Pi OS uses, called Large Physical Address Extension. That allows the full 8 gigs to be addressed, but only up to 4 gigabytes for any single process, like a Chromium browser tab. That means for most applications, RAM is a non-issue.

But there are some cases, especially with servers or things like data processing, where one process could use more than 4 gigs, and in those cases, you should definitely use the 64-bit OS.

And for most people running a 64-bit OS won't cause any problems, except for maybe gobbling up a little extra RAM. You might not realize it, but 64-bit memory addresses actually take up a little more space than 32-bit addresses, meaning you have a little less free RAM when you run a 64-bit OS.

It's not a huge difference, but I tested both Lite images on my Pi Zero 2 with its measly 512 MB of RAM, and I saw 66 MiB used on the 64-bit OS, but only 48 MiB on the 32-bit OS. That's a 32% difference! So if you run heavier apps, the total memory usage will be a little higher when you run it on a 64-bit OS.

I think that's the main reason why the 32-bit Pi OS is still listed first—Raspberry Pi doesn't want people running out of memory on their newest Pi, the Zero 2 W, which only has 512 MB of RAM!

So RAM could be a factor depending on what you run on your Pis, and which Pi you run, but that's not the primary reason I run the 64-bit version.

Software compatibility

The biggest reason is software compatibility.

Outside the Pi and embedded computer ecosystems, almost nobody runs 32-bit operating systems anymore. Because of that, almost all modern software is built for 64-bit. Some software is also built for 32-bit, but it only runs because of dedicated support from Pi users or maintainers who still care about 32-bit support.

The problem is supporting 32-bits gets harder every year, especially as modern software uses optimizations and libraries that might not even be tested on 32-bit processors!

As a concrete example, you can't install Elasticsearch anymore on 32-bit Pi OS.

So moving to a 64-bit operating system means a lot more things, from downloadable apps to Docker images, run without any changes.

I think more and more projects that have been maintaining 32-bit support will probably drop it as users transition to 64-bit Pi OS.

Performance

The last reason I prefer the 64-bit OS is because some of the software I run uses optimizations that are only available on the newer processor architecture.

For example, the A64 instruction set has more and wider registers, and has some new instructions that can speed up certain operations quite a bit.

Broadcom BCM2711 on Raspberry Pi 400 Computer Board - Macro

The fastest chip currently used by Raspberry Pi, the BCM2711 pictured above, doesn't support everything, though. Cryptography-related extensions aren't built into this chip. But for some specific things, you can get 5-30% faster performance just by running an application with the 64-bit version.

Some 64-bit ARM instructions are even better for energy efficiency, too, so you get better performance and use less power doing it!

But day-to-day use like booting up your Pi, browsing the web, or editing a document won't see any impact. But for people like me who run their Pis as servers, and run things like Kubernetes and network utilities, it can make things a lot more efficient.

Issues with 64-bit Pi OS

Disney+ warning when Widevine and 64-bit Chromium is not working on Raspberry Pi

But running 64-bit Pi OS isn't all rainbows and butterflies, at least not yet. There are still a few issues, for example, Widevine DRM is currently incompatible with the 64-bit build of Chromium. So if you wanna watch Netflix or Disney+ on your Pi, you have to manually install the 32-bit version of Chromium on 64-bit Pi OS. The Pi blog post has instructions for doing that.

Though, to be honest, maybe broken DRM's a good excuse to protest DRM and find some other source of entertainment.

There are also hardware video acceleration issues with 64-bit Pi OS that might slow down video playback in some cases, but hopefully those'll be resolved soon.

Conclusion

In the end, I'd say basically if you run a modern 4th-generation Raspberry Pi, like the Pi 4 model B, Pi 400, or Compute Module 4, go ahead and use the 64-bit Pi OS. The downsides are minimal for almost everyone, and the wider usage will hopefully lead to the final major bugs being squashed once and for all.

Moving forward, the 32-bit Pi OS will probably stick around until at least 2026, but then my new question is, when will it switch places on the download list, making 64-bit the default? After all, if there are ever new Pis with even more RAM or a newer processor and more ARM 64-bit-only instructions, the 32-bit OS will become even more slow and more irrelevant!

Comments

Comparing 'free RAM' after booting when no further software is actually loaded draws IMO a wrong picture.

Depending on the tasks running a 64-bit userland might consume almost twice as much RAM compared to a 32-bit userland. At least that's what happened all the time when I took a closer look, e.g. https://github.com/nodesource/distributions/issues/375#issuecomment-290…

In other words: if your processes are memory constraint you might end up with only half as much being able to run with 64-bit compared to a 32-bit userland.

True... but as a general illustration, it holds up—I've seen between 10-30% more RAM usage for all the apps I've run and compared on 32-bit vs 64-bit (mostly web / dockerized monitoring stuff).

But the end recommendation is the same: If you don't have at least 1 GB of RAM, might not want to go 64-bit even if there are other benefits, since you'll always be swapping.

Speaking of swap... I've not the slightest idea why the RPi guys do not enable zswap on any SoC from the BCM2387 onwards. They could do this easily in ThreadX adding the few bits to kernel cmdline with the same algo that decides which kernel to load). With those recent kernel versions and a quad-core A53 and even A72 it makes IMO no sense at all to _not_ benefit from zswap...

And where zero swapping to 'disk' is the goal zram comes to the rescue (I started my research on the subject almost 5 years ago before we made zram default in Armbian – linked from here: https://www.cnx-software.com/2022/01/13/ubuntu-22-04-zswap-raspberry-pi…)

Maybe time for another enlightening blog post about improving swap situation with SBC? But at least zswap is such a no-brainer and maybe someone with your 'weight' might be able to push RPi guys towards this direction...

I could probably offer a little bit of a nudge, but pushing the ship that is the RPi engineering team with their current priority list takes sustained small bits of effort over a long period :D

Silly me just realized that zswap is already enabled today though the defaults might be not ideal (lzo/zbud instead of zstd/z3fold).

Thinking about repeating those tests back then to compare zram with USB2 bottlenecked swap on SD card, SSD and HDD: https://forum.armbian.com/topic/5565-zram-vs-swap/#comment-54487

And it's also interesting whether lzo, zstd or lz4 performs better on ARM since situation might differ between x86 and ARM (due to optimised code making use of SIMD / vector extensions missing on ARM).

"Compatibility" isn't the issue. Outside of toolchains and OSes, software generally isn't, nor should ever be, written to care about whether it's going to run on 64 bit or on 32 bit CPUs. If something is 64 bit specific, it's either something that needs tremendous amounts of RAM or it's written poorly. Tens of thousands of open source packages which compile and run just fine from source on both 32 and 64 bit CPUs bear this out.

One place where compatibility is an issue, though, is with hardware drivers. Some hardware acceleration require binary blobs, and because those are both poorly written and not open source, there are notable disparities between what we get compiled for 32 bits versus 64 bits.

Also, I think you might be forgetting that the rest of the planet exists when you write, "Outside the Pi and embedded computer ecosystems, almost nobody runs 32-bit operating systems anymore". Do you think that everyone in the world can afford modern computing with enough memory to justify a 64 bit OS? There are still many, many computers and plenty of reasons to still run 32 bit hardware and OSes.

Maybe I could qualify it and state that almost any 'computer' an average person would interact with in a computer-y way these days is running a 64-bit OS.

After trying it out for 2 days on my 8gb pi4 desktop im super happy with the 64bit os. I use mostly for media/ 3d printing, and I mostly design things using Onshape. Anytime I had to make a modification to a design if I wanted to do it with any speed I had to go upstairs to my main computer. Since updating I've noticed using Onshape on the pi is much faster. It's still not as fast as my main desktop, but it's atleast reasonable.

So I guess if you have a Pi 3B or 3B+, the decision of whether to go to the 64-bit OS or stick with 32-bit is really use-case dependent? You've only got 1 GB RAM on those, so I suppose it depends on what programs you run, how many and which ones at the same time, etc etc? For desktop use, I suspect the browser is the most demanding application.

I'm a bit torn since LibreOffice has, I believe, stopped 32-bit development. But 1 GB is getting skimpy for an ordinary desktop GUI environment these days, bumping into usability issues.