CAUTION: Long Read!
Some current cool/uncool realities could probably be summed up, as follows:
• The Raspberry Active Cooler features exceptional design, offering both superior cooling (when used w/o a case) and very low acoustic noise
• The official case with it’s own fan is a lot noisier than the Active Cooler and offers comparable cooling performance only with the top lid removed
• The Active Cooler does fit inside the official case, but with the lid in place cooling performance deteriorates. The official case was probably not optimized to work together with the Active Cooler
• Third party solutions in cases and coolers are readily available, at considerable extra cost
Temperatures noted by Christopher Barnatt during his tests, were probably measured under rather cool ambient conditions. While actual thermostat settings of the test site remain unknown, I am guess-timating (based on his local seasonal data) a maximum ambient air temperature of 22-24°C. To contrast these conditions, typical indoor summer conditions in Southern Europe, whenever A/C is unavailable, can easily reach 29-32°C. During the warmest hours of the day, they may even rise up to 37-38°C. Under these conditions, a Pi5 fitted with an Active Cooler inside an official case and with the top lid in place, will quickly exceed the elevated 67°C mark, even with a rather modest CPU load (e.g. some video playback).
For many not-so-privileged places around the globe, additional resources for buying expensive coolers/cases may simply be unavailable. In those circumstances, there is a genuine need for finding an affordable and efficient cooling solution.
Re-purposing the official case’s original PWM-controlled fan, can provide such a solution.
Working in synergy with the Active Cooler, fitted in exhaust mode directly on the underside of the top lid just above the Active Cooler fin array and connected to the GPIO with the use of a Python script to provide for automatic software control.
Although the MIN_TEMP / MAX_TEMP/ FAN_LOW / FAN_HIGH settings were not properly optimized, I am still able to push the CPU to 100% load, keeping temp to 57-58°C on a 29-30°C ambient with the case fan below the 38% duty cycle and the Active Cooler @ 30%.
Under these conditions, this setup is super quiet and definitely suitable for HTPC applications.
A common misconception I noticed, is that the 25kHz PWM frequency that is often quoted as being a NOCTUA spec, is actually an Intel spec. So I am presuming that most, if not all, PWM fan OEMs would tend to probably stick with this frequency in order to stay compatible with Intel's requirements.
Some obvious drawbacks are:
1. There is absolutely NO SPACE for mounting a HAT and even if it could fit, cooling performance would probably suffer severely. A side mounted fan would probably provide much better performance.
2. I absolutely hate the fact that I had to crudely hack my case with drill bit and file in order to fit the fan
This setup works fine with external USB storage. As far as using an NVMe, Pimoroni's NVMe Base can definitely be fitted on the bottom of the case, with some additional drilling.
As far as re-purposing goes, I still have the case's small CPU heatsink. Funny, it's almost the same size as an SD card, isn't it?
To sum it all up, I would like to politely ask those great guys @Raspberry to release the Official Case's STL files.
That way it could be easily modified to suit individual needs, 3D-printed, CNC'd etc. Especially the top lid!
If you add things up and you conclude this is loss of revenue, please, PLEASE do consider designing a pHAT (not fat) case. The best possible solution from the user's standpoint would be 3 individual pieces that could be sold separately in order to allow mixing-n-matching with the official case as needed: A deeper base part that would fit a Pi+baseboard, an upper part that would fit a Pi+HAT and a taller top lid with extra space to fit a fan underneath.
Even if this is deemed unprofitable by the company, you can still design the components (I would love to contribute) and release the STL's.
If Fractal could do it, I am sure Raspberry can too!
Some current cool/uncool realities could probably be summed up, as follows:
• The Raspberry Active Cooler features exceptional design, offering both superior cooling (when used w/o a case) and very low acoustic noise
• The official case with it’s own fan is a lot noisier than the Active Cooler and offers comparable cooling performance only with the top lid removed
• The Active Cooler does fit inside the official case, but with the lid in place cooling performance deteriorates. The official case was probably not optimized to work together with the Active Cooler
• Third party solutions in cases and coolers are readily available, at considerable extra cost
Temperatures noted by Christopher Barnatt during his tests, were probably measured under rather cool ambient conditions. While actual thermostat settings of the test site remain unknown, I am guess-timating (based on his local seasonal data) a maximum ambient air temperature of 22-24°C. To contrast these conditions, typical indoor summer conditions in Southern Europe, whenever A/C is unavailable, can easily reach 29-32°C. During the warmest hours of the day, they may even rise up to 37-38°C. Under these conditions, a Pi5 fitted with an Active Cooler inside an official case and with the top lid in place, will quickly exceed the elevated 67°C mark, even with a rather modest CPU load (e.g. some video playback).
For many not-so-privileged places around the globe, additional resources for buying expensive coolers/cases may simply be unavailable. In those circumstances, there is a genuine need for finding an affordable and efficient cooling solution.
Re-purposing the official case’s original PWM-controlled fan, can provide such a solution.
Working in synergy with the Active Cooler, fitted in exhaust mode directly on the underside of the top lid just above the Active Cooler fin array and connected to the GPIO with the use of a Python script to provide for automatic software control.
Code:
#! /usr/bin/env python3from gpiozero import PWMOutputDeviceimport timeimport signalimport sysimport os# ConfigurationFAN_PIN = 18# BCM pin used to drive PWM fanWAIT_TIME = 2# [s] Time to wait between each refreshPWM_FREQ = 25# [kHz] 25kHz for Noctua PWM control# Configurable temperature and fan speedMIN_TEMP = 50 # under this temp value fan is switched to the FAN_OFF speedMAX_TEMP = 74 # over this temp value fan is switched to the FAN_MAX speedFAN_LOW = 21 # lower side of the fan speed range during coolingFAN_HIGH = 70 # higher side of the fan speed range during coolingFAN_OFF = 20 # fan speed to set if the detected temp is below MIN_TEMP FAN_MAX = 100 # fan speed to set if the detected temp is above MAX_TEMPFAN_CLOSE = 35 # fan speed to set after Ctrl+C interrupt (@GK 20240904)# Get CPU's temperaturedef getCpuTemperature(): with open('/sys/class/thermal/thermal_zone0/temp') as f: return float(f.read()) / 1000def setFanSpeed(speed):pwm_fan.value = speed/100 # divide by 100 to get values from 0 to 1return()# Handle fan speeddef handleFanSpeed():temp = float(getCpuTemperature())#print("cpu temp: {}".format(temp))# Turn off the fan if temperature is below MIN_TEMPif temp < MIN_TEMP:setFanSpeed(FAN_OFF)#print("Fan OFF") # Uncomment for testing# Set fan speed to MAXIMUM if the temperature is above MAX_TEMPelif temp > MAX_TEMP:setFanSpeed(FAN_MAX)#print("Fan MAX") # Uncomment for testing# Caculate dynamic fan speedelse:step = (FAN_HIGH - FAN_LOW)/(MAX_TEMP - MIN_TEMP)temp -= MIN_TEMPsetFanSpeed(FAN_LOW + ( round(temp) * step ))#print(FAN_LOW + ( round(temp) * step )) # Uncomment for testingreturn ()try:pwm_fan = PWMOutputDevice(FAN_PIN, initial_value=0,frequency=PWM_FREQ) # initialize FAN_PIN as a pwm outputsetFanSpeed(FAN_OFF) # initially set fan speed to the FAN_OFF valuewhile True:handleFanSpeed() # call the function that calculates the target fan speedtime.sleep(WAIT_TIME) # wait for WAIT_TIME seconds before recalculateexcept KeyboardInterrupt: # trap a CTRL+C keyboard interruptsetFanSpeed(FAN_HIGH)finally: pwm_fan.close() # in case of unexpected exit, resets pin status (fan will go full speed after exiting)
Under these conditions, this setup is super quiet and definitely suitable for HTPC applications.
A common misconception I noticed, is that the 25kHz PWM frequency that is often quoted as being a NOCTUA spec, is actually an Intel spec. So I am presuming that most, if not all, PWM fan OEMs would tend to probably stick with this frequency in order to stay compatible with Intel's requirements.
Some obvious drawbacks are:
1. There is absolutely NO SPACE for mounting a HAT and even if it could fit, cooling performance would probably suffer severely. A side mounted fan would probably provide much better performance.
2. I absolutely hate the fact that I had to crudely hack my case with drill bit and file in order to fit the fan
This setup works fine with external USB storage. As far as using an NVMe, Pimoroni's NVMe Base can definitely be fitted on the bottom of the case, with some additional drilling.
As far as re-purposing goes, I still have the case's small CPU heatsink. Funny, it's almost the same size as an SD card, isn't it?
To sum it all up, I would like to politely ask those great guys @Raspberry to release the Official Case's STL files.
That way it could be easily modified to suit individual needs, 3D-printed, CNC'd etc. Especially the top lid!
If you add things up and you conclude this is loss of revenue, please, PLEASE do consider designing a pHAT (not fat) case. The best possible solution from the user's standpoint would be 3 individual pieces that could be sold separately in order to allow mixing-n-matching with the official case as needed: A deeper base part that would fit a Pi+baseboard, an upper part that would fit a Pi+HAT and a taller top lid with extra space to fit a fan underneath.
Even if this is deemed unprofitable by the company, you can still design the components (I would love to contribute) and release the STL's.
If Fractal could do it, I am sure Raspberry can too!
Statistics: Posted by koge — Wed Sep 25, 2024 11:52 pm