aarron-lee / SimpleDeckyTDP

(Formerly Simple) TDP plugin for alternative AMD PC handhelds
Other
34 stars 5 forks source link

Not an issue, Question about the Lenovo Custom TDP Toggle #25

Open WetBrix opened 4 months ago

WetBrix commented 4 months ago

Curious about the function of the LeGo custom TDP toggle. What’s the benefit of having it on vs off? With it enabled, does adjusting the TDP within the plugin mimic the custom TDP adjustment in LegionSpace QAM (with the firmware level fan adjustment)? (Sorry fairly new to Linux, using the Bazzite distro)

aarron-lee commented 4 months ago

With it enabled, does adjusting the TDP within the plugin mimic the custom TDP adjustment in LegionSpace QAM?

Not quite. So the Lenovo bios actually exposes a way to set the FAST, SLOW, and STAPM limits for the AMD APU. These are the values you'd want to change for what end users basically call "TDP control".

The Lenovo bios has all the required functionality, but LegionSpace itself was bugged and was only setting the STAPM limit. This is why Custom TDP was "broken" in LegionSpace. While LegionSpace set the correct STAPM, it failed to adjust FAST and SLOW limits. That, and the STT mode in the bios automatically adjusts STAPM to always eventually equal the FAST limit.

The Lenovo Custom TDP toggle in the SimpleDeckyTDP plugin enables setting all three values via the WMI methods that the LGO bios exposes, so it fixes Custom TDP control in both STT and STAMP modes.

However, there's currently a new major bug where after you enable a custom fan curve, the Lenovo bios effectively stops respecting any custom TDP values you send it. It will acknowledge the commands, and even seemingly run successfully, but the underlying power consumption doesn't change.

Currently there's a workaround in place that always uses ryzenadj, even with Lenovo Custom TDP enabled. ryzenadj lets you manipulate + view these same values, and is what's used by most 3rd party tools like Handheld Companion, etc.

aarron-lee commented 4 months ago

However, there's currently a new major bug where after you enable a custom fan curve, the Lenovo bios effectively stops respecting any custom TDP values you send it. It will acknowledge the commands, and even seemingly run successfully, but the underlying power consumption doesn't change.

Note that this bug is a problem at the bios level, it affects both Windows and Linux. I talked to some beta testers for the LGO, and they've relayed the message to Lenovo about the bug. So ideally, they'll issue a bios with a bugfix for this issue.

aarron-lee commented 4 months ago

good news, the latest beta bios from Lenovo seems to fix the bug

https://www.reddit.com/r/LegionGo/comments/1ap6ub2/beta_bios_291_for_custom_tdp/

WetBrix commented 4 months ago

good news, the latest beta bios from Lenovo seems to fix the bug

https://www.reddit.com/r/LegionGo/comments/1ap6ub2/beta_bios_291_for_custom_tdp/

Sweet! Looking forward to the Public release. Also did I read that correctly that the custom TDP toggle works in both STT and STAMP mode? The LGO Bazzite guide I followed specifically switches the bios to stamp mode from STT ‘for compatibility’ though I’ve seen Lgo’s like this Nobara build using STT mode features seemingly without issue (CPU boost + ‘old’ SMT in image) Am I cool to switch it back? (Hope this isn’t beyond the scope of this thread)

And I’m sure you’re already aware, but thanks for your work in helping to achieve full Bazzite support for the LGO 🙏

aarron-lee commented 4 months ago

Also did I read that correctly that the custom TDP toggle works in both STT and STAMP mode?

correct, it wasn't known at the time that the Lenovo custom TDP methods worked on STT. You should be able to safely use STT with the custom TDP toggle in the plugin.

aarron-lee commented 4 months ago

oh, one thing to clarify. the Custom TDP toggle in SimpleDeckyTDP will work with STT mode.

LegionSpace, on Windows, has not yet been updated to properly set Custom TDP, so it will NOT work with STT mode.

If you're dual booting Linux + Windows at all, you'll want STAMP mode for Windows compatibility, or alternatively wait for LegionSpace to get updated to properly set TDPs