Hacker News new | past | comments | ask | show | jobs | submit login
The minimum viable fan control script (ounapuu.ee)
51 points by hddherman on Sept 27, 2022 | hide | past | favorite | 30 comments



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.


Your sanity will suffer more than the fan.


Well, there's that, but the audience is people who will write their own fan control script...


If this is a realistic failure mode, one would hope that there is some kind of rate-limiting at the firmware or driver level.


One would hope.


There 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)


A classic example of cat abuse in my book.


Definitely an unwarranted cat call.


meow


IMO the cat version is more readable, and any performance difference should be negligible


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.

All other solutions are just meaningless.

http://streacom.com


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.


Inaudible for Linus Thorwalds levels of focus.


Works for me, so... ;)


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.

Worked like a charm.


4-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.


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.


Well, yes until KWh goes ballistic for eternity.

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.


>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).


> An M1 Mac Mini is silent even at considerable load

(lips moving, no sound audible)

> What?

I SAID, I'D LIKE TO INTRODUCE YOU TO MY NEW THINKPAD!


I run a media server with 100% passive cooling.

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.


As 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-control...


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.


> 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?



The 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


Literally the day after I spend hours figuring out thinkfan and tinkering with fan levels to get something I can live with. What timing.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: