Wednesday, July 10, 2019

Raspberry Pi 4 heatsink testing

With all the talk of how hot the Raspberry Pi 4 runs I thought I’d do some testing to see how different heatsinks perform. I had a few heatsinks at hand in my parts collection and ordered one specific heatsink for testing and set out to determine how effective they are. According to this page thermal throttling of the CPU happens between 80-85° and above 85° the GPU is also clocked down so let's see how far below that point we can stay with various heatsinks.


The Small and Medium heatsinks are this product from Amazon, I cut one of them to different lengths to provide similar dimensions to other heatsinks available for Raspberry Pis. Dimensions of the 2 sizes I cut:
Small Heatsink: 22mm x 24mm x 6mm
Medium Heatsink: 22mm x 45mm x 6mm

The heatsink with fan is the larger of the two heatsinks from an Intel quad port gigabit network card that I had sitting in my parts box, it’s quite thin, so I coupled it with 40 mm fan using some custom designed and 3D printed brackets that the fan screws to, the brackets hold onto the heatsink with friction, for such a hacky job this setup performed the best.
Heatsink with 40mm Fan: 34.5mm x 34.5mm x 6mm (22mm tall with fan)



The large heatsink is one I ordered from RS, it's quite large (relative to a Raspberry Pi) and heavy, I had to cut the tabs off with a hacksaw as they prevented it from sitting on the SoC.
Large Heatsink: 37.5mm x 37.5mm x 33mm

To get the Average Idle Temp I let the Pi settle for at least an hour with the heatsinks attached then recorded the temperature every 1-2 seconds for 60 seconds.

To load up all cores I used a simple one line script that I found on Stack Overflow, it launches 4 instances of dd copying /dev/zero to /dev/null, this creates enough load to use 100% of the CPU and as a result pushes the temperature up, I know its not ideal, but its a quick solution that does what I required. The script I used is below, simply paste in a terminal window and press enter, to exit the script and kill the dd instances just press enter.

fulload() { dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null & }; fulload; read; killall dd

The Time till cap at 100% is the time from when I launched the dd instances till the first time the command "vcgencmd get_throttled" shows the CPU has been frequency capped. I was logging the CPU clock speed values from /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq and vcgencmd measure_clock arm and interestingly when frequency capping was reported neither of the values dropped below 1500MHz.

The below tests were done at an ambient room temperature of 18-20° Celsius.

Description Average Idle Temp Max Temp Time till cap at 100% load
No Heatsink 59.95°C 82°C 3 minutes and 22 seconds
Small Heatsink 55.94°C 82°C 14 minutes and 15 seconds
Medium Heatsink 54.41°C 81°C 15 minutes and 39 seconds
Large Heatsink 45.55°C 71°C Never, ran for 2.5 hours averaging 67.97°C
Heatsink with 40mm Fan 34.75°C 46°C Never, ran for 2.5 hours averaging 43.03°C

From the above results it's quite obvious the heatsink and fan performed the best, I think I'll be going with the fan option as even the large heatsink is getting close to the 80° mark.

I'm keen to test some other readily available and preferably cheap heatsinks if anyone has some suggestions feel free to hit me up.


No comments:

Post a Comment

Raspberry Pi 4 heatsink testing

With all the talk of how hot the Raspberry Pi 4 runs I thought I’d do some testing to see how different heatsinks perform. I had a few heats...