Jump to content

FanControl, my take on a SpeedFan replacement

10 hours ago, Lupo said:

My motherboard is an ASUS Z97-PRO GAMER (Nuvoton NCT6791D), if that helps..

There is a register reading for temperature 4 in the source code but if it doesn't show up it means the temperature reading is invalid, thus the register address is most likely wrong or the math to get the binary value to a decimal value is wrong. Sadly, specs for these chips are not public as far as I know :/

Link to comment
Share on other sites

Link to post
Share on other sites

hey I'm watching development of this program very closely and am a big fan because when I upgrade away from skylake, speedfan's not gonna work at all, let alone in its current state that gets disabled every time a battleeye service game runs.

 

I have a few requests if you'd be willing to entertain them:

 

1. fix up the issue with the fans dropping detection randomly and just not moving until you disable/enable the curve again

sometimes the fans will just stop responding to temperature increases. I have to disable and then enable again for them to pick it up again. it's the most pressing issue stopping me from just switching over to this program right now honestly


2. allow more than 2 fan curves in the mixed curve option (preferrably up to 9 but more would be appreciated)
the main technique I rely on is combining the curves of all four cores (I imagine soon to be 8 cores in the future), each individually adding a little bit of fan speed to the fans, plus the overall CPU temp sensor. this smooths out spikes but still allow the fans to ramp up to ~20-40% very quickly when all the core temps get blasted from a sudden load. I'd prefer to have all cores in this mixed option. like, if you added a little + in the mixed option to add more graphs as desired, or something. I hope this could be implemented as 1 core + overall temp is not as accurate as I'd like sometimes.

 

3. allow drawing an actual fan curve like in speedfan, rather than just having a linear option
if this is hard to program, I understand. this one isn't actually as important but still would be nice to have and from my experience showing this program to other people is part of why they are hesitant to use it (despite there literally being no other better options in terms of what it can do lol)

 

I'm sure you'd have already been planning to get these done but I just want to give my feedback anyway.

 

why the hell has nobody made software like this yet? there was speedfan years ago, and then that's IT. there's no other software that does anything as well as speedfan. why the hell?

Link to comment
Share on other sites

Link to post
Share on other sites

Thats why this software need to be opensource. If speedfan was opensource it surely didnt end in the sand.

Link to comment
Share on other sites

Link to post
Share on other sites

As long as other tools (like Argus Monitor or the tools of the Mainboard vendors) are available for free or -- as it's the with Argus -- at a rather modest price point, I feel the pressure is not that high to have everything available as open source. I much rather have someone dedicated at developing something than open source that is rarely updated and later abandoned. From what we see here, Rem0o is doing a great job and is working to improve his software and for Argus that is pretty much the same (even though it's also just a hobby project, judging from the changelog, they were working on it for the last 10+ years).

 

For me, the biggest drawback is the hardware support that is missing. I own a Gigabyte motherboard (Aorus Z390 Master) that has two SuperIO chips. So far the ONLY tool that can control the fans of the second one (an ITE IT8792E) is Gigabyte SIV. Even though the Argus guys are constantly updating their software, they don't seem to be able to control the fans attached to this chip (they can read the fan speeds though). The same is true for all other programs I have tried. So, the main problem is the non-availability of specs/data sheets for the hardware. I was in contact with the Argus Monitor support (OK, because it's a hobby project, with the developers ;) ) and even after some back and forth with generating some log files and testing beta versions, fan control support for the IT8792E is not there (yet). I have some other machines with Nuvoton and Fintek SuperIO chips and with them, fan control is working fine. So the conclusion for me is to NOT get any Gigabyte motherboard anymore (or at least none with SuperIO chips where the datasheets are not available for third parties to get hardware supported -- independent if it's Argus Monitor or any other tool).

Link to comment
Share on other sites

Link to post
Share on other sites

Quote

fix up the issue with the fans dropping detection randomly and just not moving until you disable/enable the curve again

 Isn't it simply the response time/hysterisis? You are the first to mention that issue. Could be also a conflicting software you got opened.

 

Quote

2. allow more than 2 fan curves in the mixed curve option (preferrably up to 9 but more would be appreciated)

 

I rely on is combining the curves of all four cores

 

Why don't you simply use the "Core average" or "Core Max" source?

 

You say you want to be responsive to temperature spikes, but trust me, you kinda don't. Cooling with fans is inherently a laggy system and reacting fast is kinda pointless and annoying most of the time to your ears. If your CPU spikes from let say 40 to 60 then drops back down to 42, increasing fan speed to the "60" point in the curve during that time frame is pointless. Same thing if one of your core spike, as the whole package will heat up if the core stays hot long enough. This is a very opinion based answer I know, but it reflects the design decisions I took in this software.

 

Quote

allow drawing an actual fan curve like in speedfan, rather than just having a linear option

Yup, it's a pain to program properly and implement, for almost 0 benefits imo. Also, I kinda feel like almost everybody ends up with a linear kinda curve anyway. Sure some people might have a slow climb at lower temps and faster climb at higher temps. As I said before, cooling  with fans is inherently a laggy and imprecise system. Those kinds of micro-adjustments most likely don't make a difference temperature wise from a standard linear curve, especially if you introduce hysteresis and response time into the mix, which everybody ends up adding to make everything smoother.

 

Quote

why the hell has nobody made software like this yet? 

Because motherboard / chip support is an absolute pain. There is hundreds of different motherboards, dozen of chips, combinations of both, and next to no documentation to actually program those. Manufacturer keep it for themselves and their partner. Best of all, the target market don't want to pay a dime for it and expects it to automatically work for their motherboard.

 

This is why my software is not the part above, but only the UI on top of it, as I don't want to deal with hundreds of "Support my mobo plz" messages in my inbox.

 

Quote

Thats why this software need to be opensource. If speedfan was opensource it surely didnt end in the sand.

Well the software I'm basing my UI on is actually open-source: 


https://github.com/openhardwaremonitor/openhardwaremonitor

That one got abandonned a few years back and only recently got some support back. Might switch to this one soon.

https://github.com/LibreHardwareMonitor/LibreHardwareMonitor

This branch forked away from OHM and is the one I'm currently using.

 

However, both of these projects are stacking issues/demands, but almost nobody actually works on those, for the reasons above. So they end up collecting sand even if open-sourced. There are some fork that tried to implement fan curves, but they are abandonned. You could revive those.

 

If you check my program files, I'm using the DLL directly. Like if they update it, you can swap the DLL and it will work. My program is ONLY a UI showing what that DLL has to offer, and nothing else.

 

 

 

I hope this post answer your questions.

Link to comment
Share on other sites

Link to post
Share on other sites

Goodness finally a simple piece of software that can control my case fans using the actual sensors on the GPU.

I made an account since I've wanted to for a while, but this piece of software was a good excuse to make one.

You great sir/madam can expect a donation of part of the money that goes towards my savings at the end of my financial month.

 

I have one question though what should I do with my BIOS fan control? Should I just set everything to full and let your software do the controlling?

What would be recommended? Corsair ML140 fans are loud at anything above 65% PWM Fan speed. And from my Aida 64 and Cinebench r20 runs they can keep my CPU well under 80 degrees C with a Scythe Kotetsu Mark||. So 65% PWM is probably all I will ever need in my current system.

Link to comment
Share on other sites

Link to post
Share on other sites

8 hours ago, Chrisuu said:

I have one question though what should I do with my BIOS fan control? Should I just set everything to full and let your software do the controlling?

What would be recommended? Corsair ML140 fans are loud at anything above 65% PWM Fan speed. And from my Aida 64 and Cinebench r20 runs they can keep my CPU well under 80 degrees C with a Scythe Kotetsu Mark||. So 65% PWM is probably all I will ever need in my current system.

In my case, I set everything at 50% flat in the BIOS so that when I boot up it doesn't sounds like a jet engine. When Windows finally boots up and the software opens, it takes over the flat setting of the BIOS. I would do something similar, just choose a flat setting that doesn't bother you if it ends up running for a few seconds.

Link to comment
Share on other sites

Link to post
Share on other sites

If you put every fan to 100% in bios it will blow full power every bootup. Just set them to 50% and you are safe.

Link to comment
Share on other sites

Link to post
Share on other sites

2 hours ago, Rem0o said:

In my case, I set everything at 50% flat in the BIOS so that when I boot up it doesn't sounds like a jet engine. When Windows finally boots up and the software opens, it takes over the flat setting of the BIOS. I would do something similar, just choose a flat setting that doesn't bother you if it ends up running for a few seconds.

Wait there is an option to start it on boot-up? I haven't seen it anywhere in the programme?

Link to comment
Share on other sites

Link to post
Share on other sites

17 minutes ago, Chrisuu said:

Wait there is an option to start it on boot-up? I haven't seen it anywhere in the programme?

I use a scheduled task ;)

Link to comment
Share on other sites

Link to post
Share on other sites

Ah I see I'll run it via a custom schedule then, you have my thanks.

Link to comment
Share on other sites

Link to post
Share on other sites

3 hours ago, Chrisuu said:

Ah I see I'll run it via a custom schedule then, you have my thanks.

In elevated ( run as admin ) command prompt, type the following:

 

SCHTASKS /CREATE /SC ONLOGON /TN "FanControl" /TR "C:\Whatever\Folder\FanControl.exe" /V1 /RL HIGHEST /DELAY 0000:30


This is exactly the task I'm running on my computer and it works great.

Link to comment
Share on other sites

Link to post
Share on other sites

Update 

  • (Highly requested) Added a script next to the program to setup a scheduled task to run FanControl at startup
  • Added a "hide fan speed cards" checkbox in the left menu
  • Migrated back from LibreHardwareMonitor to OpenHardwareMonitor, the original project, as support is seemingly back

The fan speed cards are irrelevant once all control cards are matched, so I added an option to hide them to reduce clutter.

As for the lib switch I'm not too sure yet, I can easily switch back if needed, we'll see how it goes.

The startup script will work with any version of FanControl you are running.

 

Cheers!

Link to comment
Share on other sites

Link to post
Share on other sites

14 minutes ago, Rem0o said:

Update 

  • (Highly requested) Added a script next to the program to setup a scheduled task to run FanControl at startup
  • Added a "hide fan speed cards" checkbox in the left menu
  • Migrated back from LibreHardwareMonitor to OpenHardwareMonitor, the original project, as support is seemingly back

The fan speed cards are irrelevant once all control cards are matched, so I added an option to hide them to reduce clutter.

As for the lib switch I'm not too sure yet, I can easily switch back if needed, we'll see how it goes.

The startup script will work with any version of FanControl you are running.

 

Cheers!

Would it be possible to make a user toggle for which lib to use? May be that some systems see better support for one vs the other.

Link to comment
Share on other sites

Link to post
Share on other sites

4 minutes ago, Bitter said:

Would it be possible to make a user toggle for which lib to use? May be that some systems see better support for one vs the other.

I thought about it and looked into it, but it would be quite a bit of work to make that work smooth. It would be simpler to release 2 different versions, but that's quite the hassle. I haven't made my mind yet on that matter.

Link to comment
Share on other sites

Link to post
Share on other sites

10 minutes ago, Rem0o said:

I thought about it and looked into it, but it would be quite a bit of work to make that work smooth. It would be simpler to release 2 different versions, but that's quite the hassle. I haven't made my mind yet on that matter.

No way to just have the end user swap out a file in the directory, one DLL in place of the other. Well, thank you for considering it and looking into it. I'll give this new version a go on my systems.

Link to comment
Share on other sites

Link to post
Share on other sites

2 minutes ago, Bitter said:

No way to just have the end user swap out a file in the directory, one DLL in place of the other. Well, thank you for considering it and looking into it. I'll give this new version a go on my systems.

Sadly, there are breaking changes between the two dll. So you can't simply swap them out.

Link to comment
Share on other sites

Link to post
Share on other sites

Just now, Rem0o said:

Sadly, there are breaking changes between the two dll. So you can't simply swap them out.

I'm sure we all trust you'll make this the best it can be.

Link to comment
Share on other sites

Link to post
Share on other sites

Update:

  • Fixed serialization issue (saving and loading settings) on some non-English Windows installation
  • Added email tooltip ( text ) on email button when you mouse hover it.
Link to comment
Share on other sites

Link to post
Share on other sites

hi~

I can't open it again when I opened it once.

And a file cannot be deleted:OpenHardwareMonitorLib.sys

Link to comment
Share on other sites

Link to post
Share on other sites

4 hours ago, orbbec said:

hi~

I can't open it again when I opened it once.

And a file cannot be deleted:OpenHardwareMonitorLib.sys

If that file is there, it means the software is running or was forced close. Are you sure the process is not running in your task manager?

Link to comment
Share on other sites

Link to post
Share on other sites

3 hours ago, Rem0o said:

If that file is there, it means the software is running or was forced close. Are you sure the process is not running in your task manager?

Yes it is. I can't see it anywhere. Clicking on the icon does not respond.

There is a clause in Task planner. As I started it, a window flashed.

8eb2e877c142890dc3474c122221ec4.jpg

Link to comment
Share on other sites

Link to post
Share on other sites

@orbbec

Assuming this is chinese? The window flashing is the windows shell trying to open the software. Clearly something is wrong, but I don't think the software is geared up to diagnose a crash like this.  Might have something to do with the language, as Windows is always doing funny stuff when it comes to language. Can you DM me your userConfig.json file?

Link to comment
Share on other sites

Link to post
Share on other sites

Small tutorial

 

 

 

Being at home ( you know why ) and as a way to try to clarify the feature set, I did a small tutorial on how to setup the software the first time you open it up. I also go over the basics of a mixed curve with CPU and GPU temperature for your case fans.

 

Please note that I don't have the opportunity to speak English very often. This is a one take so I didn't edit out my hesitations and mistakes 😅.

Link to comment
Share on other sites

Link to post
Share on other sites

Update

 

  • Added error log file
  • The linear fan curve now ignore the hysteresis at the temperature bounds

I noticed sometime the linear fan curve would not go to its idle state (minimum) or full load (maximum) state since the hysteresis would prevent it. This is annoying if your minimum fan speed is 0% since it prevents it to stop. To fix that, the hysteresis (not the response time) is now ignored at the limits so the fan curve will "snap" to its minimum or maximum bound when near it.

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


×