This is a thin and lightweight heat sink, equipped with a 3510 ultra-quiet cooling fan, and the fan supports PWM speed regulation, which is perfectly compatible with Raspberry Pi OS. Other systems need to manually write python or C code to drive the fan speed through PWM.
- Lightweight and silent
- Support PWM control speed regulation
- Compatible with official system configuration
- Easy to install and fix
- Good heat dissipation effect
- Product Outlook
- 1 x FAN Adapter
- 1 x Armor lite heatsink with pwm fan for Raspberry Pi 4B
- 1 x Screw driver
- 2 x M2.5x6mm Screws
- 4 x Thermal Pad
- 1 x Instructions
How to assemble
How to control fan speed
- Controlled by Raspberry Pi OS:
1. Connect the pins of the cooling fan to the Raspberry Pi or FAN Adapter. Make sure you have already connected the Red wire to 5V, the Black wire to the GND pin, and Blue Wire to PWM (can be connected to TXD（GPIO14)/GPIO 12/GPIO18).
2. Turn on Raspberry Pi and log in, open a terminal and enable Fan control as following Steps: Typing following command in terminal:
3. Navigate to
4. Navigate to
12 means using GPIO12 as PWM output Pin.
7. Change the threshold trigger temperature to 60 degrees.
8. Confirm it.
9. Navigate to
Finish and reboot Raspberry Pi as required to take effect.
How to enable it via Programming
- Make sure RPi.GPIO library has been installed.
pip freeze |grep RPi.GPIOIf feedback is:
RPi.GPIO==0.7.0means library is OK.
- Open a terminal and create a file named: pwm-fan.py
- Copy and paste following code into the file and save it.
import RPi.GPIO as GPIO import time import subprocess GPIO.setmode(GPIO.BCM) ##Set to false, other processes occupying the pin will be ignored GPIO.setwarnings(False) GPIO.setup(12, GPIO.OUT) pwm = GPIO.PWM(12,100) print("\nPress Ctrl+C to quit \n") dc = 0 pwm.start(dc) def ReadTemp(): # view CPU temperature file = open("/sys/class/thermal/thermal_zone0/temp") cpu = float(file.read()) / 1000 file.close() print('CPU temperature is: %2.2f' % cpu) time.sleep(5) try: while True: temp = subprocess.getoutput("vcgencmd measure_temp|sed 's/[^0-9.]//g'") ReadTemp() if round(float(temp)) >= 40: dc = 100 pwm.ChangeDutyCycle(dc) time.sleep(0.05) else: dc = 0 pwm.ChangeDutyCycle(dc) time.sleep(0.05) except KeyboardInterrupt: pwm.stop() GPIO.cleanup() print("Ctrl + C pressed -- Ending program")
import RPi.GPIO as GPIO import time import subprocess as sp # initializing GPIO, setting mode to BOARD. # Default pin of FAN Adapter is physical pin 32, GPIO12; Fan = 32 #if you connect to pin txd physical pin 8, GPIO14，then set to :Fan = 8 GPIO.setmode(GPIO.BOARD) GPIO.setup(Fan, GPIO.OUT) p = GPIO.PWM(Fan, 50) p.start(0) try: while True: temp = sp.getoutput("vcgencmd measure_temp|egrep -o '[0-9]*\.[0-9]*'") # print(temp) if float(temp) < 48.0: p.ChangeDutyCycle(0) elif float(temp) > 48.0 and float(temp) < 60.0: p.ChangeDutyCycle(100) time.sleep(0.1) elif float(temp) > 60.0: p.ChangeDutyCycle(100) time.sleep(0.1) except KeyboardInterrupt: pass p.stop() GPIO.cleanup()
Run Demo code
- Execute it by typing:
- The fan will be turned on when the CPU temperature is reached to 65 degrees.
- If you connect TXD (GPIO14), the corresponding number in the code needs to be changed to 14;
GPIO.setup(14, GPIO.OUT) pwm = GPIO.PWM(14,100)
if it is connected to FAN Adapter, the default is to connect D12 (GPIO12), run the code as follows:
GPIO.setup(12, GPIO.OUT) pwm = GPIO.PWM(12,100)