Jump to content

FanControl, my take on a SpeedFan replacement

Hey guys!

 

Currently working on integrating a new Nvidia driver to take advantage of the new fan API.

It should allow cards that supports it to control individual fans or cluster of fans on the card.

 

Support for older type cards ( like my GTX 1060 ) won't change and will work as usual.

 

Anyone with an RTX card with such features willing to do some tests for me, please send a DM.

If your current Nvidia GPU isn't working with fan control, I would also like to hear from you.

 

https://github.com/Rem0o/FanControl.Releases/releases/tag/V39-beta.2

Link to comment
Share on other sites

Link to post
Share on other sites

Update 39

 

- Changed backend to NvAPIWrapper

 

Please note that this will break any part of your config that uses a Nvidia GPU. It will not mess with the rest of your config. Simply reselect the temp sensors and enable the new GPU control card.

Link to comment
Share on other sites

Link to post
Share on other sites

Hi @Rem0o, thanks for this great piece of software! It's almost doing everything I'd want it to do, but I've got a couple of Quality-of-Life feature requests.

 

1. Startup-speed for fans. The use case is the following:

I've got a fan that can run at 37% at minimum (which is want I want it to do), but it requires 50% to actually start. So the feature I wish for, is to have it run at 50% for a couple of seconds as it starts, and when it is started, it'll go back down to 37%. Of course I can work around this by setting the fans to 50% in BIOS, but I feel like it might be cool to have built-in.

 

2. Incorporate keyboard shortcuts to switch between configurations, so the user can switch between configurations on the fly.

 

3. Being able to hide specific Fan Speed cards might be cool. Right now we can hide all of them, but not specific ones.

 

4. I don't know if this is a bug, but checking "Disable storage sensors" doesn't actually seem to do anything? Even after restarting, I can still see all the temperatures of my storage in FanControl. This could be motherboard specific, too, I guess, so just for the record, I've got a B450M Mortar Max.

 

5. On startup, FanControl should probably check whether it's already running, as right now it looks like I can have several instances of it running, which can probably lead to some confusion.

 

Great work so far! I really appreciate it!

Link to comment
Share on other sites

Link to post
Share on other sites

11 minutes ago, Literal Garbage said:

1. Startup-speed for fans. The use case is the following:

I've got a fan that can run at 37% at minimum (which is want I want it to do), but it requires 50% to actually start. So the feature I wish for, is to have it run at 50% for a couple of seconds as it starts, and when it is started, it'll go back down to 37%. Of course I can work around this by setting the fans to 50% in BIOS, but I feel like it might be cool to have built-in.

Might be tricky to code to make it work for all kind of situations. The last thing I want is to run a non-zero command to a non-spinning fan, which I guess will heat the coil. Interesting idea though.

11 minutes ago, Literal Garbage said:

2. Incorporate keyboard shortcuts to switch between configurations, so the user can switch between configurations on the fly.

Is that really necessary with the available right-click on the tray icon already?

 

11 minutes ago, Literal Garbage said:

3. Being able to hide specific Fan Speed cards might be cool. Right now we can hide all of them, but not specific ones.

You are right, makes sense to work like the control cards.

11 minutes ago, Literal Garbage said:

4. I don't know if this is a bug, but checking "Disable storage sensors" doesn't actually seem to do anything? Even after restarting, I can still see all the temperatures of my storage in FanControl

It disable the updates, but it will detect them in the startup routine still. So the sensors should stay at the same temp.

11 minutes ago, Literal Garbage said:

 

5. On startup, FanControl should probably check whether it's already running, as right now it looks like I can have several instances of it running, which can probably lead to some confusion.

 

Good call. Never bothered but it ain't complicated to add.

Link to comment
Share on other sites

Link to post
Share on other sites

2 minutes ago, Rem0o said:

Might be tricky to code to make it work for all kind of situations. The last thing I want is to run a non-zero command to a non-spinning fan, which I guess will heat the coil. Interesting idea though.

Yeah, it's not exactly important, as the BIOS workaround works alright. I just got the idea from ArgusMonitor, which makes it work somehow. I'm not sure I get the non-zero command to non-spinning fan, though. If a fan isn't spinning initially, and the user wants it to spin, Fan Control is going to have to send a non-zero command to it either way, isn't it? Or am I misunderstanding?

 

3 minutes ago, Rem0o said:

Is that really necessary with the available right-click on the tray icon already?

Not necessary per se, as the tray icon certainly does the job, but if I'm in a game or another full screen application, pressing a keyboard shortcut is more convenient.

 

 

4 minutes ago, Rem0o said:

Is that really necessary with the available right-click on the tray icon already?

So it seems; my storage temps are stuck, with storage sensors being disabled, as you say. I'd just expect them to disappear from temp sources, if they are disabled.

Link to comment
Share on other sites

Link to post
Share on other sites

38 minutes ago, Literal Garbage said:

Yeah, it's not exactly important, as the BIOS workaround works alright. I just got the idea from ArgusMonitor, which makes it work somehow. I'm not sure I get the non-zero command to non-spinning fan, though. If a fan isn't spinning initially, and the user wants it to spin, Fan Control is going to have to send a non-zero command to it either way, isn't it? Or am I misunderstanding?

If you send a voltage to a fan (like 20%) and it isn't spinning/starting up, might not be good for the fan.

38 minutes ago, Literal Garbage said:

So it seems; my storage temps are stuck, with storage sensors being disabled, as you say. I'd just expect them to disappear from temp sources, if they are disabled.

That's kind of a design flaw, I have to init the computer before reading the config, hence why the sensors are there. Didn't really polish this feature yet.

Link to comment
Share on other sites

Link to post
Share on other sites

17 hours ago, Rem0o said:

If you send a voltage to a fan (like 20%) and it isn't spinning/starting up, might not be good for the fan.

 

Yeah, I get that, but that's already possible as it is now. In fact, that feature may even prevent it, as it won't send a 20% signal to a fan at 0 RPM, but rather predefined percentage that's sure to start the fan.

Link to comment
Share on other sites

Link to post
Share on other sites

Hello,

 

I've discovered FanControl a weak ago (it was mentioned on reddit) and as I find the look & feel excellent I gave it a try. Sadly version 41 only showed my old GPU (Radeon HD7870). So I tried with LibreHardwareMonitor and it also didn't show my fans.

 

I've got a MSI B550 Carbon WIFI motherboard. It's IO Superchip seems to be NUVOTON NCT6687D (it's manual calls it NCT6687-R).

 

HWInfo64 shows my fans. So I continued my search for a fan control software and found fanCTRL. It also uses 
LibreHardwareMonitorLib.dll and guess what, it shows my fans! FanCTRL is open source and interestingly there has been a commit tagged 'Fixed pwm bug (NCT6687D)' 11 days ago. 

 

Seems that there is a pull request about that topic for LibreHardwareMonitor, too: https://github.com/LibreHardwareMonitor/LibreHardwareMonitor/pull/288

 

So I simply replaced the LibreHardwareMonitorLib.dll of FanControl with the one from fanCTRL and suddenly my fans are detected in FanControl :) Really loving it.

 

One downside: HWInfo64 "misbehaves" when used while FanControl is running. After some time I get very wierd temperature displays (113° for MOS or -65° for CPU). I hope these are only "cosmetic effects" - or are FanControl / LibreHardwareMonitorLib.dll able to create any physical damage?
--------------

Thanks anyways for implementing FanControl, I am really enjoying it and your development efforts.

--------------
One suggestion: If FanControl starts and cannot find any Fans for CPU and/or GPU, an error message would be awesome. Something like this:
"CPU/System Fans are not detected. This is not a fault of FanControl. FanControl uses LibreHardwareMonitor/OpenHardwareMonitor and it seems your motherboard is not supported."

-> links to their github repository.

Link to comment
Share on other sites

Link to post
Share on other sites

5 hours ago, Nefcairon said:

