The Notebook Review forums were hosted by TechTarget, who shut down them down on January 31, 2022. This static read-only archive was pulled by NBR forum users between January 20 and January 31, 2022, in an effort to make sure that the valuable technical information that had been posted on the forums is preserved. For current discussions, many NBR forum users moved over to NotebookTalk.net after the shutdown.
Problems? See this thread at archive.org.
← Previous page

    WIP Fan Control application

    Discussion in 'Sager and Clevo' started by djsubtronic, Mar 29, 2021.

  1. joluke

    joluke Notebook Deity

    Reputations:
    1,040
    Messages:
    1,797
    Likes Received:
    1,215
    Trophy Points:
    181
    I believe you would do a better job than Clevo did
     
  2. djsubtronic

    djsubtronic Notebook Evangelist

    Reputations:
    109
    Messages:
    387
    Likes Received:
    76
    Trophy Points:
    41
    The ClevoEcInfo dll that I am using came from an old C++ application called RLECViewer (see here http://forum.notebookreview.com/threads/rlecviewer-custom-clevo-fan-control.818858/), and apparently in order for that to communicate with the EC, the NTPort library is required. My app was basically meant to be a slightly nicer and more useful version of RLECViewer.

    You could try running it without the NTPort library installed, but I think the Clevo dll functions won't work.
     
    luisxd likes this.
  3. skandal

    skandal Notebook Evangelist

    Reputations:
    52
    Messages:
    306
    Likes Received:
    126
    Trophy Points:
    56
    Can't understand if this is sarcasm and bashing Clevo, or me :p

    Yeah, NTPort allows the use of the DLL without the need to copy it to the system32 folder.
     
    Last edited: Nov 8, 2021
    dmanti, djsubtronic and joluke like this.
  4. joluke

    joluke Notebook Deity

    Reputations:
    1,040
    Messages:
    1,797
    Likes Received:
    1,215
    Trophy Points:
    181
    Knowing the person you are and help you gave to John from Obsidian PC, I'm being truthful with you. Not bashing or anything like that :)
     
    dmanti, Papusan and skandal like this.
  5. djsubtronic

    djsubtronic Notebook Evangelist

    Reputations:
    109
    Messages:
    387
    Likes Received:
    76
    Trophy Points:
    41
    Ah - well in that case, creating an installer that copies the ClevoEcInfo.dll to system32 will mean NTPort is no longer needed - I'll try this myself and remove it from my package.
     
    joluke likes this.
  6. skandal

    skandal Notebook Evangelist

    Reputations:
    52
    Messages:
    306
    Likes Received:
    126
    Trophy Points:
    56
    Yes... and No :p
    I'm not sure, but if you copy the dll to system32, you will need to reboot the computer and I think you will need to access the functions trough the Windows WMI platform.
    Once I finish moving to my new house, I'll probably will give it a go messing around your code :D
    Another thing, this DLL is not the latest version, there is a more recent one that only works trough the "copy method" and WMI and I think it was what Jonh was using.

    :)
     
    joluke likes this.
  7. djsubtronic

    djsubtronic Notebook Evangelist

    Reputations:
    109
    Messages:
    387
    Likes Received:
    76
    Trophy Points:
    41
    I just double checked - the ClevoEcInfo.dll file is not able to read the EC without the zntport.sys driver installed (NTPort), so I think it needs to be included as a prerequisite. If you are able to get it working (and reading temps, adjusting fan speeds) using EC only (not WMI) without NTPort, then I'd be interested to hear that. My idea around this was to avoid using any WMI or monitoring libraries to get the temperatures, and rely only on the EC. Lower overhead and less compatibility issues (i.e. polling GPU temps using OpenHardwareMonitor which I was doing previously, caused high CPU usage by the System process, and reducing battery life a lot).
     
  8. skandal

    skandal Notebook Evangelist

    Reputations:
    52
    Messages:
    306
    Likes Received:
    126
    Trophy Points:
    56
    If you don't want to use WMI, then you always need NTPort. NTPort allows the program to communicate directly with the hardware in Win 95 fashion, and this is my problem with it o_O It's an outdated method of doing things, and it might work for now, but with future releases of Windows it might not be the case.

    To tell you the truth, what I really wanted to do, is to replace the DLL entirely and write a proper driver to access the fans and leds of Clevo laptops. Problem is... the last time I did something similar was almost 20 years ago in college, and I don't think I have the skills of doing it again in a modern OS.
     
    dmanti likes this.
  9. djsubtronic

    djsubtronic Notebook Evangelist

    Reputations:
    109
    Messages:
    387
    Likes Received:
    76
    Trophy Points:
    41
    Ah I see - sorry didn't realise what you meant initially.

    So does that mean with the newer ClevoEcInfo you can access the EC temp variables from WMI? What about setting the fan speeds? Anywhere I can get the new DLL?

    I have never worked with driver/hardware level code so I can't really be of much help there, but that would indeed be a nice project to entirely replace Clevo's ****ty control center.
     
    dmanti likes this.
  10. skandal

    skandal Notebook Evangelist

    Reputations:
    52
    Messages:
    306
    Likes Received:
    126
    Trophy Points:
    56
    Can't remember. But I think for temps you can just use nVidia/Intel API, it's better for getting temps I think.
    The newer EC adds the possibility of changing the keyboard led color and control 3 fans.
     
  11. oleuzop

    oleuzop Newbie

    Reputations:
    7
    Messages:
    2
    Likes Received:
    13
    Trophy Points:
    6
    Hi everyone,

    This last couple of days I've been working on a new fan tools for my computer (Clevo X170km-g).

    @djsubtronic : I took your Clevo .NET project to do all the communication with the fans. Once I release it in the following days, of course, will give you credit.

    Some features:

    - Fan temperature check and RPM modification will be executed every XXX ms (250ms by default)
    - Temp is taken in average of the last number of temperatures (configurable, 4 records by default)
    - Increments in RPM are fast (configurable, by default 2.5%)
    - Decrements in RPM are slow (configurable, by default 0.1%)
    - Temperature can be configured from 0 to infinite, in steps of whatever is configured (by default 5 degrees)
    - Any number of fans are configurable (2 by default, but more can be added and a scroll bar will appear).
    - Fan extra RPM to force more fan power... this is usefull in case you are going to play games and you want to keep your computer cold as ice!
    - Minimum fan RPM % will be 80% of the fan which is running at max RPMs. For example: If your CPU is at 80ºC and 100% RPM, your GPU fan will run at 80% no matter what temperature is it.

    Here is a screenshot:

    [​IMG]

    It also has avg and max temps... 76º is fine since I've just quit playing DCS in VR :)

    And here is a default config file (JSON):

    Code:
    {
        "updateFanStep": 250,
        "numberOfValuesForAvgTemperature": 4,
        "fans": [
            {
                "fanNumber": 1,
                "name": "CPU",
                "rpmStepUp": 2.5,
                "rpmStepDown": 0.1,
                "degreesStepSize": 5,
                "configuredRPMs": [
                    25,
                    25,
                    25,
                    25,
                    25,
                    30,
                    35,
                    35,
                    35,
                    35,
                    35,
                    50,
                    65,
                    80,
                    95,
                    100,
                    100,
                    100,
                    100,
                    100,
                    100
                ]
            },
            {
                "fanNumber": 2,
                "name": "GPU",
                "rpmStepUp": 2.5,
                "rpmStepDown": 0.1,
                "degreesStepSize": 5,
                "configuredRPMs": [
                    25,
                    25,
                    25,
                    25,
                    30,
                    35,
                    35,
                    35,
                    35,
                    45,
                    55,
                    70,
                    85,
                    100,
                    100,
                    100,
                    100,
                    100,
                    100,
                    100,
                    100
                ]
            }
        ]
    }
    At the moment I'm executing it with Clevo Control Center 3.0, they can co-exist more or less. There is one problem when making my fan control app starting with windows, it will make CCC crash!... ATM I don't want to uninstall CCC because I use it for undervolting and so on... Maybe I should switch to ThrottleStop

    Anyways, just coded this for myself the last couple of days and I've thought it would be cool to share it with you.

    Will release it in the following days in my GitHub account. Still want to test it a little bit and to clean up the source code. I'm not a .NET programmer (more Java & Python) so... I've done some dirty coding that I want to fix!

    Cheers!
     
    Last edited: Dec 12, 2021
  12. oleuzop

    oleuzop Newbie

    Reputations:
    7
    Messages:
    2
    Likes Received:
    13
    Trophy Points:
    6
    Just in case somebody wants to test it I've created a release at github.

    https://github.com/oleuzop/OptimizedClevoFan

    I've been using it for a couple of days and it's quite stable... but, as always, use at your own risk!

    Will clean up sources in the following days, lots of things can be done in a much better way :)

    Cheers and let me know your thoughts / suggestions

    Have a nice Sunday evening!
     
  13. djsubtronic

    djsubtronic Notebook Evangelist

    Reputations:
    109
    Messages:
    387
    Likes Received:
    76
    Trophy Points:
    41
    @oleuzop This looks great, lot more customizability than my simple tool so I am glad that I was able to help someone take the project a little futher :)
    The only thing I would be careful of is low polling rates (eg 250ms) - I have had some issues at least on my model (PC50DR) which I think might be if you poll the EC too fast, it can cause some issues such as GPU throttle to minimum speed and stays there until you disable/re-enable it or reset. Tbh not 100% sure if that's the reason but just thought I would let you know. It's not easy to reproduce as it doesn't always happen.
     
    dmanti, a.Techie and joluke like this.
  14. Notebookbackbreaker

    Notebookbackbreaker Notebook Consultant

    Reputations:
    29
    Messages:
    111
    Likes Received:
    44
    Trophy Points:
    41
    I am actually thinking of building an app on labVIEW but I had issues with trying to communicate with the DLL. Looks like I might go the other route and use .net (which I used back when .net fw version was 4.5)
     
  15. gb90

    gb90 Notebook Enthusiast

    Reputations:
    0
    Messages:
    14
    Likes Received:
    0
    Trophy Points:
    5
    Guys,

    I'm trying to run djsubtronic's Clevo Fan Control 0.3, but can't install the NTPortDrvSetup.exe ("This setup program can't start NTPort Library driver. Error Number:-559038801"), the program still seems to be running normally, should I be worried?

    I'm running Windows 10 x64, Obsidian-PC Control Station and CCC 3.0 (v.5.0001.1.97).
     
    Last edited: Dec 31, 2021
  16. philstopford

    philstopford Notebook Consultant

    Reputations:
    17
    Messages:
    214
    Likes Received:
    78
    Trophy Points:
    41
    That's expected and can be ignored; I think this is noted elsewhere that the message is essentially harmless.
     
    joluke likes this.
  17. hacktrix2006

    hacktrix2006 Hold My Vodka, I going to kill my GPU

    Reputations:
    677
    Messages:
    2,184
    Likes Received:
    1,422
    Trophy Points:
    181
    @oleuzop @djsubtronic Maybe you two can collab on a project, both of you seem to be doing great and i am closely watching both apps. I take it there is no way to get over using the NTPortDrv driver requirement?
     
← Previous page