I was expecting a basic thermostat with hysteresis, but no, it's a stepwise proportional control. Your fan could very well wind up oscillating at one of the step transition points which is probably not great for the fan.
I have spent countless hours trying to get hardware to be silent.
The only way to do this reliably and without fire hazard is to passively cool the hardware completely by having HUGE heatsinks and THEN you can add a fan that you slow down with a resistor.
The fan is only there to prolong the life span, the hardware should be able to run passivley at 100% and you should be able to hold your finger on the heatsink forever. If not you have a problem.
How silent are you talking? Silent under load is hard, but quiet under load and silent on idle is possible without a passively cooled build. A good cooler for the processor + slow running case fans + a silent psu (like BitFenix Formula, Corsair RM, ...) + a noise isolating case against coil whine would be the foundation for that. I use an old Corsair H90 to cool my i5-5675C, AIO radiator is installed in the front of the case, there is one good case fan at the back. Note that the H90 is only quiet when pump speed gets also reduced. With that setup, the noise under load is completely defined by the gpu (a soon to be exchanged RX 570) and the noise of the system on idle vanishes in the ambient noise.
However, the setup I describe above was loud until I got around to control the fan speeds properly. Turned out the MSI BIOS fanspeed control did not work properly. On top of high minimal speed settings (like 50% for the case fan) it ignored my cpu fan settings and ran the fans higher than I wanted. That made the system rather loud even on idle and unbearable under load. The solution was to control fanspeed with fan2go: https://github.com/markusressel/fan2go (plus radeon-profile controls the speed of the gpu, making it silent on idle as well.)
Fan2go is not only nice to use, it also solves the issue the article's author will run into in the future: Those hwmon paths are not stable anymore. It's possible they will work on his hardware if there is only one (or none, as in the thinkpad example using a different system), but otherwise the script will stop working with new kernels after reboots.
My son built a small project where he tried to control the speed of a computer case fan with a (variable) resistor, shunting a % of the power to ground. Didn't work very well. The fan either ran full speed or not at all.
So he used a 555 chip to turn the setup into pulse-width modulation, with the variable resistor (pot) adjusting the pulse width.
Today's hardware can scale performance and power consumption by orders of magnitude, I find that solutions that allow quiet day-to-day operation and loud power when needed are meaningful.
>The only way to do this reliably and without fire hazard is to passively cool the hardware completely by having HUGE heatsinks and THEN you can add a fan that you slow down with a resistor.
Sized appropriately, you can do it 100% passive and still maintain lifespan. You'd only need a fan if your ambient temps exceeded design specs.
There are a lot of things you can do to optimize your thermal design / minimize sink size:
- Choose a better sink material (like copper)
- Sink fin design (# of fins and spacing) should be designed for natural convection
- Maintain proper device/sink orientation (standard fins should be perpendicular with the ground, pin fin style sinks can be vertical or horizontal)
- If you've got a huge heat sink, you can employ vapor chambers or heat pipes to serve as heat spreaders to improve utilization of the sink / reduce spreading resistance.
- Use the best thermal interface material you can afford
- Apply the most allowable contact pressure between your components and your sink to reduce thermal contact resistance
Shameless plug... our company sells fanless servers for industrial applications (https://lanternedge.com/)
An M1 Mac Mini is silent even at considerable load, out of the box; the fan policy can be tweaked with a free app (MacsFanControl); also I've never seen it eat more than 30ish watts (even when playing games). It's definitely not a budget solution (I mean the price is fair for the performance, unless you don't need $700's worth of horsepower), and macOS could do much better as a server solution, but it's definitely worth considering.
Mine is both a desktop/workstation, and actually doing various "server" duties like running Prometheus+Grafana, SSH jumpbox, etc. Bonus? You can actually SSH in while it's sleeping - it will wake up the system, but not the screen(s).
You actually paste heat pipes from the CPU to the case itself, using the large fins on the case as a massive heat sink.
Inside I have an Intel Core i7 10700 and 2 Samsung 970 Evo Plus 2TB SSDs. Works fantastically as a media server, under near constant hardware transcoding load.
I've some a similar thing with my NAS on a Supermicro X10 (I think) on Linux. I have had all kinds of trouble getting quiet fans on this board under Linux. I think it's a mix of BIOS fan control and other things that I ended up sinking days into trying to solve. Right now my solution is flaky at best, but eventually the fans spin down after a reboot.
Supermicro could be so good for "prosumers" but I feel like they are bogged down by historic garbage. I had to pay (crack) something in the BIOS just to use a feature.
On some server motherboards, fan control is done by the BMC. We license BMC firmware from AMI for our servers. The fan control algos that come included are very basic (similar to the proportional response the auth wrote).
Me too! And it does not only keep HDDs cool but even more importantly it keeps them at a constant temperature. At this point the script should be shipped with TrueNAS directly.
What is this syntax? I would have assume something like `[ $temp -gt 90000 ]` or `$((temp > 90000))`. Is the dollar here optional? Is this something bash specific?