(formerly known as MSI Fan Control)
A fast, lightweight alternative to MSI Center for MSI laptops, written in C#.
Please read the whole README (or at least the Supported Laptops and FAQ sections) before downloading.
Currently, only the MSI GF63 Thin 11SC is supported, with support for more MSI laptops Coming Soon™.
In the meantime, you must make your own config for your laptop (tutorial Coming Soon™).
This should be as easy as supplying your laptop's default fan curves to the Defaut profile in a copy of an existing MSI laptop config, however some MSI laptops have a few extra setting located at different EC registers. Try looking up similar fan control utilities (most are written for Linux).
Other laptop brands are not officially supported. You can still try and make your own config, but chances are you're looking for NoteBook FanControl instead.
Please avoid asking me (or other people) in the issue tracker to create a config for you. Unless we have your specific laptop model (which we probably don't), we will not be able to help you outside of the general instructions.
Feature | MSI Center | YAMDCC |
---|---|---|
Installed size | ~950 MB¹ | ~176 KB¹ |
Fan control | ✔ | ✔ |
Temp. threshold control | ❌ | ✔ |
Multi-fan profile support | ❌ | ✔ |
Charge threshold setting | Limited² | ✔ |
Perf. mode setting | ✔ | ✔ |
Win/Fn key swap | ✔ | ✔ |
Win key disable | ✔ | ❌ |
Hardware monitoring | ✔ | Limited³ |
Other MSI Center features | ✔ | ❌ |
Open source | ❌ | ✔ |
1: As of v2.0.38, MSI Center takes about 950 MB of storage space when counting the UWP app (749 MB) and the files installed on first launch to C:\Program Files (x86)\MSI
(205 MB). YAMDCC's installed size is based on the Release build of commit dc819a6, and includes all program files, but excludes config XMLs.
2: MSI Center only supports setting the charge threshold to 60%, 80%, or 100%, while YAMDCC can set this to anything between 0 and 100% (with 0 meaning charge to 100% always).
3: YAMDCC only supports monitoring the CPU/GPU temperatures and fan speeds via EC.
Below are some changes I would like to make before a 1.0 release of YAMDCC:
Below are some planned features for potential future releases:
Microsoft.Windows.Compatibility
package installed, I still
wasn't able to get the service to run without issues.Development builds are available through GitHub Actions.
Alternatively, if you don't have a GitHub account, you can download the latest build from nightly.link.
(You probably want the Release
build, unless you're debugging issues with the program)
Alternatively, you can build the program yourself.
.NET Desktop Development
workload checked.git
.YAMDCC.sln
in Visual Studio.Build
> Build Solution
to build everything.YAMDCC.GUI\bin\Debug\net48\
.Make sure to only use matching yamdccsvc.exe
and YAMDCC.exe
together, otherwise you
may encounter issues (that means net stop yamdccsvc
first, then compile).
Developer Command Prompt for VS 2022
and cd
to your project directory.msbuild /t:restore
to restore the solution, including NuGet packages.msbuild YAMDCC.sln /p:platform="Any CPU" /p:configuration="Debug"
to build
the project, substituting Debug
with Release
(or Any CPU
with x86
or x64
) as YAMDCC.GUI\bin\Debug\net48\
, assuming you built
with the above unmodified command.If your question isn't already answered in the FAQ or issues megathread, feel free to open an issue. Please make sure to use the correct issue template for your problem.
See the build instructions to build this project.
If you would like to contribute to the project with bug fixes, new features, or new configs, feel free to open a pull request. Please include the following:
This program is tested by me (Sparronator9999) on 64-bit Windows 10 (specifically LTSC 2021). It should, however, run on any verison of Windows 10, 32- or 64-bit.
Windows 11 should be supported as well, but I have not tested it. Open an issue if you have trouble with Windows 11.
Older versions of Windows may also work, but with no support from me.
Soon™.
Use one of the many other projects on GitHub instead while you wait.
YAMDCC works by accessing your laptop's embedded controller (aka, the EC). Many settings that can be configured with MSI Center are stored here, including fan curve, performance mode, and the Win/Fn key swap setting.
Because admin privileges are required to install kernel drivers. Simple as that.
For security reasons, only programs with admin privileges are allowed to communicate with the YAMDCC service.
Because communicating with the EC requires low-level hardware access, something only possible from within the kernel. This program achieves this with WinRing0.
Yes, however YAMDCC mitigates this by installing the driver such that only programs run with administrator privileges can communicate with the driver.
Why wasn't this done by the driver itself in the first place, you might ask? Honestly, I don't know how this slipped through during development, but here we are. Unfortunately the updated fork of WinRing0 that does fix this vulnerability driver-side doesn't have a binary release due to Microsoft's strict driver signing requirements.
NOTE: If YAMDCC finds the driver already installed, it may try to use that (potentially vulnerable) driver instead. If it was installed with, e.g. LibreHardwareMonitor, you should be fine, as they implement the same fix that YAMDCC does.
Please read the disclaimer, especially the bold text, if you haven't already.
Again, see above.
Reset your EC (MSI laptops only):
Shut down the laptop if it's on (force shut down if needed), then find the EC reset button (on the GF63 Thin 11SC, it's a small hole located on the bottom of the laptop next to the charge port) and press it with the end of a paperclip (or similarly small object, e.g. SIM eject tool) for at least 5 seconds. Try rebooting.
If the issue persists, try unplugging all power sources, including the laptop battery and CMOS/clock battery (requires disassembly of laptop), for a few seconds. Re-connect everything, then re-assemble and attempt another reboot. This will reset your BIOS settings.
Users of other laptop brands will need to look up instructions for their laptop.
Due to WinForms limitations, no.
Technical explanation: A few specific WinForms controls used by YAMDCC look really bad
when trying to recolour them to be dark themed. Also, built-in dialog boxes (for C# programmers,
think MessageBox.Show
) cannot be recoloured from their default white theme. Also, I have little
to no experience with other UI kits (e.g. WPF).
Probably not for Windows (unless it goes EOL, which I doubt will happen for a while).
If Linux support ever comes, it will be using .NET (since .NET Framework isn't supported on Linux).
Copyright © 2023-2024 Sparronator9999.
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
This project makes use of the following third-party libraries:
YAMDCC.IPC
in the source files).