Jump to content

FanControl, my take on a SpeedFan replacement

@Rem0o bug report with hwinfo plugin on startup: hwinfo sensors seem to throw an error on startup every time repeatably. (program start delay feature does not fix it)

 

no matter how long I set the delay to start up the program, it seems like fancontrol launches, runs the fans perfectly fine for a full 5 ot so minutes, and then only after some time has passed the fans randomly ramp up to 100%. When I open fancontrol to check, I see this error message:

 

image.png.2615309bccf3ce4fb29d9e12f5020fd7.png

 

hitting refresh just once instantly makes the error go away every time. this can happen 1-3 minutes after startup, or 5-10 minutes after startup depending on how long I set the program start delay. it does not seem to matter how long I set the start delay, it just always fails the first time no matter what. the weird part is how fancontrol launches and seemingly works perfectly fine for minutes before the fans decide they need to ramp up.

 

here is my config:

a20211125_gpuMEMjunction.json

 

I tried testing closing both fancontrol and hwinfo and then launching them again - hwinfo, then fancontrol - the error happens again, only this time the fans don't ramp up to 100%, it just silently doesn't work and the error is visible again when opening FanControl.

 

 

perhaps hwinfo only initialises the sensors upon request or something and it takes a short while before they become available, causing the error? anyway, you would definitely know more than me. thanks again for your continued work on this program

Link to comment
Share on other sites

Link to post
Share on other sites

Tried this as a replacement to SpeedFan as it couldn't detect the Asus Prime-A Z690 board properly. All fans (cpu + 4 chassi fan) all picked up correctly! UI is incredibly clean and intuitive to use too! Thank you so much for making this!

 

I do have one question, is there a way to control 1 fan with 2 graphs, and have the higher fan speed of the two be the final chosen fan speed? I'd like to control my chassi fans by both CPU and GPU temperature. Currently I'm using the mix sensor feature to use the max temp of the two. But I'd like a separate curve for the two temps. For instance I'd like CPU at 80c to put fans at 80%, while GPU at 80c puts fans at 50%. Currently by mixing the sensor, GPU at 80c would also put fans at 80%.

Link to comment
Share on other sites

Link to post
Share on other sites

Had a bit of a nightmare time trying to get reliable fan control on a new Gigabyte Z690 system (Gigabyte bios control is just completely inadequate to get a quiet system). Tried Argus Monitor first which worked well except on occasion, on closing (i.e when rebooting) the fans would all spin up to 100% until the system had rebooted and the app regained control. I then gave FanControl a whirl, which looked like it might be the answer as I was seemingly no longer getting the 100% problem on closing. Seemingly though FanControl just cannot maintain control of the fans without the bios control kicking in. Everything looked fine but you could tell the RPM of some fans didn't correspond to the percentage FanControl was aiming for e.g fan would show 40% PWM but RPM was much higher. It was obvious the bios was back in control. Sometimes the fan start/stop check would also fail as the fan didn't respond in time. I feel like this improved somewhat by moving all my fans to the headers for the ITE IT8689E (SYS_FAN1,2,3) and NOT the IT8695E.

Link to comment
Share on other sites

Link to post
Share on other sites

5 hours ago, crystal6tak said:

I do have one question, is there a way to control 1 fan with 2 graphs, and have the higher fan speed of the two be the final chosen fan speed? I'd like to control my chassi fans by both CPU and GPU temperature. Currently I'm using the mix sensor feature to use the max temp of the two. But I'd like a separate curve for the two temps. For instance I'd like CPU at 80c to put fans at 80%, while GPU at 80c puts fans at 50%. Currently by mixing the sensor, GPU at 80c would also put fans at 80%.

Look for the mix fan curve, it's exactly that.

Link to comment
Share on other sites

Link to post
Share on other sites

On 11/26/2021 at 12:52 PM, DeSinc said:

@Rem0o bug report with hwinfo plugin on startup: hwinfo sensors seem to throw an error on startup every time repeatably. (program start delay feature does not fix it)

 

no matter how long I set the delay to start up the program, it seems like fancontrol launches, runs the fans perfectly fine for a full 5 ot so minutes, and then only after some time has passed the fans randomly ramp up to 100%. When I open fancontrol to check, I see this error message:

 

image.png.2615309bccf3ce4fb29d9e12f5020fd7.png

 

hitting refresh just once instantly makes the error go away every time. this can happen 1-3 minutes after startup, or 5-10 minutes after startup depending on how long I set the program start delay. it does not seem to matter how long I set the start delay, it just always fails the first time no matter what. the weird part is how fancontrol launches and seemingly works perfectly fine for minutes before the fans decide they need to ramp up.

 

here is my config:

a20211125_gpuMEMjunction.json 50.94 kB · 0 downloads

 

I tried testing closing both fancontrol and hwinfo and then launching them again - hwinfo, then fancontrol - the error happens again, only this time the fans don't ramp up to 100%, it just silently doesn't work and the error is visible again when opening FanControl.

 

 

perhaps hwinfo only initialises the sensors upon request or something and it takes a short while before they become available, causing the error? anyway, you would definitely know more than me. thanks again for your continued work on this program

update on this, the 100% fan bug just happened after the PC being on for like 25 straight minutes. figure that one out!! I had forgotten this bug entirely and was just watching a video merrily when it reminded me of its existence after so long. very odd. still going to use the hwinfo plugin because I like having the gpu memory junction temp sensor available to me and double click opening FanControl to view the error and click 'Refresh' to fix it is easy enough. (unless there's another sensor plugin that also covers gpu mem junction that doesn't have this bug? hmm)

Link to comment
Share on other sites

Link to post
Share on other sites

19 minutes ago, DeSinc said:

update on this, the 100% fan bug just happened after the PC being on for like 25 straight minutes. figure that one out!! I had forgotten this bug entirely and was just watching a video merrily when it reminded me of its existence after so long. very odd. still going to use the hwinfo plugin because I like having the gpu memory junction temp sensor available to me and double click opening FanControl to view the error and click 'Refresh' to fix it is easy enough. (unless there's another sensor plugin that also covers gpu mem junction that doesn't have this bug? hmm)

LHM now has mem junction/hotspot built-in, check it out in the settings menu, just untick the NVApiWrapper and make sure LHM GPU checkbox is on.

Link to comment
Share on other sites

Link to post
Share on other sites

28 minutes ago, Rem0o said:

LHM now has mem junction/hotspot built-in, check it out in the settings menu, just untick the NVApiWrapper and make sure LHM GPU checkbox is on.

I just had a check and I can't see it. GPU is ticked and the NVApiWrapper is unticked, but it's still not showing the memory junction temp.

 

(edited for brevity)

Link to comment
Share on other sites

Link to post
Share on other sites

2 hours ago, DeSinc said:

I just had a check and I can't see it. GPU is ticked and the NVApiWrapper is unticked, but it's still not showing the memory junction temp.

 

(edited for brevity)

Weird.

Looked at the PR here, https://github.com/LibreHardwareMonitor/LibreHardwareMonitor/pull/583/files, and the implementation is sketchy at best, seems to be copied over some other guys project, but there is no direct reference to any documentation on to why/how it works, as Nvidia NVApi docs is not up to date. It reads the 10th element of an array returned by a function that is being called with a seemingly random bit mask. It doesn't seem right.

Some more investigation was done here, but no clear success. It kinda confirms though that this is undocumented territory, and people are just trying and experimenting in the dark.
https://github.com/falahati/NvAPIWrapper/issues/45

It seems like not all cards have the same amount of sensors, and it seems like the memory-junction sensor is only on high-end cards with GDDR6X memory, like the RTX 3090.

For eg, the previously mentioned 10 size array only has 2 values on my GTX 1060, [Core, Hotspot, 0, 0, 0, 0, 0, 0, 0, 0]. Both are being detected properly into FanControl.

image.png.40ecb078f919aff0b8e2533280010b9d.png

HWInfo devs must either have made a lot of tinkering and somehow found the formula in the API, or it's actually not a real "sensor" value, and it's a "best guess" estimate that is being shown in some cases. HWInfo is one of the only software AFAIK that has it with GPU-Z, so it's hard to know if the value displayed is actually correct, since there is no concrete evidence or documentation to confirm anything.

TLDR: All *PUBLIC* development made to read these newer sensors on Nvidia cards is reverse-engineering, tinkering, and guesses, since documentation ain't available.

Link to comment
Share on other sites

Link to post
Share on other sites

2 minutes ago, Rem0o said:

Weird.

Looked at the PR here, https://github.com/LibreHardwareMonitor/LibreHardwareMonitor/pull/583/files, and the implementation is sketchy at best, seems to be copied over some other guys project, but there is no direct reference to any documentation on to why/how it works, as Nvidia NVApi docs is not up to date. It reads the 10th element of an array returned by a function that is being called with a seemingly random bit mask. It doesn't seem right.

Some more investigation was done here, but no clear success. It kinda confirms though that this is undocumented territory, and people are just trying and experimenting in the dark.
https://github.com/falahati/NvAPIWrapper/issues/45

It seems like not all cards have the same amount of sensors, and it seems like the memory-junction sensor is only on high-end cards with GDDR6X memory, like the RTX 3090.

For eg, the previously mentioned 10 size array only has 2 values on my GTX 1060, [Core, Hotspot, 0, 0, 0, 0, 0, 0, 0, 0]. Both are being detected properly into FanControl.

image.png.40ecb078f919aff0b8e2533280010b9d.png

HWInfo devs must either have made a lot of tinkering and somehow found the formula in the API, or it's actually not a real "sensor" value, and it's a "best guess" estimate that is being shown in some cases. HWInfo is one of the only software AFAIK that has it with GPU-Z, so it's hard to know if the value displayed is actually correct, since there is no concrete evidence or documentation to confirm anything.

TLDR: All development made to read these newer sensors on Nvidia cards is reverse-engineering, tinkering, and guesses, since documentation ain't available.

dang, thanks for doing all that research for me, I had no idea it'd be such a rabbit hole. I do indeed have a 3080ti so it's going to be one of those lesser known cards you referred to. guess I'm sticking with hwinfo! 1 click a day is more than manageable lmao

Link to comment
Share on other sites

Link to post
Share on other sites

9 minutes ago, DeSinc said:

dang, thanks for doing all that research for me, I had no idea it'd be such a rabbit hole. I do indeed have a 3080ti so it's going to be one of those lesser known cards you referred to. guess I'm sticking with hwinfo! 1 click a day is more than manageable lmao

HwInfo have an other way to share sensor values which seems to be more fool-proof with the Windows registry. It doesn't rely on shared memory, which requires HWInfo to start first and all that dance.
https://docs.rainmeter.net/tips/hwinfo/

Made it a public issue here https://github.com/Rem0o/FanControl.HWInfo/issues/1, but nobody stepped up to raise a proper PR yet.
EDIT: This guy started something https://github.com/ScHAmPi/FanControl.HWInfo

Link to comment
Share on other sites

Link to post
Share on other sites

On 11/29/2021 at 4:49 PM, Rem0o said:

HwInfo have an other way to share sensor values which seems to be more fool-proof with the Windows registry. It doesn't rely on shared memory, which requires HWInfo to start first and all that dance.
https://docs.rainmeter.net/tips/hwinfo/

Made it a public issue here https://github.com/Rem0o/FanControl.HWInfo/issues/1, but nobody stepped up to raise a proper PR yet.
EDIT: This guy started something https://github.com/ScHAmPi/FanControl.HWInfo

ahaha it all works perfectly now. no more sensor screwup on boot, it just starts all within 10 seconds and works perfectly first try every time. awesome

edit: to clarify, it was fixed due to that hwinfo registry plugin you posted --> https://github.com/ScHAmPi/FanControl.HWInfo

Link to comment
Share on other sites

Link to post
Share on other sites

Has somebody managed that it works on a windows system with various users (which have and/or don't have admin rights)? Does every user have to set up its own task scheduler task?

Link to comment
Share on other sites

Link to post
Share on other sites

Anybody would be interested in Commander Pro support?

Some guy reverse-engineered the protocol, and it turns out it can be controlled via HID like plenty of other controllers.
https://github.com/audiohacked/OpenCorsairLink/issues/70
 

I don't have a commander pro to test, but it seems like the most popular controller right now, so if enough people are interested, might be worth trying to get my hands on one and start testing.

Link to comment
Share on other sites

Link to post
Share on other sites

Since the most recent build, I've been having similar issues with the sensors popping up as not being found, and refreshing removes the error. Seems to be when I boot and when I wake the system from sleep that this happens. I saw above that @DeSinc was having similar errors, but the plugin that fixed their issue also seemed tied to HwInfo, which I am not using (unless I am not understanding the issue/fix and mine is similar, apologies in advance if I an replicating a situation that's already been resolved)

 

I am running an RTX 2070 and have had no issues with this until the most recent update.

 

Here's the error that pops up for me, and here's my log.

Link to comment
Share on other sites

Link to post
Share on other sites

I have a similar problem. It occurs after booting, but not very often. Refresh fixes it

Link to comment
Share on other sites

Link to post
Share on other sites

Same thing, with the most recent build, I always need to hit the "refresh" button at least once after reboot for FanControl to pick up anything. And even after that, it doesn't apply all the fan speeds correctly, the manual slider "Chipset fan" is way off (blue), and neither of my case fans that are controlled by a curve is showing the correct speed (green).

image.png.98a6f21103cb86500f928b28184f801f.png

Link to comment
Share on other sites

Link to post
Share on other sites

