I have a Thinkpad T470s running Arch Linux, which would get stuck on either 400Mhz or 800Mhz depending on my luck, making my system unusable.
I had tried everything including messing with tlp, cpupower / cpufreq, setting custom governors, etc the kind of overrides which people really recommend. I didn't realize the problem is to do with how Lenovo / Thinkpads, which are known for their repairability, decide to handle third-party batteries. The tl;dr is if it detects an unofficial battery, it raises a processor flag BD_PROCHOT that throttles the CPU. (This does not happen when plugged in).
I have a Thinkpad T470s running Arch Linux, which would get stuck on either 400Mhz or 800Mhz depending on my luck, making my system unusable.
I had tried everything including messing with tlp, cpupower / cpufreq, setting custom governors, etc the kind of overrides which people really recommend. I didn't realize the problem is to do with how Lenovo / Thinkpads, which are known for their repairability, decide to handle third-party batteries. The tl;dr is if it detects an unofficial battery, it raises a processor flag
BD_PROCHOT
that throttles the CPU. (This does not happen when plugged in).My battery details (from
dmidecode
):Anyway, after using this guy, it works just fine! No issues, just making this "issue" to make the solution more searchable for others.
Some other references: