The minimum viable fan control script
ounapuu.ee
ounapuu.ee
> temp=$(cat /sys/class/thermal/thermal_zone1/temp)
temp=$(</sys/class/thermal/thermal_zone1/temp)
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.
All other solutions are just meaningless.
So he used a 555 chip to turn the setup into pulse-width modulation, with the variable resistor (pot) adjusting the pulse width.
Worked like a charm.
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.
I have the fan on my 1030 on a PWM thingy and make it spin faster when I game to keep it under 60 celcius for longevity...
When gaming there usually is noise in my ears through the headphones.
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).
(lips moving, no sound audible)
> What?
I SAID, I'D LIKE TO INTRODUCE YOU TO MY NEW THINKPAD!
Case is a small form factor case: https://hdplex.com/hdplex-h1-v3-fanless-computer-case.html
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.
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/)
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.
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?
Yes.
http://mywiki.wooledge.org/ArithmeticExpression#Arithmetic_C...
That's likely the same reason for the `card*` workaround mentioned above.
I am using thinkfan for this and it works really well: https://github.com/vmatare/thinkfan