Projects »

Silent cooling for the Raspberry Pi 3

Stop the Pi3 CPU overheating by using a fan powered from GPIO 5V pin

tl;dr – a 92mm case fan running at 7V gave silent cooling, and maximum performance to a cluster of Pi3s


Raspberry Pi 3 cluster with cooling fan Nanoxia Deep Silence 92mm fan with MT3608 voltage step-up/boost converter

Overheating reduces performance

The Raspberry Pi 3 SoC runs much hotter than in previous models, and at 100% load it reaches 80°C (176°F) within 5-10 minutes, even with good ventilation in your case. At this point the SoC automatically throttles down its clock speed, to avoid getting any hotter and damaging the chip. It can safely run long-term at this temperature, but you don’t get maximum performance.

Using:

vcgencmd measure_temp
to measure the SoC core temperature, the cluster idles at 45°C (113°F) with passive cooling. i.e., no fans, just hot air convecting out through grills in the case.

At 100% load, using:

sysbench --test=cpu --cpu-max-prime=200000 --num-threads=4 run &
the SoC core temperatures reach 80°C (176°F) after 7 minutes.

Silent cooling

To cool down my 5 node Raspberry Pi Cluster I fitted a single 92mm fan to the outside of the case. I used a (effectively) silent fan recommended by Quietpc.com, the Nanoxia Deep Silence (£8.77). I measured it drawing 110mA at 12V (maximum speed).

At 5V I have to get my ear within 50-75mm (2-3") to hear even the slightest whisper from the fan, and the supplied rubber gromets definitely do a good job of isolating the case from any small vibrations. However at 12V the fan is quite audible in an otherwise silent room, so I was looking for the voltage that would provide enough cooling, while keeping the fan silent.

For cooling a single Raspberry Pi 3 you could use a much smaller fan, perhaps 40-60mm.

Powering the fan

Unlike PC motherboards, a Raspberry Pi 3 doesn’t have a standard 3 or 4-pin fan header, but it is quite easy to power the fan using the GPIO 5V power rail instead. WARNING you can’t run anything that needs a lot of current this way – however a low-power fan should be fine. You do need to make sure you have a quality power supply, and not too many power-hungry USB devices plugged into your Pi, otherwise you’ll get crashes & rebooting.

The main GPIO pins are for data, and limited to 50mA per pin. However using one of the two 5V power rails should work in theory. These pins are marked in red in the diagram below:

GPIO pins diagram for Raspberry Pi

Most fans won’t work (or will spin very slowly) at 5V, but you can use a small boost-convertor to ramp up that voltage to anywhere between 5V and 12V.

This mini step-up/boost converter can take the 5V output from the Raspberry Pi, and boost it to between 5V and 12V to set a different fan speed. There is a tiny screw on the board to adjust the output voltage, but use a multimeter to check the output voltage before connecting to the fan, as this particular converter can output up to 28V which would burn out the fan :$. It only costs £2.09.

The Nanoxia Deep Silence (non-PWM model) fan comes with a 3-pin plug: red is power (5-12V), black is ground and yellow is used for reporting the current fan speed to the computer. To remove the individual wires from the plug, depress the tiny metal tabs (e.g., with a small screwdriver), and the wires will slide out. I cut off the yellow wire which I wasn’t interested in, and slid the wires back into the plug so that red was on the left, the middle was empty, and black was on the right:

Raspberry Pi 3 with fan header plugged into GPIO (top left)

This should be enough to run the fan with 5V, or cut the fan cable in half and solder the step-up/boost converter in the middle to power the fan between 5V and 12V.

Benchmarks

For my 5-node cluster, with the fan sucking hot air out of the case I got the following results. Temperatures between the Pi3s did vary a few degrees, so an average of 75°C (167°F) might mean some of the Pi3s are very close to throttling:

descriptionidle100% loadperformance
No case, no fan-41.0°C75.5°COK (barely)
Case, no fan-45.0°C82.5°Cthrottles
Case, 5V fansuck37.9°C74.5°COK (barely)
Case, 7V fan, 800 rpmsuck35.6°C69.5°COK
Case, 12V fan, 1400 rpmsuck32.5°C61.1°COK

Then I tried turning the fan over, so it was blowing cold air from the outside into the case. To my surprise this gave a useful improvement in temperatures:

descriptionidle100% load  performance   
Case, 7V fan, 800 rpm    blow34.5°C66.4°COK

Whether to blow air in, or suck air out probably depends on the exact case you are using and where the hottest components are placed, so it is worth trying both directions to see which gives you the best result.

Conclusion

While this particular fan & cluster system can run at the stock 5V output of a Pi3, it runs very close to throttling the performance, and certainly in a warmer room the SoCs would throttle. To give a safety buffer, running the fan at 7V seems a good compromise between giving maximum performance, while remaining effectively silent.

Future improvements/ideas


Fb Share this on Facebook
Nick Smith, May 2016.