What's the cleanest way to make a fan start spinning at 70 degrees, and then turn off at 60 degrees?  Currently accomplishing this with a low step-down %, but is there a way to set specific parameters?

Link to comment
Share on other sites

Link to post
Share on other sites

12 hours ago, chebsy said:

What's the cleanest way to make a fan start spinning at 70 degrees, and then turn off at 60 degrees?  Currently accomplishing this with a low step-down %, but is there a way to set specific parameters?

Target Fan curve is exactly that.

Link to comment
Share on other sites

Link to post
Share on other sites

7 hours ago, Rem0o said:

Target Fan curve is exactly that.

How do I get the Target card to integrate with a curve outside of the target parameters?

 

For example, I would like my GPU fans to turn on at 70 degrees, and then ramp up to 70% at 80 degrees, and then after I'm done gaming I want the fans to stay on until the GPU is at 60 degrees again before turning the fans off. 

 

I understand how to do the 60 degree idle/70 degree load thing with the Target card.  But then how do I do the 70 degree to 80 degree ramp?

 

Hopefully I am explaining this correctly and clearly.


Thanks for all you do. 

Link to comment
Share on other sites

Link to post
Share on other sites

14 minutes ago, chebsy said:

How do I get the Target card to integrate with a curve outside of the target parameters?

 

For example, I would like my GPU fans to turn on at 70 degrees, and then ramp up to 70% at 80 degrees, and then after I'm done gaming I want the fans to stay on until the GPU is at 60 degrees again before turning the fans off. 

 

I understand how to do the 60 degree idle/70 degree load thing with the Target card.  But then how do I do the 70 degree to 80 degree ramp?

 

Hopefully I am explaining this correctly and clearly.


Thanks for all you do. 

That's oddly specific and not natively covered, but there is a way to get that exact behavior.

Create a graph fan curve next to the target fan curve. Set the ramp you want there. Like 0% at 69, whatever % you want at 70 deg, then 70% at 80 deg. 
Now create a mix fan curve, set it to max, and set both the graph and target in there. Use that mix curve. Voila.

Link to comment
Share on other sites

Link to post
Share on other sites

7 hours ago, Rem0o said:

That's oddly specific and not natively covered, but there is a way to get that exact behavior.

Create a graph fan curve next to the target fan curve. Set the ramp you want there. Like 0% at 69, whatever % you want at 70 deg, then 70% at 80 deg. 
Now create a mix fan curve, set it to max, and set both the graph and target in there. Use that mix curve. Voila.

Thank you so much, I figured there had to be a way to do it by using multiple cards together, I just couldn't figure it out myself.  Very much appreciated!

Link to comment
Share on other sites

Link to post
Share on other sites

This works so perfectly thanks again @Rem0o, you are an amazing problem solver.

 

spacer.png

 

The linear curve from 70 to 80 was too steep so i stretched it out to 65-82 and used a graph curve and it's perfect

Link to comment
Share on other sites

Link to post
Share on other sites

Love this so much. Also this works well on my X570 unify so that can be put in the confirmed compatibility list.

Link to comment
Share on other sites

Link to post
Share on other sites

HI @Rem0o - I have just downloaded your V99 Beta. The Auto (Beta) Curve looks very interesting indeed, and might just meet a use case I have been seeking for ages! I have set up a curve to monitor what it does in comparison to my existing curves I have set up, before 'pressing the button' and applying it to control a fan.

 

Only thing is, I wanted to use it for Water Temperature Delta - I have set up a Custom Sensor that is (Water Temp - Ambient temp), and wanted to use that sensor as the source. Currently, it will not allow a load temp of less than 70°C - Is there any chance you could allow a lower load temp? Being a Delta between water and Ambient, I would like to set it at absolute max of 15°C, maybe even 12°C.

 

Thanks. 

Link to comment
Share on other sites

Link to post
Share on other sites

4 hours ago, Ja50nK said:

HI @Rem0o - I have just downloaded your V99 Beta. The Auto (Beta) Curve looks very interesting indeed, and might just meet a use case I have been seeking for ages! I have set up a curve to monitor what it does in comparison to my existing curves I have set up, before 'pressing the button' and applying it to control a fan.

 

Only thing is, I wanted to use it for Water Temperature Delta - I have set up a Custom Sensor that is (Water Temp - Ambient temp), and wanted to use that sensor as the source. Currently, it will not allow a load temp of less than 70°C - Is there any chance you could allow a lower load temp? Being a Delta between water and Ambient, I would like to set it at absolute max of 15°C, maybe even 12°C.

 

Thanks. 

It does allow?
image.png.17db7e8b79c7aa0cc56ff97d6c6bc5bc.png

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


×