So I simply replaced the LibreHardwareMonitorLib.dll of FanControl with the one from fanCTRL and suddenly my fans are detected in FanControl :) Really loving it.

That's the beauty of using an unedited version of an open source library as a backend driver. You can swap the DLL, fan control is just a front-end on top of it!

Link to comment
Share on other sites

Link to post
Share on other sites

On 8/14/2020 at 10:18 AM, Rem0o said:

That's the beauty of using an unedited version of an open source library as a backend driver. You can swap the DLL, fan control is just a front-end on top of it!

would be nice if you updated the download link before u pushed the update notification since this program tends to forget and overwrites my settings

Link to comment
Share on other sites

Link to post
Share on other sites

On 8/14/2020 at 10:16 AM, Nefcairon said:

I've got a MSI B550 Carbon WIFI motherboard. It's IO Superchip seems to be NUVOTON NCT6687D (it's manual calls it NCT6687-R).

 

HWInfo64 shows my fans. So I continued my search for a fan control software and found fanCTRL. It also uses 
LibreHardwareMonitorLib.dll and guess what, it shows my fans! FanCTRL is open source and interestingly there has been a commit tagged 'Fixed pwm bug (NCT6687D)' 11 days ago. 

 

Seems that there is a pull request about that topic for LibreHardwareMonitor, too: https://github.com/LibreHardwareMonitor/LibreHardwareMonitor/pull/288

 

So I simply replaced the LibreHardwareMonitorLib.dll of FanControl with the one from fanCTRL and suddenly my fans are detected in FanControl :) Really loving it.

 

Amazing, thank you so much! Getting https://github.com/lich426/FanCtrl/blob/master/dll/LibreHardwareMonitorLib.dll

and replacing the one in FanControl means that my fans are now detected on my MSI Z490 board which also uses a NUVOTON NCT6687D.

Link to comment
Share on other sites

Link to post
Share on other sites

4 hours ago, clutchmaster said:

would be nice if you updated the download link before u pushed the update notification since this program tends to forget and overwrites my settings

I'm curious how that would happen? Did you save your config on a different name or kept the default one?

Link to comment
Share on other sites

Link to post
Share on other sites

FanControl no longer sees the temperature sensor of one of my internal hard drives (E:).  The sensor is no longer available in the drop-down list of temperature sources, it now displays as 0 celsius in the curve that uses that sensor as source, and the yellow dot in the curve is missing.  This failure caused the hard drive to overheat (42C) for an unknown number of hours, because FanControl spun that drive's cooling fan (the case's Front Upper fan) too slowly (0%).

 

Exiting and relaunching FanControl didn't cause it to resume seeing the hard drive sensor.  It's version 38, which ran okay for weeks.  CrystalDiskInfo and HWiNFO have no problem displaying the sensor temperature.  I also downloaded and tested the latest version of LibreHardwareMonitor -- the standalone monitoring exe, not the library -- and it displays the sensor too.  What went wrong with FanControl?

 

The screencapture below shows the relevant portion of the FanControl window and CrystalDiskInfo.  In particular, see the "E: hard drive" curve at the bottom of the screencapture, which shows a temperature of 0C and is missing the yellow dot.

 

To mitigate the failure, I've changed the Front Upper fan to use a flat curve. (Not shown in the screencapture.)

 

It would be a good idea to enhance FanControl to detect such failures, so it can have a smart response that doesn't allow components to needlessly overheat

86824519_Suddenfailuretoreadsensorofinternaldrive(screencapture16colors).png.028268503963d332a120623b0167e7f4.png

Link to comment
Share on other sites

Link to post
Share on other sites

7 hours ago, Adrenalina said:

FanControl no longer sees the temperature sensor of one of my internal hard drives

Any logs? Did you disable the storage sensors in the hamburger menu? The sensor is read straight out of LibreHardwareMonitor without any filter or processing, so if LibreHardwareMonitor reads it properly and FanControl doesn't, it doesn't make any sense since it's the same exact thing.

