Re: Fan SHIM for Raspberry Pi

David Ranch <dranch@...>

Hey Larry,

Thanks for the comprehensive post!

I've been thinking of buying one of these units too but the use of the I2S pin is a killer for me as I need that bus for the FePi HATT.  So, I guess I'm back to square one trying to find an intelligent fan for the Raspberry Pi.  I'd personally like to see an Rpi cooler that uses a three our four pin fan and I can monitor it's RPM via the I2C bus.  This should be pretty simple using something like a Micrchip EMC2301 ( ) but I haven't found anything that's pre-made and something very small like the Fan SHIM.  I know I could do something like this via an Arduino and I've done something similar showing the RPM on an LCD display but not putting the data into an I2C bus but that's all too "big" and I'm again looking for something just as small as a Fan SHIM.

Maybe someone else on the list has found something like what I'm looking for?


On 10/06/2019 10:33 AM, Larry Dighera wrote:
I want to report that the inexpensive Pimoroni FanSHIM performs very
well in preventing the RPi4 from CPU throttling due to excessive heat.
The supplied Python-based software implements temperature
control of the fan in proportional response to CPU temperature.  If
you prefer a full time daemon to control the fan, that is included as

Incompatible with I2S HATs.
Booster Header
required for some GPIO use.
Moving parts.
Button needs a pending GPIO Zero software update.

30mm no-solder, controllable CPU fan with RGB LED and tactile switch

30mm 5V DC fan
4,200 RPM
0.05 m3/min air flow
18.6 dB acoustic noise (whisper-quiet)
Friction-fit header
No soldering required
Tactile switch
Basic assembly required
Compatible with Raspberry Pi 4 (and 3 B+, 3 A+)
Python library and daemon
Kit contains
30mm 5V DC fan with JST connector
M2.5 nuts and bolts
Assembly is really easy, and will take less than two minutes.

With the component side of the PCB facing upwards, push the two M2.5
bolts through the holes from below, then screw on the first pair of
nuts to secure them and act as spacers.
Push the fan's mounting holes down onto the bolts, with the cable side
of the fan downwards (as pictured) and the text on the fan upwards.
Attach with another two nuts.
Push the fan's JST connector into the socket on Fan SHIM.
Our Python library lets you control the fan (on/off), RGB LED, and
switch. There's a handful of examples to show you how to use each
feature, and a script to install a daemon (a service that runs in the
background) that runs the fan in automatic mode, triggering it on or
off when the CPU reaches a threshold temperature, with a manual
override via the tactile switch.

You can read our Getting Started with Fan SHIM tutorial for a really
detailed guide on assembling Fan SHIM and installing the software,
with photos for each step of the assembly.

When mounting or detaching the fan, or assembled Fan SHIM, do not push
on the fan itself, as it is liable to break.
Be careful to mount your Fan SHIM on the correct pins on your Pi, with
the Pi shut down and power disconnected. Shifting it left by one pin
or down a full row of pins could cause damage to both the Fan SHIM and
the Pi. Check out the photos in our tutorial if you're not sure.
?Not heatsink-compatible!
Because Fan SHIM uses pin BCM18 to control the fan, and this pin is
also used by I2S audio devices, you won't be able to use I2S DACs like
pHAT DAC, pHAT BEAT, and the IQAudio boards at the same time as Fan
Dimensions: 45x39x11mm

Benchmarking the Raspberry Pi 4

Raspberry Pi 4 Cooling Review: Pimoroni Heatsink and Fan Shim Tested,6219.html
By default, the Fan Shim spins up to its full 4,200 RPM as soon as the
Raspberry Pi is switched on. In this mode, its cooling performance is
extremely impressive: the SoC idles at around 37 degrees Celcius in a
24.5 degrees Celcius ambient environment, and remains below 55 degrees
Celsius throughout the test. This is well below the 80 degrees Celcius
throttle point of the Raspberry Pi 4’s BCM2711B0 SoC, so no throttle
operations are recorded - the CPU runs at its full 1.5GHz throughout.
There is a cost, however: the fan pulls an additional 0.6W from the
power supply while running.

The Fan Shim has another operating mode, however: software control via
a Python-based application programming interface (API). Using this,
it’s possible to turn the fan on and off - though not to vary its
speed, other than by turning it on and off in rapid succession to
simulate a pulse-width modulation (PWM) signal - and to make use of
the tactile switch and RGB LED.

A sample program is included which sets an upper temperature limit and
a hysteresis temperature, which Pimoroni recommends be set at 65
degrees Celsius and 5 degrees Celsius respectively. When running with
these settings, the fan switches on - and the RGB LED toggles from red
to green - at 65 degrees Celsius then cools until 60 degrees Celsius
is reached before turning off and waiting for the temperature to rise

