Cooling off your Raspberry Pi 4
I was very excited about the Raspberry Pi 4, especially when I learned that it was available with 4GB of RAM - perfect for running a Kubernetes cluster using software like k3s.io and kubeadm. There's a number of options I've tried to add cooling to my Raspberry Pi and I thought I'd list them here, how effective they are, and what the cost of each option is. I'll also tell you about a firmware update that may shave off a degree or two.
Observing the temperature
Here's a very rudimentary way to observe the temperature of the RPi
while [ true ] ; do sleep 2 && sudo sudo /opt/vc/bin/vcgencmd measure_temp ; done
temp=32.0'C
temp=33.0'C
temp=31.0'C
If you want to check how idle your system is, run uptime
or htop
and look at the values returned, they should be very low. If they are much over 0.1, then checkout what's eating up your CPU cycles with htop
and sort by CPU usage.
Cooling off
Let's look at a few of the options for cooling off. If you think I've missed something, then please reach out over Twitter.
The Pimoroni heatsink
Pimoroni have a very cheap heatsink which you can order when you purchase your RPi. It looks like this, and can shave off a degree or two at idle.
I just got a TLS certificate for my RPi4 over my home network, connected to tethered WiFi and it's serving the same site with HTTPS. Some magic with cert-manager, k3s, and inlets-pro.
— Alex Ellis (@alexellisuk) November 13, 2019
Find out more in San Diego 😎https://t.co/ioYDerQ52u pic.twitter.com/Fxes5KrW8V
The heat will be spread out, but not moved away from the device, so once it's hot, it will likely radiate that heat around the board.
You can't argue with 2.40 GBP - https://shop.pimoroni.com/products/raspberry-pi-4-heatsink
Pimoroni fan shim
This option does apply a decent amount of cooling at idle and under load, it also moves the heat away from the board unlike the heatsink.
I found the assembly very fiddly, and was worried about breaking its attachments, once attached it worked fine, and I even tried it with the custom-designed case.
Checkout a detailed thermal overview from Pimoroni on the fan shim vs. the heatsink.
Check it out from 9.60 GBP - https://shop.pimoroni.com/products/fan-shim
Heatsink case
This is not the most effective option, we'll see that next, but it is good at reducing the overall heat. It looks fantastic, and is practical on the go because it is also a case.
All kitted-out for my @rejektsio talk with this great case and heatsink for my RPi4 from @pimoroni
— Alex Ellis (@alexellisuk) November 14, 2019
See you Saturday! @inletsdev pic.twitter.com/ve8lQi1bGp
I feel it may be rather overpriced, but at least it comes in several colours. It's solid, and under load gets warm all over.
Check it out from 12 GBP - https://shop.pimoroni.com/products/aluminium-heatsink-case-for-raspberry-pi-4?variant=29430673178707
ICE cooling tower
Here's my top pick, which can get a mostly idle k3s cluster down to 31c in no time. It lights up my whole office with blue light and has a subtle, but constant hum.
Keeping nice and cool, an ice tower fan from @seeedstudio
— Alex Ellis (@alexellisuk) October 17, 2019
Just 28-30.0'C with #k3s installed with k3sup.@Raspberry_Pi #rpi4 #cooling #hardware #iot #edge @Rancher_Labs https://t.co/vUGFMb1sJF pic.twitter.com/YdNr814KUe
Check it out from 19.90 USD - https://www.seeedstudio.com/ICE-Tower-CPU-Cooling-Fan-for-Raspberry-pi-Support-Pi-4-p-4097.html
After attaching this fan and heatsink, you cannot use a case of any form or a base-plate. It probably is best left in once place for that reason. I would like to see Seeed Studio come up with something to place the RPi on.
Try the new firmware update
You can update the RPi's firmware as detailed here, and it may shed a few degrees depending on what cooling solution you're already using.
Note: you follow these instructions at your own risk.
Here's what you need to do:
- Update
sudo apt update && sudo apt upgrade -qy --no-install-recommends
-
Reboot
sudo reboot
(don't skip this) -
Add the
rpi-eeprom-update
package
sudo apt install rpi-eeprom -y
- Update
sudo rpi-eeprom-update
You should see output like "update required"
- Reboot
sudo reboot
(don't skip this)
Updating didn't appear to cause an issues for Docker or k3s, but I wouldn't recommend running rpi-update
since that has usually caused issues for containers.
Wrapping up
I've listed the ways I've tried to cool my RPi and given you some links where you can go and purchase your own solutions. The lowest temperature I observed was with the combination of the ICE Tower fan and the firmware update, after stopping k3s and containerd, the temperature got down to 28c.
I prefer the heatsink case for its balance of form and function, here's a graph from Pimoroni showing that it may be enough to stop the RPi from applying CPU throttling in most circumstances.
This graph should give you a decent picture. The passive cooling from these cases is enough to stop your Pi 4’s CPU throttling in most conditions. pic.twitter.com/qBQgG79Xum
— pimoroni (@pimoroni) November 15, 2019
Follow me on Twitter @alexellisuk to make sure you never miss a post.
Here's some other related content you may like with your new cooler, RPi:
-
Try my new blog post - Kubernetes Homelab with Raspberry Pi and k3sup
-
k3sup
("ketchup") which can be used to install k3s to any computer, or VM and to install popular apps like Nginx, OpenFaaS and cert-manager. -
inlets
- inlets OSS and inlets-pro can create HTTPS/TCP tunnels from your RPi to a computer with a public IP address, think of it like a poor-man's reverse SSH tunnel, or a free, OSS version of ngrok.
See also: new Official: Thermal testing Raspberry Pi 4