Link to comment
Share on other sites

Link to post
Share on other sites

9 hours ago, Rem0o said:

Any logs? Did you disable the storage sensors in the hamburger menu? The sensor is read straight out of LibreHardwareMonitor without any filter or processing, so if LibreHardwareMonitor reads it properly and FanControl doesn't, it doesn't make any sense since it's the same exact thing.

The FanControl log shows no relevant events.  Storage sensors aren't disabled, and FanControl was still reading the sensors of the other two internal drives.

 

Restarting Windows caused FanControl to start seeing the drive E: sensor again, but how long until it fails again and allows overheating?  I recommend FanControl be enhanced so it will treat a 0C sensor reading and a sensor reading that doesn't correspond to a point on the curve as errors and not spin down the fan.  In addition to keeping the fan spinning -- could it do so by allowing the BIOS to regain control of that fan? -- perhaps FanControl could re-initialize itself and re-scan for the sensor.

Edited by Adrenalina
Added suggestion about letting the BIOS regain control of the fan
Link to comment
Share on other sites

Link to post
Share on other sites

On 8/14/2020 at 5:16 AM, Nefcairon said:

One downside: HWInfo64 "misbehaves" when used while FanControl is running. After some time I get very wierd temperature displays (113° for MOS or -65° for CPU).

I assume you mean HWiNFO displayed weird temperature values while FanControl displayed reasonable temperature values.

 

How much time do you mean by "some" time?  I've run FanControl & HWiNFO64 & CrystalDiskInfo simultaneously for weeks at a time, and HWiNFO & CrystalDiskInfo have been rock-solid. (I've been using HWiNFO version v6.29-4210.)  I suggest you tell the developer of HWiNFO about the weird behavior, in case he needs to debug/improve its support for your motherboard's chipset.

 

By the way, the spelling of 'weird' is one of many exceptions to the rule of thumb "i before e except after c."  The English language is a mongrel.

Link to comment
Share on other sites

Link to post
Share on other sites

4 hours ago, Adrenalina said:

I assume you mean HWiNFO displayed weird temperature values while FanControl displayed reasonable temperature values.

 

How much time do you mean by "some" time?   

 

A few seconds to a few minutes. HWInfo then never recovers from that until I reboot. Before FanControl I used HWInfo for weeks without any of these issues. 

Link to comment
Share on other sites

Link to post
Share on other sites

On 8/17/2020 at 2:58 AM, Adrenalina said:

 I recommend FanControl be enhanced so it will treat a 0C sensor reading and a sensor reading that doesn't correspond to a point on the curve as errors and not spin down the fan.  In addition to keeping the fan spinning -- could it do so by allowing the BIOS to regain control of that fan? -- perhaps FanControl could re-initialize itself and re-scan for the sensor.

I quite like the idea of a failsafe trigger for the linear and graph fan curves. I have no idea though how/why your sensor got a 0 deg reading. I would either then max the curve to its highest configured point or like a certain percentage of it, like 75%.

Link to comment
Share on other sites

Link to post
Share on other sites

1 hour ago, Rem0o said:

I quite like the idea of a failsafe trigger for the linear and graph fan curves. I have no idea though how/why your sensor got a 0 deg reading. I would either then max the curve to its highest configured point or like a certain percentage of it, like 75%.

Another plausible error/failsafe speed would be to remember the max speed that the fan had reached during the session or during recent sessions.

 

When FanControl detects an error, could it also notify the user (using a Windows Action Center balloon notification) or launch a user-specified program?

Link to comment
Share on other sites

Link to post
Share on other sites

On 8/16/2020 at 3:06 PM, Adrenalina said:

FanControl no longer sees the temperature sensor of one of my internal hard drives (E:).  The sensor is no longer available in the drop-down list of temperature sources, it now displays as 0 celsius in the curve that uses that sensor as source, and the yellow dot in the curve is missing.  This failure caused the hard drive to overheat (42C) for an unknown number of hours, because FanControl spun that drive's cooling fan (the case's Front Upper fan) too slowly (0%).

 