Here the Raspberry Pi idles at the same temperature as its uncooled,
stock incarnation: around 50 degrees Celsius. The fan doesn’t spin up
until the temperature hits 65 degrees Celsius, and then spends the
rest of the test toggling on and off in order to keep the Raspberry Pi
4 below its target temperature. It does so admirably: as with the
always-on mode, the SoC is kept far from its throttle point, and the
ten-minute test completes without a single throttle operation being
recorded. The same is also true when overclocked, though the fan will
kick in more quickly and more often to compensate for the additional

Combined Cooling
Most desktop and laptops computers don’t rely on only a heatsink or
only a fan; they use a combination of both, and it’s possible to do so
with the Fan Shim and heatsink too - though it is not recommended by
Pimoroni itself, which carried out its own testing and
counterintuitively found the combination cooled less effectively than
simply using the Fan Shim alone.

There’s only one way to verify that, mind you: to carry out the same
test ourselves. The Pimoroni heatsink with Fan Shim connected on top
is a combination which really necessitates the installation of pin
extensions or Pimoroni’s Booster Header to the GPIO header; without
them, there’s not enough pin for the Fan Shim to grip and it runs the
risk of falling off - potentially shorting out the GPIO pins on its
way, damaging the Raspberry Pi 4.

For this test, the Fan Shim is left in software-controlled mode with
the same temperature target of 65 degree Celcius as before. The result
is a graph looking remarkably similar to using the Fan Shim alone,
only stretched: the heatsink effectively stores up the heat generated
by the SoC, slowing down the time until the Fan Shim needs to switch
on; the downside is it also slows down the time it needs to switch off
again afterwards. In terms of actual performance, though, there’s
little difference: once again the SoC is cooled to the point where it
doesn’t need to throttle the CPU to protect itself.

The Performance Impact
Being able to prevent your Raspberry Pi 4 from throttling has a
measurable impact on performance, though how measurable will depend
entirely on how badly it’s throttling. In our test environment, which
was at a stable 24.5 degrees Celcius throughout, the throttling wasn’t
terrible: while the CPU did frequently drop to 1GHz under sustained
load, it would quickly pop back up to 1.5GHz again. In a warmer
environment the throttling would happen sooner and be sustained for
longer, meaning the cooling accessories would have a greater impact on
measured performance.

For this test, the Raspberry Pi 4 is instructed to compress an 8GB
file stored on a USB 3.0 SSD, using the multi-threaded lbzip2
compression utility, while the time it takes is measured. Compressing
such a large file on the Raspberry Pi 4 typically takes around twenty
minutes, roughly double the synthetic load from the throttle testing,
and on an uncooled Raspberry Pi triggers thermal throttling.

There’s not a huge amount between them, but the Fan Shim definitely
has an impact: the compression operation took 22 minutes and 14
seconds on an uncooled Raspberry Pi 4 but completed in 20 minutes and
four seconds with the Fan Shim attached, saving over two minutes -
just shy of a ten percent performance gain. Had the operation gone on
longer, or taken place in a hotter environment, the difference would
be greater.

For those who don’t like the idea of adding a spinning fan to their
Raspberry Pi 4, the heatsink is a realistic alternative: with just the
heatsink attached the benchmark completed in 20 minutes and 23 seconds
- a respectable eight percent boost over uncooled stock, lagging just
slightly behind the Fan Shim. Unlike the Fan Shim, though, the
heatsink is unlikely to offer the same gains in a hot environment,
where it can’t bleed off the heat it is conducting quickly enough, or
for sustained workloads in excess of twenty minutes.

The combined Fan Shim and heatsink option, meanwhile, performed within
the margin of error identically to using the Fan Shim alone - meaning
unless you want to reduce the amount of time the fan spends toggling
on and off, which you could also achieve in software by increasing the
hysteresis temperature, there’s little real-world point to combining
the two.

Bottom Line
If your Raspberry Pi 4 is used for sustained workloads, you’re going
to need some form of cooling to get the most out of it. While the
passive heatsink option is simple and cheap, it’s only a partial
solution; the Fan Shim, by contrast, solves the problem completely -
or, at least, mostly.

The caveat which prevents it from being truly “completely” solved: the
Fan Shim is only effective in a relatively open environment, or when
used with cases like Pimoroni’s own Pibow which keep it uncovered. If
installed in an enclosed case like the Official Raspberry Pi 4 Case,
the Fan Shim can only do so much and throttling under sustained
workloads may still be a problem. The solution: look for cases with
ventilation, or take a drill to the Official Case to create your own.

Certain heavy workloads and enclosed environments aside, though,
neither active nor passive cooling accessories are strictly necessary
on the Raspberry Pi 4: even when hitting its thermal throttle point
it’s still an impressively powerful upgrade from its predecessors, and
running hot is unlikely to do the boards any permanent damage - the 80
degrees Celsius throttle point being comfortably below the components’
maximum rated operating temperatures.

Join to automatically receive all group messages.