Reverse engineering LG Gram's "Cooling Mode" control

Reverse engineering LG Gram's "Cooling Mode" control
Photo by Paul Pastourmatzis / Unsplash

It begins

I was frustrated with my LG Gram 16. It's lightweight, it has a large screen, and the battery life is half decent. But it's also the first laptop that made me seriously contemplate switching to a Macbook. Why? Absolutely intolerable thermal throttling.

Seriously, why is it throttling at 70C???

I've tried almost everything, from repasting with fresh Arctic MX-6 thermal paste,  to attempting to adjust the fan curve in the hidden advanced bios only accessible by pressing "Ctrl+Alt+Shift+F7" after entering the BIOS. Nope, didn't work.

The only reprieve was through this proprietary "LG Control Center" software that applies a more aggressive fan curve. In addition, this mode also increases the CPU TDP limit from 15W to 25W. Problem solved, right? Just click "Perf" and we're good to go.

For some reason, this setting is the only setting in the entire software that resets on every boot.

And sometimes, this software just gets stuck on this loading animation...

The Solution

I'm so done with this unreliable proprietary software, just to prevent my 2-year-old laptop from giving me a second-degree burn. And that's when I found a neat open source software called NoteBook FanControl, which contains a binary aptly titled "ec-probe.exe". By running ec-probe.exe --monitor --clearly and changing the modes in LG Control Center, I found that the software is altering the 0xCF EC register. And what do you know! Writing 0x11 to this register reflects the "Silent" cooling mode, 0x00 reflects "Optimal", and 0x22 reflects "Perf".

So now, all I have to do is schedule a new startup task in task scheduler. It executesec-probe.exe write 0xCF 0x22upon every boot, and my hands finally can get some cold and fresh air! 🎉🎉🎉