6 ms·
The minimum viable fan control script
- _wolfie_ 4y ago> if ((temp > 90000)); then 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?
- scbrg 4y ago> Is this something bash specific? Yes. http://mywiki.wooledge.org/ArithmeticExpression#Arithmetic_Commands http://mywiki.wooledge.org/ArithmeticExpression#Arithmetic_C...
- buescher 4y agoI 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.
- zbrozek 4y agoYour sanity will suffer more than the fan.
- buescher 4y agoWell, there's that, but the audience is people who will write their own fan control script...
- 10000truths 4y agoIf this is a realistic failure mode, one would hope that there is some kind of rate-limiting at the firmware or driver level.
- buescher 4y agoOne would hope.
- mortenlarsen 4y agoThere is no need to call cat to read from a file. > temp=$(cat /sys/class/thermal/thermal_zone1/temp) temp=$(</sys/class/thermal/thermal_zone1/temp)
- 0xCAP 4y agoA classic example of cat abuse in my book.
- deeblering4 4y agomeow
- elsyx 4y agoDefinitely an unwarranted cat call.
- piperswe 4y agoIMO the cat version is more readable, and any performance difference should be negligible
- XiS 4y agoAs an alternative, been using this PID fan control script to keep my HDDs cool for ages. https://forums.freenas.org/index.php?threads/pid-fan-controller-perl-script.50908/ https://forums.freenas.org/index.php?threads/pid-fan-control...
- francis-io 4y agoI'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.
- c_o_n_v_e_x 4y agoOn 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).
- nicolaslem 4y agoMe 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.
- stefantalpalaru 4y ago
- bullen 4y agoI 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. All other solutions are just meaningless. http://streacom.com http://streacom.com
- mellavora 4y agoMy 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. Worked like a charm.
- gigaflop 4y ago4-wire PC fans are usually PWM controlled. That might be why the first attempt didn't go well, if he didn't try multiple fans.
- onli 4y agoHow 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 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.
- suprjami 4y agoLiterally the day after I spend hours figuring out thinkfan and tinkering with fan levels to get something I can live with. What timing.
- suprjami 4y agoThe second solution on this page probably isn't reliable, because hwmon paths like `hwmon3` depend on module load order. 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 https://github.com/vmatare/thinkfan