42 C is overheating a HD? Huh?

Link to comment
Share on other sites

Link to post
Share on other sites

2 hours ago, fray_bentos said:

42 C is overheating a HD? Huh?

Yes.  I think it was Google that published a study of the thousands of hard drives in their server farms.  They kept track of failures and drive temperatures.  There could be more recent studies but I haven't searched for them.

Link to comment
Share on other sites

Link to post
Share on other sites

Update 45

image.png.03714fd9465768c9d1ca207ab1898f82.png

 

  • Target Fan Curve: Holds the load fan speed until idle temperature is reached and vice-versa
  • 0 deg (empty/null) temperature readout will max fan curves

Enjoy

Link to comment
Share on other sites

Link to post
Share on other sites

9 hours ago, Adrenalina said:

Yes.  I think it was Google that published a study of the thousands of hard drives in their server farms.  They kept track of failures and drive temperatures.  There could be more recent studies but I haven't searched for them.

You probably mean http://labs.google.com/papers/disk_failures.pdf 

A more recent study is discussed here: https://www.zdnet.com/article/heat-doesnt-kill-hard-drives-heres-what-does/

Also worth reading: https://en.wikibooks.org/wiki/Minimizing_Hard_Disk_Drive_Failure_and_Data_Loss/Environmental_Control

 

Common knowledge is that 35-45° is the optimum temperature for hdds.

Link to comment
Share on other sites

Link to post
Share on other sites

7 hours ago, Nefcairon said:

Common knowledge is that 35-45° is the optimum temperature for hdds.

Thanks for the three links.

 

The "recent" (2016) study you cited, which claims relative humidity is more significant than temperature, seems unhelpful since their temperature data is the temperatures of data centers, not the temperatures of drives.

 

What's the basis for your claim that it's "common knowledge" that 35C-45C is optimal?  That's not how I interpret the Google data shown at your first and third links, nor the Microsoft data provided in a 2010 study (described below).  The data show no sharp change of failure rate at 35C or at 45C.  More to the point, the failure rate can be seen to be increasing at temperatures below 45C: the failure rate at 41C is higher than the failure rate at 40C, etc.  The minimum failure rate is at about 38C in the Google data.  See the first of my attached images, "Google figure 4":

 

627337038_GoogleFigure4-DistributionofFailureRatesandAverageDriveTemperatures(screencaptureblackwhite).png.6f7c142fd27fed374874bf63a540cc3e.png

 

The acronym AFR means Annualized Failure Rate.

 

The next image ("Google figure 5") shows the failure rate in the [40C..45C) range is higher than in the [35C..40C) range:

1116868425_GoogleFigure5-AverageFailureRateversusAverageDriveTemperature(screencapture16shadesofgrey).png.2082eb00045f9262d30e160b1103cd0c.png

 

Your third link cites a 2010 study ( http://www.cs.virginia.edu/~gurumurthi/papers/acmtos13.pdf ) that used data from Microsoft data centers.  That study found that failure rate increases with hard drive temperature, including at temperatures below 45C.  The following image is from that paper:

1267560017_MicrosoftFigure5-FailureRatesversusDriveTemperatures(screencapture16colors).png.2a3f6e0b13843c6557969fb460f3dd0d.png

 

It should also be noted that drive temperature change has been found to be an important failure factor.

Link to comment
Share on other sites

Link to post
Share on other sites

The small difference of 40° to 41° is negable. The graph shows a difference of roundabout 0,1% in AFR. It is not about the fact that your hard drive once is over 40°, it is about your hard drive is *always* or at average at this temperature.  


My third link says "optimum temperature range of 37 °C to 46 °C". I have not found any comment whatsoever on the web so far that anything below 45° is a problem.

 

But of course, FanControl should be safe to use. Whenever it fails, it should revert to bios settings.

 

Rem0o: FanControl seems to not shutdown correctly. The system tray icon stays until my mouse points over it... Then it vanishes.

 

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


×