From home temperature monitoring to a Kubernetes cluster hosting a live Drupal website, I have a lot of experience running Raspberry Pis. I've used every model through the years, and am currently using a mix of A+, 2 model B, and 4 model B Pis.
The 3 model B+ was the first generation that had me concerned more about cooling (the CPU gets hot!), and the Pi 4's slightly increased performance made that problem even more apparent, as most of my heavier projects resulted in CPU throttling. I've written about how the Raspberry Pi 4 needs a fan, and more recently how it might not.
But I realized, I've done a lot of testing for my own needs, but never compiled them into one concise post. So today I'm going to remedy that by writing the most complete guide I know of for options for cooling your Raspberry Pi. Each approach has its benefits and drawbacks, which I'll highlight along with the raw temperature data from stress tests.
tl;dr - Just give me the results!
Well, here goes—in table form, here are the maximum and minimum temperatures for each cooling method:
Cooling Option | Min Temp (°C) | Max temp (°C) | CPU throttled? |
---|---|---|---|
Bare Pi | 47 | 80 | YES |
Bare Pi (with heatsink) | 47 | 73 | NO |
Pi in official case | 50 | 84 | YES |
Pi in official case (fan mod) | 36 | 57 | NO |
ICE Tower (with fan) | 32 | 49 | NO |
Flirc case | 34 | 55 | NO |
PoE HAT (with fan) | 42 | 54 | NO |
(Click on the name of any option to go to the detailed results for that cooling method.)
And here's a graph of the actual temperatures for each cooling method through a 20 minute run of the stress test (5 minutes idle, 10 minutes under stress, then 5 minutes idle):
I'll go through each of the Pi cooling setups in detail through the rest of this post.
Testing Methodology
- I used this CPU stress temperature monitoring script.
- Every test was performed on the same 4 GB Pi 4 model B, using the same 32GB Samsung Evo+ microSD card updated to the latest Raspbian OS revision.
- The Pi is running the latest firmware/bootloader which fixes the USB controller's energy usage.
- The Pi was plugged into an official Pi Foundation USB-C AC adapter (except in the case of the PoE test).
- The room was kept a constant 23-24°C.
1 - Bare Raspberry Pi
Best for: Tinkering or testing new things.
The barren Raspberry Pi is useful when you're building a new project, playing with GPIO pins, or testing a new Raspberry Pi setup. It's silent when you don't have a fan attached, and best of all, this is how it comes out of the box.
Since there's no case constraining air flow, natural convection carries away enough waste heat from the CPU and other hot parts of the board to keep it from throttling—at least most of the time. Towards the end of a stress test, it throttled for a few times, but only for a brief moment each time.
The board still gets noticeably hot—enough so that a finger touching the wrong part could burn you (though you shouldn't pick up a running Pi with your greasy oily hands!). And the heat can make its way over to the microSD card, possibly reducing its stability or longevity.
2 - Bare Raspberry Pi with CPU Heatsink
Best for: Keeping the CPU from throttling under load—but just barely and not in a case.
There are zillions of Pi CPU heatsinks available from Amazon (here's the heatsink kit I used). Almost every one of them will do an adequate job dissipating heat. The key is to increase the surface area beyond the flat plane of the top of the Pi's own CPU enclosure. The more surface area (and the better the thermal pad between the CPU and heat sink), the better the dissipation.
Heatsinks will generally shave 5-10°C off the highest temperatures you encounter, which is significant, but you still need to have air moving across the heatsink for it to do anything. This means either a fully open Pi (great for testing or tinkering, not so great for a semi-permanent installation), a well-ventilated case (with slots or holes in the bottom and top to allow natural convection), or a fan. So not a bad choice, and they're so cheap you should probably stick them on any Pi you can... but heatsinks alone won't solve Pi cooling problems.
3 - Official Pi case
Best for: Cooking things in a plastic Raspberry Pi-sized oven. Otherwise, nothing.
Even though the official Pi 4 case looks nice, it's a bad idea to use it if you don't modify it in any way. It completely encases the Pi, with zero ventilation, meaning all the heat generated by the CPU, ethernet controller, etc. just gets trapped inside. It's great if you want to cook the board, and technically you could keep it running this way indefinitely.
If you use the official Pi 4 case, you'll deal with a CPU that frequently throttles (meaning a slower Pi), and all the other components will be very hot all the time. While some components (like the SoC/CPU) can handle the heat around 85°C, others might not fare so well. I'm looking at you, little cheap microSD card!
And no, a heatsink on the CPU inside the Pi 4 case won't help—the heat it dumps still gets stuck in the mini-oven!
4 - Official Pi case with fan mod
Best for: Using the official Raspberry Pi case without throttling.
The official Pi case looks nice. And it fits the Pi just so. If you're married to this case, the best option is to mod it to at least provide better ventilation (e.g. by drilling some holes or slots for natural convection). Even better, mod it with a tiny fan like the Pi-Fan, as I detail in this post and video.
5 - Flirc case (case-as-a-heatsink)
Best for: Almost any use case.
The Flirc case is a little pricier than other cases, but is worth it. It is completely silent (no fan), it looks great (aluminum on the sides and a flat rubberized surface on top), and it dissipates heat very well—almost as well as the ICE Tower and its fan!
I will be buying more of these for my more-permanent Pi 4 installations.
6 - S2Pi ICE Tower Cooling Fan
Best for: Overclockers. Crypto miners. Kubernetes users.
The ICE Tower is, by far, the best-performing cooling solution for the Raspberry Pi. At idle, it keeps the Pi CPU close to ambient temperature, and at full-tilt, the CPU never reached 50°C. This is probably the best-performing cooling solution for the Raspberry Pi short of immersive liquid cooling.
That is to say, for most users, it's overkill. But the best kind. I mean, look at the thing! It gives me vibes of the days when I was overclocking my Pentium II CPU and catching motherboards on fire!
7 - Official Pi PoE HAT (with temperature-controlled fan)
Best for: Keeping a PoE-powered Pi cool, people who don't have the Pi within earshot.
The official PoE HAT includes a small-but-mighty fan which is positioned directly over the Pi 4's CPU. This little fan wins the award for consistency; it lets the CPU idle a little hotter than the Flirc and ICE Tower, but it also throttles up as needed to try to keep the CPU in a narrow temperature range (~45-55°C), whereas the Flirc and other solutions allow the Pi to get a little hotter.
The PoE HAT is a bit of a niche product, useful only for those who want to power their Pis from a network connection. The little fan does a good job cooling, but it's also fairly loud when it is doing so, due to its diminutive size. I wouldn't want one of these running within earshot (says the guy with a Pi Kubernetes cluster running 24x7 in his office...), since the fan powers up and down quite frequently.
Summary
The Raspberry Pi 3 model B+ and 4 model B have made the Pi a rather competent little computer. But as it starts to match low-end server specs, it also matches their thermal output. If you do anything besides the most lightweight computing tasks, you should consider using one of the better cooling solutions in the post above.
My recommendation for most people is the Flirc case. If you need to hammer the Pi a lot (and can hack together your own case for it), you might want to consider the ICE Tower. Otherwise, if you just tinker with the Pi and aren't using it more than a little here and there, you might be happy slapping a tiny heatsink on the CPU.
Comments
Firstly Jeff, thanks for the articles of the RPi 4 cooling solutions which reassured me after reading about the potential overheating for the latest Pi. I intend using my Pi 4 with a pi-camera and will be doing some intensive image processing so overheating and throttling would probably be an issue.
In order to fit a pi-camera, many of the solutions you've tested cannot be used (Flirt and official cases) or are difficult to use with a camera (ICE Tower). I settled on a more open case from GeeekPi (https://www.amazon.co.uk/GeeekPi-Acrylic-Raspberry-Model-Brown) which uses the same small Pi-fan as many.
I downloaded and ran your shell script for measuring CPU temp/throttling/frequency and had the following results (ambient temp about 20C):
Bare Pi: Idle: 47C Stressed 78C (results similar to your own, too close to the 80C throttling limit for me)
GeeekPi case: Idle: 28C Stressed 46C (case constructed with fan below upper deck, as GeeekPi recommend)
GeeekPi case: Idle: 29C Stressed 48C (case constructed with fan ABOVE upper deck - so easier to fit pi-camera)
I was quite impressed with the case's performance! Comparable with the ICE Tower but less than half the price!
Now the interesting bit (well, for me anyway!). In none of the test runs did I get throttling as indicated by your test script. But the script also reports CPU frequency, and I noticed that in the periods before and after the actual stressing, frequency varied (a lot) between 0.6-1.0 GHz. As soon as the stressing started, the frequency shot up to 1.5 GHz and stayed there.
Any idea why this happens? It seems that when the Pi 4 is idling, it reduces CPU frequency (to save power?) then ramps up to a full 1.5GHz when needed perhaps?
This is exactly how it works; in the old days, many computers had 'turbo' buttons which would perform a similar purpose (though for a different reason back then)... most of the time you'd only need the baseline performance (e.g. 33 MHz), but you could turn on 'turbo' to double the speed when needed. Processors back then weren't as power efficient, but processors today (especially mobile designs, like the ARM chips in the Pis are based on) do a good job of throttling down when idle to save energy and produce less heat.
When you ask for the CPU to do lots of work, it throttles up within a few cycles (nanosecond scale) and gives you the full output, consuming a little extra power while it's doing that work (and generating more heat).
I actually learned not too long ago that the "turbo" button that used to be on old 386-486 era PCs was not in fact for increasing the speed but rather for slowing it down! [1]
CPUs at the time were also not nearly as intelligent as current-generation CPUs and did not do any automatic throttling. They simply ran at a fixed speed (which could be chosen using the "turbo" button if you had one). Overheating was not really an issue yet (even if you left it on "turbo" all the time).
[1] https://www.computerhope.com/jargon/t/turbo.htm
Hi Jeff, thanks for your great post. Here is another post concerning raspberry 4 temperature comparison.
https://www.element14.com/community/community/raspberry-pi/blog/2020/04…
You can make PoE HATs less noisy: https://github.com/raspberrypi/linux/issues/2715
Popular option is to bump temperature when they kick in, but you can also change the speed
Super interesting thanks.
I've tried several fans they're all noisy + with a very unpleasant noise profile. I'm using a minimalist $5 "case" (2 plastic rectangles) and heatsink, Pi on its side for airflow. Paying as much for the case as for the PC would be weird...
Thank you for the great post.
I'd like to add my preference, the Armor Case. Similar to the Flirc case the case itself is the heatsink, but with more accented ribs and less price. Available from lots of sellers for as low as $12. (search for 'Armor Case Raspberry') I prefer the version without the fans.
One caveat though: the surface touching the chips comes painted ruining the thermal contact, the paint must be grinded off on these rectangular areas, pay attention to keep the surface flat, and use some thermal conductive grease on them where they touch the chips.
We've made a heatsink for Raspberry Pi 4 model B (seems to be compatible with the 8GB model too) with the goal - no compromises. Big fins, direct contact, 215g of aluminium :-) guess the outcome.
Some comparison against other heatsinks is here
https://github.com/nschloe/stressberry
The guys at The MagPi also made a test of coolercases - it's here:
https://magpi.raspberrypi.org/articles/group-test-best-raspberry-pi-4-t…
The motivation behind that massive cooler was - to really passively cool it under any imaginable circumstances (low air pressure, maximum synthetic load,...) and never burn fingers, never underclock. We use it for some realtime control, so any underclocking could be detrimental to data acquisition.
have a 3D printer? If not I'll send you a case the cool kids are printing plus a 40mm fan to go in it. Add the CPU heatsink and then add it to your tests :)
https://www.thingiverse.com/thing:3793664
I think the povray raytracer benchmark (povray --benchmark) heats even more and uses all 4 cpu cores too.
Also it is not a synthetic benchmark, but does some useful calculations to render a picture.
Just install ist with apt-get install povray and use it instead of stress-ng.
If you have 64-bit OS, the 64 bit version of povray is about 20% faster, and heats the pi4 even more.
I made a custom case from cardboard which cools the pi4 with only one fan on both sides, top and bottom,
and even overclocked to 2 GHz CPU, 650 GPU, overvoltage 5, max. temp during povray benchmark was only 71°C,
at room temp 25°C, for 32-bit version of povray.
Hi Jeff,
What about Argon ONE Raspberry Pi 4?
There are plenty of desktop computers available that do not have proper cooling fans on the casings. It is because it is not installed properly in the fans and that is why; installing a good PC cooling fan should be there. One can also opt for Aio Water Cooler so that you get the proper advantages. However, to the annoyance of end-users operating all these computers, the heat generated by the machines is so extreme that this causes different types of chips to be dislodged off the mainboard.
What about using a hipercheap AMD cooler like DeepCool CK-AM209 ?
Thanks, a useful and through article which was helpful in deciding what case to buy (flirc).
I know it has been over a year for this, I saw the video actually at that time, but I just came here wondering about the last case (RPi 4b + PoE Hat), but inside the official case.
Without the case it's okay, there's a lot of ventilation, but inside the case, there's nothing, the fan will just keep circulating the air inside, there will be very limited holes for the air to get through, but there's no real circulating or a clear path for the hot and cold air to go to. Not to mention I had to remove the older heatsink I used before the PoE before the clearance space is much short now I need a very low profile heatsink (I don't even know how many mm is that).
Thanks Jeff for the informative and helpful write up. My Raspberry Pi 4 was sweating away with a medium sized heatsink and acrylic open case during the initial intensive process of installing. Logs in Umbrel warned that it had throttled at one point but was still running at a high temperature. Turning it on its side offered a tiny bit of respite, but your recommendation from your testing for the Flirc case was perfect for my use case. It's now as cool as a cucumber , temperature and looks-wise!
Hey Jeff, I have a spare PC radiator, pump and water block. I don't suppose you've ever seen a Pi4 water block adapter on your travels have you? :)
I'd love to give the Pi 4 a bit of an overkill cooler.
This cluster had one! Building A Water Cooled Raspberry Pi 4 Cluster.