Introducing DellFanManagement, a suite of tools for manipulating the fans in Dell laptops.
There are a few different tools in the package:
DellFanLib, a library (DellFanLib.dll) which facilitates passing fan commands to the embedded controller (EC). It uses bzh_dell_smm_io_x64.sys, and all of the other tools depend on this.
DellFanLibInterop, a .NET library (DellFanLibInterop.dll) which makes it easy to make calls to DellFanLib from a .NET environment. Other .NET developers could use this to build their own Dell fan control apps. Maybe someone can think of a different strategy that works better for certain situations.
DellFanCmd, which behaves the same as the old version of the app with the same name. A new test feature has been added which can quickly determine if it will work with your laptop model and what the available fan speeds are.
DellFanKeepAlive, a new tool which allows for locking the fans at a specific speed during certain conditions and allowing the EC to manage them during others.
DellSmmIoLib, a library which allows sending commands to the Dell SMM BIOS (without using bzh_dell_smm_io_x64.sys).
DellSetThermalSetting, a simple tool that allows adjusting the system thermal setting (optimized/cool/quiet/performance) from the command line.
The source code for the entire package is available at https://github.com/AaronKelley/DellFanManagement.
Binaries can be downloaded from https://github.com/AaronKelley/DellFanManagement/releases.
History (working backwards)
I previously released the command-line app DellFanCmd, which allows for disabling the EC fan control. DellFanCmd can also set the fan to a certain speed. Other apps like SpeedFan can also manage the fan once EC fan control is disabled. HWiNFO64 has since been updated to use the same mechanism for fan control, so it can manage the fans in the same manner without DellFanCmd or bzh_dell_smm_io_x64.sys.
• Source code
• NotebookReview forum thread
DellFanCmd is derived from an app called "Dell fan utility", by 424778940z. It uses the same driver, bzh_dell_smm_io_x64.sys, which is by the same author.
• Dell fan utility source code
• bzh_dell_smm_io_x64.sys source code
• NotebookReview forum thread
bzh_dell_smm_io_x64.sys is derived from the "i8k" driver on Linux and these projects which enable the same level of fan manipulation in Dell laptops on Linux:
• https://github.com/clopez/dellfan
• https://github.com/TomFreudenberg/dell-bios-fan-control
...and also from I8kfanGUI and its associated driver by Christian Diefer.
• https://www.diefer.de/i8kfan/index.html
System requirements
• 64-bit Windows 10/11.
• All of the tools require loading a driver, so you must be running them elevated / "as administrator".
• All of the tools require the Visual C++ 2019 redistributable. You will get some sort of DLL load error if it is not installed. https://aka.ms/vs/16/release/vc_redist.x64.exe
• All of the tools aside from DellFanLib are .NET binaries and require Microsoft .NET Framework 4.8.
• bzh_dell_smm_io_x64.sys is signed with a valid code-signing certificate, but it is not an EV certificate. You must make a registry change, and then reboot, in order for it to be allowed to load. More details on this can be found here. You will get a driver load error if this is not done.
• See list of supported systems in the post below; there are most likely other supported systems that are not on the list, almost all models released since 2011 (Intel 2nd-gen Sandy Bridge or newer) work.Code:[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CI\Policy] "UpgradedSystem"=dword:00000000
Possibilities and limitations
Basically, people have discovered a few commands that can be passed to the EC that have to do with fan management.
You can disable EC fan control or enable EC fan control. EC fan control is enabled by default, whenever you boot the system. If EC fan control is disabled, the fans will no longer respond to changes in temperature or system load. EC fan control will remain disabled until it is specifically enabled again, or you do a full shutdown of the system. The system will always start from a cold boot with EC fan control enabled, but it will not be enabled after a reboot.
You can set the fan level for each fan to level 0 (off), level 1, or level 2. The actual speed (RPM) for level 1 and level 2 varies from system to system. I've found that level 1 is a little bit below the lowest level that the EC normally chooses to use, and level 2 is a bit below the highest level that the EC normally chooses to use. For example, in my Precision 7530, level 1 is 2100 RPM and level 2 is 4400 RPM. However, if the EC is in charge of the fans, it won't run them any lower than 2300 RPM (unless they are off) and it can push them up as high as 4800 RPM.
Basically, this means that any setup that uses these EC commands is limited to just three fan speeds: "off", "medium", and "high". if the EC is left in charge of the fans, it has five (?) different fan speeds that it will use in addition to the "off" speed, so more granular fan speed modulation is possible but you have no direct control over it.
The last thing that you can do is query the fan speed for either fan. This works whether EC fan control is enabled or not.
DellFanCmd
This is a simple command-line tool that allows for passing commands to the EC.
You can read more about how this works and how to use it in the DellFanCmd thread. One thing that has been added is the test function. Running "DellFanCmd test" will run through a test sequence; the program will disable EC fan control, try the fans at each of the different levels and record the RPMs, and then enable EC fan control again.Code:Usage: DellFanCmd [command] Available commands: ec-disable Turn EC fan control off (fan goes to manual control) ec-disable-nofanchg Turn EC fan control off and don't change the fan speed ec-enable Turn EC fan control on (fan goes to automatic control) test Try turning EC fan control off, and record the fan RPM at different levels. fan1-rpm Report RPM for fan 1 fan2-rpm Report RPM for fan 2 (RPMs are reported via status/error code) After EC fan control is off, you may use: fan1-level0 Set fan 1 to level 0 (0%) fan1-level1 Set fan 1 to level 1 (50%) fan1-level2 Set fan 1 to level 2 (100%) fan2-level0 Set fan 2 to level 0 (0%) fan2-level1 Set fan 2 to level 1 (50%) fan2-level2 Set fan 2 to level 2 (100%) Append "-alt" to EC disable or enable commands to attempt alternate method. (Example: ec-disable-alt)
DellSetThermalSetting
This is a simple command-line app that allows you to adjust the system's thermal setting / thermal mode from the command line. (This is the same setting that you can adjust from Dell Power Manager, or from the BIOS on systems with 10th gen CPUs and up.)
This program must be run elevated / as administrator. It should work on any system that Dell Power Manager works on (systems with 4th gen CPUs and up). Unlike the other tools, it does not require the Visual C++ redistributable and it does not require that you make the registry change to allow non-EV-signed drivers to be loaded.
Code:Usage is simple: DellSetThermalSetting.exe Optimized Set system to optimized mode DellSetThermalSetting.exe Cool Set system to cool mode DellSetThermalSetting.exe Quiet Set system to quiet mode DellSetThermalSetting.exe UltraPerformance Set system to ultra performance mode
DellFanKeepAlive
Background
I basically set all of this up so that I could build this program, which is borne out of long-term frustrations that I have with the fan control in my Precision M6700 in particular.
I purchased my Precision M6700 at launch in 2012, but before that my primary system was an Inspiron 1720. This was a nice, solidly built high-spec machine (for its time)... They don't make Inspirons like that anymore. One thing that I loved about it was that it was quiet even under high load. Eventually, I needed more horsepower so I replaced it with the M6700, which was Dell's top offering for a high-spec laptop at the time. I was generally pleased with it but noticed right away that the fans were louder. Even more obnoxious was the noise that they make when starting up from the off state. Instead of gradually revving up to the lowest running speed (≈2400 RPM), they whir up to a higher speed before settling down which causes a very noticeable "fans are turning on" sound. (My sensorimotor OCD really hates this, it's quite distracting.) And the system likes to alternate between fans on and fans off on a ≈10 minute cycle if there isn't a whole lot going on.
The Precision wasn't designed to be a quiet system. It wasn't even really designed to be a personal home system, it seems like they are more for specific high-performance use cases. But it's a shame because they are an excellent choice for a home system for power-user types who just want a nice, solid laptop that is serviceable, upgradeable, and that can offer high performance when desired. It's not bulky like some high-end consumer systems that lean more towards the gaming space, with crazy LED lights and huge rear exhaust radiators (but the Precision is still totally usable for gaming). If Dell spent a little bit of time working on the thermal management (...and the keyboard layout, but that's another story) then they'd have something that I really couldn't complain about.
So anyway, my goal is basically to have two modes of operation that I can easily switch between. There is "regular mode", where I am just using the system lightly, browsing the web, writing, watching videos, doing light dev work, etc. In this case the CPU is not being pushed very hard. The system should totally be able to run with the fans at a consistent, low level for an extended period of time. Then, there is "performance mode" which I will switch over to if I need extra CPU or GPU power. In this case, the fans will be allowed to ramp up. Switching between modes should be deliberate but super easy.
What is DellFanKeepAlive?
My original idea for this was, I just wanted to let the EC manage the fans normally but prevent them from ever turning off, which is where the name came from. This would at least stop the on-again off-again fan behavior, plus the annoying startup sound in my M6700, for a nice and consistent and still quiet noise coming out of the fans. This is done by continuously watching the fan speed and system temperatures. When the fan speed hits the lowest normal EC fan speed, and the temperatures are pretty low, EC fan control will be shut off and the fans will be locked at their lowest normal speed. If the system comes under load and things start heating up, EC fan control will be re-enabled so that the fans can ramp up.
Setup
Technically, you don't need to set up two modes of operation to use this app ("regular"/"performance" as described above), so this section can be skipped. However, I have found that if you do not take some measure to limit the CPU speed, a light load can cause the temperatures to spike up quickly which will create more fan speed variation than desired or necessary. So, here is an easy way to set up two different performance modes that can be easily toggled between, on more recent versions of Windows 10.
1. Use the Balanced power plan. (This is the default and you sort of have to go out of your way to change it.)
2. In advanced power settings, set the maximum processor state to 99%.![]()
3. Set the power slider one step from the right. (You will have to make this change separately on AC power and battery power, as the system "remembers" the slider position separately for each.) This, combined with the previous step, will prevent the CPU from entering "turbo boost" speeds and you'll be capped in the mid 2 GHz range — which is completely fine for more light desktop work.![]()
4. If you want to uncap the CPU speed for higher performance, all you need to do is move the slider over to the right.![]()
![]()
Alternate method.
(This is actually what I am using.)
You can leave the power slider one notch from the right and, instead, switch between the "Balanced" power profile and the "High performance" power profile, either programmatically or with a script. "Balanced" should have the maximum processor state set to 99%, and "High performance" should have the maximum power state set to 100%, so switching to "High performance" will uncap the CPU.
Benefits to this method:
• You can have other differences between "regular mode" and "performance mode" aside from the CPU speed cap.
• For example, the Precision M6700 supports the "Dell Feature Enhancement Pack" application which adds some extra thermal management options to advanced power settings. I'm using the "Quiet" thermal mode in the "balanced" profile, and "Standard" in "high performance".
![]()
• I don't know of a way to use a script to change the power slider, but you can use a script to change the power profile. Here are commands to switch to "balanced" and "high performance", respectively.
(I'm using another tool to automatically change profiles when certain programs are open, so I rarely have to manually flip power modes at all.)Code:powercfg -s 381b4222-f694-41f0-9685-ff5bb260df2e powercfg -s 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
Using DellFanKeepAlive
The program takes three command-line parameters.
1. Lower temperature threshold (°C)
2. Upper temperature threshold (°C)
3. Fan speed threshold (RPM)
When you run the program, it will stay active and monitor the temperature (all CPU cores, and the discrete GPU as well if you have one) and the fan speeds. It will wait until all of the temperatures are below the lower temperature threshold and all of the fan speeds are below the fan speed threshold (but above zero), and at that point, it will shut off the EC fan control, locking the fan speed.
If any of the temperatures rise above the upper temperature threshold, EC fan control will be enabled and the EC can cool the system according to however it normally works.
The goal here is...
• The fans will never totally spin down because the program will lock the fan speed before the EC gets around to shutting them off.
• The fan speed will remain constant under moderate CPU load; only if one of the CPU core temperatures rises above the upper threshold will they be allowed to ramp up.
If you set the lower temperature threshold too low, the system might decide to shut off the fans before the temperature gets low enough.
If you set the upper temperature threshold too high, then it might take a while for the upper threshold to be reached and the fans to activate (and they will roar to life when they do).
If you set the two temperatures too close together, then you might end up with flip-flop behavior as the temperature waffles above and below the thresholds.
It takes some trial and error to find a good setup and it depends for each system. But really... You just want to set the upper threshold to the temperature at which you want the fans to kick up and the lower threshold comfortably below that.
For my Precision M6700, I am using:
lower threshold 70 (idle temperatures can actually drop into the 50's)
upper threshold 80
fan threshold 2800
My Precision 7530 runs considerably cooler; I am using:
lower threshold 54 (idle temperatures can actually drop into the 30's)
upper threshold 64
fan threshold 2400
Here's what it looks like running my Precision M6700.
![]()
You can see the current temperature and RPM values, and also the range of temperatures that have been observed since the program started. (Temperatures are provided by Open Hardware Monitor.) In addition to text stating that the fan speed is locked, you can tell that this is the case because of the blue background.
Here is what things look like after some light gaming... The CPU temperature was pushed above 80, so the fan speed was unlocked (EC takes control), and the background turns red to make it obvious that this happened.
![]()
On my Precision 7530, there are more cores to show (and lower temperatures).
![]()
This happens sometimes immediately after starting the program... The EC has turned the fans off, so we have to wait for it to decide to turn them back on before the fan speed will be locked.
![]()
I think that the EC might use CPU load in addition to temperature to decide what speed to run the fans at. Here, the temperature rose so the fan speed was unlocked, but the temperature is now stable at around 50. I don't think that there is any reason for the fans to be running at 4000 RPM... But I'm going to let the EC do its thing. We have to wait for the EC to the speed before it will be locked again.
![]()
This one is on an Inspiron 15R 5520. The program correctly detects that this system only has one fan.
![]()
Startup
There are any number of ways to start the program at boot. I'm using Task Scheduler with an "At log on" trigger that just fires up the program. In this case you have to make sure that the task has "Run with highest privileges" selected, again, the program must be run elevated so that it can load the EC I/O driver. The thresholds can be specified in the "Add arguments" field.
![]()
(I fully intend to make a GUI version of this app that can hide in the system tray. I'm waiting to see how things shake out with WinUI before deciding which direction to go with it.)
One more note... If you run DellFanCmd while DellFanKeepAlive is running, it will probably cause DellFanKeepAlive to crash. Don't run the tools at the same time.
DellFanLib and DellFanLibInterop
These can be used to build your own fan control solutions. They have similar interfaces; DellFanLibInterop exists just to make it easy to call DellFanLib from a .NET environment without having to set up the interop calls yourself. Check DellFanLib.h and DellFanLib.cs to see the interface, or look at the DellFanCmd source code which is a pretty straight-forward command-line implementation.
DellSmmIoLib
This is a .NET library that allows sending commands to the Dell SMM BIOS using the ACPI/WMI interface. This is the same method that Dell Power Manager uses to talk to the BIOS. I think that it should be possible to build this out and replace bzh_dell_smm_io_x64.sys, so that a separate driver won't be needed to send fan control commands, but I haven't figured out how to replicate the commands used in DellFanLib yet.
Always interested in ideas for improvement, or if anyone has ideas for other strategies (within the constraints of what is possible with the limited EC control) that might work better.
-
Aaron44126 Notebook Prophet
-
Aaron44126 Notebook Prophet
Supported systems:
We have confirmation that this method works with these systems. (Add yours in a comment below and I will add it to this list.) I think that it is highly likely to work with any system closely related to these (basically any system with a 2nd-generation Sandy Bridge CPU, or later).
Precision M4600 / Precision M6600
Precision M4700 / Precision M6700
Precision M4800 / Precision M6800
Precision 7530 / Precision 7730
Precision 7550 / Precision 7750
Precision 5520
Latitude E6540
Latitude E7440
Inspiron 5379
Inspiron 5577
Inspiron 15R 5520
Inspiron 15R 5521
Inspiron 7559
Inspiron 7567
Inspiron 7577
Inspiron 7779 ("2-in-1")
G5 5587
G7 7588
XPS 9360
XPS 9550
XPS 9560 ( Seems to be broken with later BIOS versions)
XPS 9570 ( BIOS 1.6.0 or lower?)
Note: Some XPS systems seem to lose the ability to control the screen brightness from the keyboard after disabling EC fan control
How to check to see if your system supports this fan control mechanism.
1. Make sure that Visual C++ 2019 redistributable and .NET Framework 4.8 are installed.
https://aka.ms/vs/16/release/vc_redist.x64.exe
https://dotnet.microsoft.com/download/dotnet-framework/thank-you/net48-web-installer
2. Apply the registry change to allow non-EV-signed drivers to be loaded.
Code:[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CI\Policy] "UpgradedSystem"=dword:00000000
(You can remove this after the test to restore things to how they used to be.)
3. Download DellFanCmd and unzip.
https://github.com/AaronKelley/DellFanManagement/releases
4. Open a command prompt "as administrator" in the location where you unzipped the files.
5. Run the command:
Code:DellFanCmd test
Last edited: Feb 13, 2021Rokobo, Ionising_Radiation and alexhawker like this. -
alittleteapot Notebook Consultant
Hi Aaron!
I thought I would post the results here. Ambient temperature is around 77 F, and this is my Precision 7730 under idle load:
Fan 1 initial speed: 3389
Fan 2 initial speed: 3584
Fan 1 level 0 speed: 0
Fan 1 level 1 speed: 2018
Fan 1 level 2 speed: 4192
Fan 2 level 0 speed: 0
Fan 2 level 1 speed: 2005
Fan 2 level 2 speed: 4201Aaron44126 likes this. -
Aaron44126 Notebook Prophet
-
Loading SMM I/O driver...
...Success.
Disabling EC fan control...
Measuring: Fan 1, level 0...
Measuring: Fan 1, level 1...
Measuring: Fan 1, level 2...
Measuring: Fan 2, level 0...
Measuring: Fan 2, level 1...
Measuring: Fan 2, level 2...
Enabling EC fan control...
Test procedure is finished.
Fan 1 initial speed: 2780
Fan 2 initial speed: 2767
Fan 1 level 0 speed: 0
Fan 1 level 1 speed: 2225
Fan 1 level 2 speed: 4830
Fan 2 level 0 speed: 0
Fan 2 level 1 speed: 2226
Fan 2 level 2 speed: 4848
Unloading SMM I/O driver...
...Done. -
Aaron44126 Notebook Prophet
-
Aaron44126 Notebook Prophet
I have a new goal for a feature add. I want to add the capability to switch the Dell "thermal mode" (Optimized/Cool/Quiet/Performance) either programmatically or from a command-line tool. Right now, I only know of these ways to switch it.
* Systems with 3rd gen CPUs and lower — It's attached to the Windows power profile (so you can switch it from the command line by issuing a command to switch power profiles)
* Systems with 4th gen CPUs and higher — can only be switched from the Dell Power Manager GUI app, open it up and select from the list of radio buttons
* Systems with 10th gen CPUs and higher — you can use Dell Power Manager, or you can also use a new menu that has been added in the BIOS setup
I've been poking around in the DLLs that are shipped with Dell Power Manager this morning to see how the app does it. I've made some interesting discoveries.
* Dell Power Manager talks to the BIOS via WMI — it is not necessary to actually load a driver. It might be possible to use this instead of the bzh_dell_smm_io_x64.sys driver with the above tools.
* The methods in the DLL library that interface with the BIOS have a security check in front of them, so you can't just write an app and hook up to the DPM DLLs and do whatever you want. They check to make sure that the calling executable is signed by Dell before allowing access to most things. I will be able to work around this because the check happens entirely in the DLL userspace; the interface to the BIOS itself doesn't seem to have any checks in front of it.
* I am able to read the model number and system service tag pretty easily. I was also able to successfully query the BIOS and detect the current thermal mode and also the list of available thermal modes (highlighted at the bottom here), which requires bypassing the signature security check, so proof of concept is sort of done.
I still have to unravel some more before I can actually change the thermal mode, but I am proceeding...Maleko48, custom90gt and minimalmayhem like this. -
Aaron44126 Notebook Prophet
Did some reverse engineering against SmbLib.dll and came up with a simple interface to send commands to the BIOS. It hits the Microsoft ACPI/WMI interface so a separate driver is not needed.
I am able to read the thermal mode and also change it.
Will investigate tomorrow if this interface can be used for stuff that I am currently using bzh_dell_smm_io_x64.sys for (enable/disable fan control, change fan speed, query RPM). -
Aaron44126 Notebook Prophet
New release, version 2.1. I've made some tweaks to the other tools but the main one is a new DellSetThermalSetting which simply allows setting the thermal setting (optimized/cool/quiet/performance) from the command line. I'm updating the documentation up top.
I tried using the ACPI/WMI interface to issue other commands but was unable to get it to work. I still think that it is possible, just a matter of figuring out how to package up the commands to be sent to the SMM BIOS. Possibly something simple that I didn't try. If anyone else wants to take a stab at it, be my guest...Maleko48 likes this. -
-
Aaron44126 Notebook Prophet
-
That's exactly what I did! I prefer cool over optimised for most day to day stuff....that little bit of extra heat coming into my palms with 'optimised' is just a bit unpleasant
-
Hey guys need some help, inspiron 15 7559, did the regedit, extract dellfancmd and run cmd to the path but loading SMM I/O driver failed. Thank you so much
-
Aaron44126 Notebook Prophet
* You're running 64-bit Windows
* Visual C++ 2019 redistributable is installed
* bzh_dell_smm_io_x64.sys file exists wherever you are running the program from
* Command prompt is run elevated / "as administrator" -
this looks exciting, I hope to play with it soon!
Any idea why I am getting this error when trying to update my Dell Power Manager from v3.6.0 to newest release version?Attached Files:
Last edited: Jul 29, 2020 -
-
I have an issue running the DellFanCmd.
I extracted the DellFannCmd.zip to desktop (bzh_dell_smm_io_x64.sys, DellFanLib.dll and the .exe), I run the .exe as admin, CMD flashes up and that is it. The .exe is not running in the background (task manager) and it is not in the system tray.
I have a Lattitude 7280 with W10 and latest BIOS, CPU fan do the pumping thing (from 0 to 100% in 1 sec, over and over), because I am using it with a Dell Docking station.
What I did:
-- Visual C++ 2019 installed
--While installing NET: .NET Framework 4.8 or a later update is already installed on this computer.
-- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CI\Policy
Right click on Policy, new key, DWORD 32-bit, name: UpgradedSystem, value data: . Restarted few times after that.
Could you please help me to run the .exe?
. -
Aaron44126 Notebook Prophet
-
Thank you, it was new to me, that you can start and add options to a .exe through cmd.
Could you please interpret the behavior of my machine?
- With or without docking station (USB C), after a time the fan (cpu only) start to pump (0-100% in quick bursts)
- Sometimes after 1-3 restart/shutdown the fan works normal
- I run the cmd as admin and after DellFanCmd.exe ec-disable the fan worked at 100% and after few seconds started to pump
"Loading SMM I/O driver...
...Success.
Attempting to disable EC control of the fan...
...Success. - DellFanCmd.exe ec-enable worked but fan still pumping
Loading SMM I/O driver...
...Success.
Attempting to enable EC control of the fan...
...Success.
Unloading SMM I/O driver...
...Done. - I run the test, fan1 was measured at level 0-2, but the speed was displayed as 0.
-
Aaron44126 Notebook Prophet
[Edit] Nevermind I see it is a Latitude. I haven't done any testing on these systems but it sounds like there might indeed be a system issue with your motherboard or fan.
Is your system new? Has it always had this problem? -
I bought it through ebay it had low resolution screen, the motherboard was clean and the thermal grease was fresh.
At the beginning it happend only once but then more often.
Btw: I used the alt methode, no change.
After few restarts the fan started to work fine, I run "...exe test" after measirung Fan1, level 0 the fan started to pump again.
I also got since last two days error while booting:
Fan malfunction. Pres F1 to retry boot... F5 onboard diagnostics, which found nothing. -
Aaron44126 Notebook Prophet
-
Hi,
Recently came across this post whilst trying to solve a random shutdown issue on my Dell Inspiron 5579 ( i7-8550U @ 1.8Ghz, 16Gb RAM, Win10 (x64) ), which by googling, I'd determined was a thermal shutdown, as there was nothing graceful about it, it was just off and wouldn't power on again for a good few minutes sometimes, albeit, there wasn't a great deal of heat (from what I could tell).
Firstly, I want to say thanks to @Aaron44126 for the effort in putting this together, as this is definitely looking like a step in the right direction in resolving my issue.
Just to provide some feedback. I ran the dellfancmd test option and got the following output on my setup.
Loading SMM I/O driver...
...Success.
Disabling EC fan control...
Looks like fan 2 is not present, system only has one fan?
Measuring: Fan 1, level 0...
Measuring: Fan 1, level 1...
Measuring: Fan 1, level 2...
Enabling EC fan control...
Test procedure is finished.
Fan 1 initial speed: 0
Fan 1 level 0 speed: 0
Fan 1 level 1 speed: 2527
Fan 1 level 2 speed: 5080
Unloading SMM I/O driver...
...Done.
Not sure if the line in red above is a normal thing, I suspect not, and that may well explain my issue. In the BIOS logs, I do have a fan controller error, which appears to be stopping the fan being controlled by the BIOS, yet it can quite happily be controlled by this tool.
I did try to use the ThermalSetting tool to see if I could force manage the fan (If I understood it's usage correctly), but that failed to work for me on any setting, giving the below:
Thermal setting, before change: Error
Failed to apply the new thermal setting.
I'm running the dellfancmd tool with the fan1-level1 option and it was stable all day yesterday. It is early days yet, as sometimes my laptop has gone days without an issue, yet on other days it can shutdown 4 times in an hour, then be stable for the rest of the day.
I know there is a BIOS update available (I'm currently running 1.11.0), but I didn't see anything about addressing fan issues. To be honest, I've been nervous about doing it for fear of a shutdown mid flashing.
At the moment, i'm happy to have the fan at 50% constantly and live with the noise, if it means it not randomly turning off, although I'd rather it get to a more controlled fan setting at some point.
Anyway, apologies for the long winded message, I just want to say thanks and provide some feedback on potentially a different setup. -
Aaron44126 Notebook Prophet
You can use HWiNFO or SpeedFan to have the fan respond to temperature, but, only the three that can be set here can be used (off/medium/high), not a more granular set of speeds which is supposed to be what you get with the EC managing the fan.
I wouldn't be too worried about flashing the BIOS. You can set the fan speed to max and then run the flash. The fan speed change will "stick", even if Windows is shut down, until the system is fully shut down or another program makes an EC adjustment (which the BIOS flasher might do at the very end). -
Thanks for the reply. Unfortunately it wasn't on a three year warranty, so don't want to go there, albeit I'm due an upgrade through work soon.
Thanks for tips, I'll give it another few days running as it is, before I attempt the flash, just to be sure that I've found the issue for sure.
Appreciate the help. -
Aaron44126 Notebook Prophet
I don't really expect updating the BIOS to actually help with this issue (although it might).
Also regarding the failure to switch thermal modes, have you tried Dell Power Manager? (You can download this program directly from Dell.) You can also switch the thermal mode in there under "Thermal Management". I'm sort of surprised if it works in there but not through the command-line app (assuming that you were running the command-line app "as administrator") because they do basically the same thing in the background. -
I did try the Dell Power Manager, prior to finding this thread and there is no thermal management option under there.
The Dell site does suggest that if there's been a fan failure, then it won't appear. This does tie in with the error I had in the BIOS, but still seems strange to me that I can control it directly.
Using the fancmd tool, I can now see the fans under HWinfo (but not speedfan), so I may have go at setting that up at somepoint.
At the moment, things seem to be running OK at 50% constant fan.
I want to try using the alt switch from tomorrow though, as I've noticed things lag sometimes, but not sure if it's related.
Thanks again for your assistance, much appreciated. -
Aaron44126 Notebook Prophet
Ok, so it makes sense that if Dell Power Manager won't let you see/adjust the thermal setting, then it wouldn't work with my command-line tool either. The EC/BIOS must be tossing back an error there. -
Thank you so much for making this software! It seems like exactly what I need, but unfortunately it is not working for me. I suspect this may be due to my laptop's BIOS version, which was 1.19 and then I updated to 1.20, but it still did not work. Was the software designed for use with an older version of the BIOS?
I am on a Dell XPS 9560. I've seen an old post on the previous thread where someone said it worked for their 9560 in March 2019. Do you think an older BIOS from around that time would be more likely to work? (I'm just trying to avoid a rollback if it's not necessary)
Here are more details about my problem:
When I run DellFanCmd test, the fan control only sometimes works. It always sets the fan speeds properly for fan 1, but for fan 2 it is usually operating at max (~6000 RPM) and the test does not lower this number at all. Sometimes when I run the test, it does lower both fan speeds.
It seems that the EC takes control again only seconds after running the "ec-disable" or "ec-disable-alt" commands. After running either of these commands, I'm not able to manually set the fan speeds with either DellFanCmd or HWInfo.
The odd thing is that my system is just idling around 42-47C for both CPU and GPU, so it is very weird that I'm at 6000 RPM at all. I'm on a Balanced profile and Dell Power Manager is set to quiet. It seems that my system runs fan #2 at max speeds for a LONG time recently, like 1 hour or more, while the temps are very low (mid 40s C). Then it randomly decides to slow down to 2500-3000 rpm, with random bursts up/down... so frustrating! Any ideas or suggestions are very welcome. Thanks so much for your hard work on this!Maleko48 likes this. -
Aaron44126 Notebook Prophet
Support broke with a BIOS update to the XPS 9570, there is some information in this post. Looks like this might be the case for the 9560 as well. I added a note to the supported systems list (second post in this thread).
http://forum.notebookreview.com/thr...ps-under-windows.805317/page-16#post-10851726
Unfortunately, I don't really have any idea how a workaround might be produced :-\
I also don't have a system that I could even run some tests with.
[Edit]
Maybe try running in "Optimized" mode instead of "Quiet" mode. On my 7530, "Quiet" is definitely louder than "Optimized" for some reason. This can be measured... In "Optimized" the lowest fan speed is around 2300 and the next highest is around 2700. But in "Quiet", the lowest is also 2300, but then the next one up is 3000, and the system likes to alternate between those under a modest office workload.
Also try limiting the max CPU speed (I have details about this in the first post — you don't have to use DellFanKeepAlive, just look at my Windows power settings setup). That can help keep the fans under control.Last edited: Sep 16, 2020LaptopFan99 and cfe like this. -
I'm thinking about downgrading to BIOS 1.6, just a little hesitant since it is from back in December 2017. I'll keep experimenting with settings for now, and will post again if I find any solution!
Update: I found a solution! (for the most part)
Fan #2 was running at max speed because the Nvidia Control Panel was set to use the "High Performance GPU" (GTX 1050) to run my web browser and some other common applications. It seems this caused the EC to force fan #2 to maximum speeds whenever these applications were open. After changing the settings in Nvidia Control Panel (Manage 3D Settings -> Program Settings) to use Internal Graphics for these programs, my fan speeds reduced to idling at ~3500 RPM in Quiet mode. When changing to Optimized mode, both fans went to ~3800 RPM.
So my situation is much improved now, as running at 6000 RPM sounded like I was working on a drone rather than a laptop. Anyway, thanks again for your reply. If the fans cause any more trouble I can always roll back the BIOS and give DellFanKeepAlive a try!
Update #2: It seems that DellFanCmd is working now that I've disabled the "High Performance GPU" for all of my running applications in Nvidia Control Panel, even with the latest bios version 1.20! I was able to reduce my idle fan speeds from 3500 to 2500 rpm, which is very quiet! The system now runs around 57 C, but I think that's a nice trade-off, and it is great to be able to control the fans.Last edited: Sep 16, 2020 -
Update for anyone with new BIOS (I have 1.20) or an XPS 9560/similar:
DellFanCmd / DellFanKeepAlive seem to intermittently work. Meaning sometimes the EC control takes over despite this software trying to disable it. But other times, DellFanCmd is able to take over and actually reduces the fan speeds to the specified setting. It seemed that using the internal GPU for all software helps reduce fan speeds, but the system still seems to randomly speed up my fans, even when I'm not using the high performance GPU or even doing any computations at all. It's quite annoying. I may downgrade the BIOS soon and try DellFanCmd again if this can't be fixed. -
Hello all. I am trying to use the DellSetThermalSetting app, but it just says
Thermal setting, before change: Error
Thermal setting, after change: Error
Tried it with EC enabled and disabled. The DellFanCmd.exe is working great. Made sure I've got all the libraries in the same folder, cmd is running as Admin.
Using Dell 7577 with Win 10 Home 64bit. -
Aaron44126 Notebook Prophet
-
-
Aaron44126 Notebook Prophet
Maleko48 likes this. -
I have tried updating to the newest DPM but have been unable to for some time due to an installation/update error despite my best efforts to work around it. I don't use DPM anyways, as I just set what it can control in my BIOS and forget about it. I prefer to have less junk running on my machine in the background anyways.
A properly setup, tuned, and automated machine using ThrottleStop and your utilities is better than whatever "thermal" profiles Dell has to offer anyways imo. -
Aaron44126 Notebook Prophet
Dell Power Manager doesn't actually need to be installed to use the console app to switch profiles. Newer Dell systems also allow the thermal profile to be set in the BIOS, but either the console app or DPM will allow it to be set "on the fly" without a reboot. I have my system dynamically switching between "Quiet" and "Performance" depending on what apps I am running. -
Thank you for all the answers. Indeed the 7577 never got the control portion in DPM. I really hate the fact than I can't control my fans with the click/press of a button so having some profiles to easily change between them would've been great.
-
Good enough for now -
-
It takes a bit of Windows screwery to pin batch file shortcuts to your taskbar... I basically had to rename them as a .exe, pin the exe then rename the file back to .bat . Note, they do not run silently... that takes more Windows screwery than I care about at the moment.
Here is what my taskbar looks like:
DellFanCmd_ECDisable.bat
C:\DellFanControl\DellFanCmd-2.1\DellFanCmd.exe ec-disable-nofanchg
DellFanCmd_ECEnable.bat
C:\DellFanControl\DellFanCmd-2.1\DellFanCmd.exe ec-enable
DellFanCmd_FanLevel0.bat
C:\DellFanControl\DellFanCmd-2.1\DellFanCmd.exe ec-disable-nofanchg
C:\DellFanControl\DellFanCmd-2.1\DellFanCmd.exe fan1-level0
C:\DellFanControl\DellFanCmd-2.1\DellFanCmd.exe fan2-level0
DellFanCmd_FanLevel1.bat
C:\DellFanControl\DellFanCmd-2.1\DellFanCmd.exe ec-disable-nofanchg
C:\DellFanControl\DellFanCmd-2.1\DellFanCmd.exe fan1-level1
C:\DellFanControl\DellFanCmd-2.1\DellFanCmd.exe fan2-level1
DellFanCmd_FanLevel2.bat
C:\DellFanControl\DellFanCmd-2.1\DellFanCmd.exe ec-disable-nofanchg
C:\DellFanControl\DellFanCmd-2.1\DellFanCmd.exe fan1-level2
C:\DellFanControl\DellFanCmd-2.1\DellFanCmd.exe fan2-level2 -
Aaron44126 Notebook Prophet
cmdh.exe [full path to batch file]Attached Files:
Maleko48 likes this. -
-
You guys are golden!!!! Thanks so much!
-
This tool is very much appreciated. Final solution to getting my brothers AIO (7775) under control. Despite hardly getting warm it has a knack for increasing the fan RPM but this tool lets us control it with Speedfan or HWiNFO. Funny how such an AIO is so much like a laptop but I guess it makes sense. Thank you very much for providing us this tool.
EDIT: Hmm, I'm trying to use DellFanKeepAlive. I use the exe with parameters "DellFanKeepAlive.exe 70 80 1059" and it launches and monitors speed and temperatures but don't seem to have much affect and it gives me an "!! Errors detected, check error log file for details !!".
The error in the log is just repeatedly:
Code:31/10/2020 20:13:59 - System.FormatException Input string was not in a correct format. at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) at DellFanManagement.KeepAlive.TemperatureReader.GetCpuCoreTemperatures() at DellFanManagement.KeepAlive.DellFanKeepAlive.Main(String[] args)
ThanksLast edited: Oct 31, 2020 -
Aaron44126 Notebook Prophet
If you run Open Hardware Monitor directly, does it report temperature values for the individual cores? What type of CPU does this thing have?
https://openhardwaremonitor.org/downloads/Last edited: Nov 2, 2020 -
Hi, I was trying to execute DellFanKeepAlive process but it crashes with the following error:
P.S. I'm not running DellFanCmd at all.
P.S.2 DellFanCmd works fine.. -
Aaron44126 Notebook Prophet
morbvamp likes this. -
I was able to run DellFanKeepAlive passing the parameters needed. I can also confirm that this works on my Dell XPS 13 9300 withouth any issues. Now I need to find the best low-high-rpm values for this laptop!
Thanks for your hard work and help! -
Is it possible to do something like DellFanKeepAlive but in fanless (level 0) mode instead of 50% speed (level 1)?
Basically I want to save as much battery as possible, and therefore the fan needs to be off as much as possible, and it should only run in an emergency (temperature reaches above 85 or 90). Current Intel CPU (the 14nm, at least) is efficient enough to run in fanless mode in browsing and office tasks. I am currently typing this with the fan off (level 0) on my XPS 15 9560, and the temperature is at 47 degrees, even though the ambient temperature is easily above 25.
Basically what I want:
- 0-85 degrees --> Fan level 0
- Above 85 degrees --> Give control back to EC
- 0-85 degrees --> Fan level 0
- 85-90 degrees --> Fan level 1
- Above 90 degrees --> Fan level 2
Btw long before I found this program, the Dell fan management is quite weird. Basically:
- Idle with fan on
- Open Dell Command Power Manager
- Set the fan profile to something else (this could literally be anything, you could go from Quiet -> Cool for that matter)
- Fan turns off
- Set the fan profile back to the previous option
- Fan is still off
-
Aaron44126 Notebook Prophet
Your first request "basically what I want" is something that I will look into providing with the next update to the app. (No timeline commitment, I have a lot of stuff on my plate.) Though in a case like this, when you hand control back to the EC at a high temperature you will find the fans immediately/suddenly ramping up to the highest level, because that is where the EC will want to put them.
Your second request "Either that, or" is already possible using DellFanCmd + SpeedFan. I have some directions on how to set it up in this post. Note that in SpeedFan, you have to find a checkbox in settings to turn on Dell laptop fan support, which is not on by default, and then restart the app before it will see your fans.
http://forum.notebookreview.com/thr...ual-custom-control-of-the-laptop-fans.827106/
I think that you might also be able to do it with hwinfo64 (no DellFanCmd required). I haven't played with the fan management options in there but other users have reported that it works and you can set thresholds.Last edited: Dec 2, 2020
DellFanManagement & DellFanKeepAlive – Tools for managing the fan speed in Dell laptops
Discussion in 'Dell' started by Aaron44126, Jun 18, 2020.