
MSI Modern 15H AI C1MGT-096IT Linux thermal management - Reverse engineered EC control with fan profiles and battery threshold
MSI Modern 15H AI C1MG-096IT Linux thermal management - Reverse engineered EC control with fan profiles and battery threshold
This application was born out of necessity for MSI laptop users on Linux. The journey began when I discovered that neither Intel nor MSI provided proper drivers or control applications for my Linux Mint Xia distribution.
After extensive searching, only one repository showed promise for my Intel Core Ultra 5 125H CPU: OpenFreezeCenter
However, this project was originally designed for Intel 10th/12th gen CPUs. My Meteor Lake architecture with P-cores and E-cores presented unique challenges that the original software couldn't fully comprehend.
I embarked on a year-long reverse engineering journey to:
This project was developed following modern development practices where AI tools assist with code implementation, while all architectural decisions, reverse engineering, and problem solving remain human-driven.
"The AI didn't know my EC addresses were 0x68 for CPU temp and 0xbf for battery - I discovered those through extensive reverse engineering and testing!"
This approach mirrors how professional developers use tools like GitHub Copilot today - as assistants that implement solutions for human-identified problems.
While not the most visually stunning application, it provides practical control over:
cpufrequtils with performance governor for optimal operationThis project is specifically tuned for MSI Modern 15H AI C1MGT-096IT.
If you have a different MSI model, the EC addresses will likely need adjustment.
The core architecture should work - you'll just need to map your specific hardware addresses.
Just to clarify things: I didn’t choose msi_ec or MControlCenter not because I ignored them, but simply because they never worked on my laptop.
My model — MSI Modern 15H AI C1MG-096IT — is still listed as Unimplemented in the official msi_ec compatibility list.
When I originally tested it, loading the module always resulted in:modprobe: ERROR: could not insert 'msi_ec': Operation not supported.
Only today (28/11/25), thanks to a close friend of mine that uses NixOS, he sent me a link as I discovered a GitHub discussion mentioning potential progress for MSI Modern 15H AI C1MG:
🔗 Fix GitHub Post
I genuinely didn’t know about this issue before — that’s my mistake for not checking again sooner.
Still, nothing in that thread confirms support for my exact model, and the module continues to fail on my system.
I also attempted to use MControlCenter, but it failed on startup with: Failed to load ec_sys kernel module
Here’s the original Reddit post I made at the time:
🔗 Failed to load ec_sys kernel module (Reddit Post)
Because neither tool worked for me, I ended up building my own solution out of necessity — not because I wanted to replace or compete with existing projects.
If your laptop is supported by msi_ec or MControlCenter, I absolutely recommend trying those tools first. My project is simply a fallback for unsupported hardware like mine.
The project structure is designed to be adaptable. While I can't provide active support for other models, the code is well-documented for those who want to attempt EC reverse engineering on their own hardware.
After spending a year on this project - through countless nights of reverse engineering, temperature testing, and debugging - I'm finally proud to share this solution with the community.
What started as sheer frustration with my laptop's thermal performance has evolved into a functional tool that actually works.
If you have a different MSI model, the architecture is there - you might just need to modify a few EC addresses. The hard part (understanding how MSI's EC works) is already done.
From one frustrated MSI Linux user to another - I hope this helps you as much as it helped me.
This project includes installation or helper files originally derived from
OpenFreezeCenter, which is licensed under AGPL-3.0.
To maintain license compatibility, this project is distributed under the
GNU AGPL-3.0 License.
All new code (reverse engineering, battery mappings, EC tools, etc.) is original work by Anthonippillai Vincent Nishan.