Raspberry Pi 4 that comes originally without any case, or can be bought with original case, can bring you headaches. it’s absolute great and genius computer (never ask me how many I own… ;) ) in version four has really very fast CPU - Broadcom BCM2711. it contains four ARM Cortex A72 cores clocked with up to 1.5GHz and dedicated GPU complex.
people all around internet report problems however with overheating of this little beast, and what’s more - problems with getting stable 4k 60Hz video output (just remember, there are two video outputs, but 60Hz is only achievable on the socket next to USB-C power supply).
my adventure with latest version was without any hiccups - as I got to all of my “version fours” full-aluminum case geekworm TB-2019-16-1.
unfortunately, my happiness was premature. while playing native 4k content, temperature reached 55+ degrees Celsius. it ended in one of two states - either Ethernet controller overheated and stopped to respond in any way to network traffic (while staying “up” from switch point of view), or there was complete, randomized mix of colors in played content, far from what should be on the display. that’s likely artifact of some bugs still in the microcode, not supporting properly situation where hardware is throttling after crossing specific temperature thresholds.
one way or another, my CPU and GPU temperatures were reaching 56 degrees Celsius. you can find some horror stories of people “working” with RBPi4 that is running at anything between 60 and 80 degrees C but I wouldn’t recommend doing that.
so, until final solution arrives, I decided to do a quick hack. I used one of many laying around, absolute “superb” Noctua fans to help with cooling. as you can see below, I modified (it’s very blocky and butchery as you can see, sorry for that) the socket from fan from 4 pins to 3 pins (aluminum case doesn’t have space for extra socket plastic) and it works flawlessly. I can highly recommend anything coming in from Noctua, specially their CPU cooling kits. from the moment I used them for the first time, I’m removing any fans from PC chassis and other pieces and replace them with Noctuas - they’re absolutely the best - silent and with highest air flow pressure possible.
to control something, you have to measure it…
to take the temperature readings from the RBPi 4 I’m using following, short script. for those of you that don’t work daily with Linux,
sleep parameter controls how much time in seconds the script will wait before executing never-ending loop. paste this into a file on Rasbperry, save it, make it executable by
chmod +x script_name.sh and then run. it will run until you press
#!/bin/bash while true do cpu_x=`cat /sys/class/thermal/thermal_zone0/temp` echo "$(date) GPU: $((cpu_x/1000)) CPU: $(/opt/vc/bin/vcgencmd measure_temp)" sleep 10 done
for my first configuration (without a fan), script produced (while playing 4k video):
Wed Dec 30 00:38:07 CET 2020 GPU: 56 CPU: temp=54.0'C Wed Dec 30 00:38:17 CET 2020 GPU: 55 CPU: temp=54.7'C Wed Dec 30 00:38:27 CET 2020 GPU: 56 CPU: temp=55.1'C Wed Dec 30 00:38:37 CET 2020 GPU: 56 CPU: temp=54.7'C Wed Dec 30 00:38:47 CET 2020 GPU: 55 CPU: temp=55.0'C
after adding the fan:
Wed Dec 30 01:25:56 CET 2020 GPU: 36 CPU: temp=36.0'C Wed Dec 30 01:26:06 CET 2020 GPU: 36 CPU: temp=35.0'C Wed Dec 30 01:26:16 CET 2020 GPU: 35 CPU: temp=36.0'C Wed Dec 30 01:26:26 CET 2020 GPU: 35 CPU: temp=36.0'C Wed Dec 30 01:26:36 CET 2020 GPU: 36 CPU: temp=36.0'C Wed Dec 30 01:26:46 CET 2020 GPU: 36 CPU: temp=36.0'C
20 degress Celsius makes a massive difference for any electronic equipment. will it work right now without producing artifacts and problems? we’ll see soon enough :)