Ryzen 4800H stuck at 1.4 GHz on battery - Normal operation only when plugged in.

Iut am having a severe issue with my 4800H. On boot. the cpu is limiting all cores to 1.4 GHz. only when the charging cable is plugged in does it go to its normal clocks and will bost as high as 4.2. I’d like to be able to take this on the road and do what i need, but its unbearably slow. I hear some people with ryzens have issues with the clocks getting limited but those people dont seem to have working solutions except with zenstates, which I have no idea how to use or what the proper config would be for my processor - and theres a warning that it can cause permanent damage to your CPU if you use it incorrectly.

any help here? I used to have a lenovo and could easily use cupower to set it to performance mode even while on battery, but cpupower doesnt seem to work with Rzen/Renoir chips… I have tried ryzenadj, which seems to limit the CPU fequency to 2.5GHz, not much of an improvement…

I’m really stuck here :/. any help is appreciated.

Tune power consumption with “tlp” package or try to run laptop with this package is being deleted.

How exactly do I “tune” the power consumption via TLP?

Did you check

man tlp

?

I mean which tunables would you alter in the config? I tried everything and also removing tlp completely, the problem persists.

I’m afraid I don’t know, I use mostly desktops here, seldom laptops.

Can you force the CPU clock speeds with a UEFI/BIOS setting?

  • Modern BIOS seems to be quite powerful in this area …

No, the BIOS is really unhelpful. does not have that many options let alone controlling the CPU clocks.

You should find the tlp config at /etc/default/tlp
The file is self-explaining, but you might check further at http://linrunner.de/en/tlp/docs/tlp-configuration.html
By default processor parameters are disabled but better checking for instance:

#CPU_SCALING_GOVERNOR_ON_BAT=powersave
#CPU_SCALING_MAX_FREQ_ON_BAT=0

yes these are all disabled… but looking through the config file, it appears to mention intel quite a bit… is TLP intel specific?

sudo tlp-stat -p reports the following for each core:

/sys/devices/system/cpu/cpu10/cpufreq/scaling_driver = acpi-cpufreq
/sys/devices/system/cpu/cpu10/cpufreq/scaling_governor = performance
/sys/devices/system/cpu/cpu10/cpufreq/scaling_available_governors = performance schedutil
/sys/devices/system/cpu/cpu10/cpufreq/scaling_min_freq = 1400000 [kHz]
/sys/devices/system/cpu/cpu10/cpufreq/scaling_max_freq = 2900000 [kHz]
/sys/devices/system/cpu/cpu10/cpufreq/scaling_available_frequencies = 2900000 1700000 1400000 [kHz]

I know the cpu can go up to 4.2 (It does when plugged into power) but it only will go up to 2.5GHz on battery, which makes for dreadful application star times. if stress tested with the stress command, after 10 seconds it will go up to 2.9GHz but never over.

I’ve never ever had this problem with an intel processor before. do these details offer any clarity as to what the issue could be?

No, TLP is not Intel specific but as you can see at https://www.kernel.org/doc/html/v5.10/admin-guide/pm/index.html Intel contributed much of the kernel power management code, so current AMD processors rely only on the generic acpi-cpufreq driver.
There used to be AMD specific drivers like powernow-k8 but they applied to Athlon and similar processors and don’t work with Ryzen AFAIK.

sudo tlp-stat -p reports the following for each core:

/sys/devices/system/cpu/cpu10/cpufreq/scaling_driver = acpi-cpufreq
/sys/devices/system/cpu/cpu10/cpufreq/scaling_governor = performance
/sys/devices/system/cpu/cpu10/cpufreq/scaling_available_governors = performance schedutil
/sys/devices/system/cpu/cpu10/cpufreq/scaling_min_freq = 1400000 [kHz]
/sys/devices/system/cpu/cpu10/cpufreq/scaling_max_freq = 2900000 [kHz]
/sys/devices/system/cpu/cpu10/cpufreq/scaling_available_frequencies = 2900000 1700000 1400000 [kHz]

I know the cpu can go up to 4.2 (It does when plugged into power) but it only will go up to 2.5GHz on battery, which makes for dreadful application star times. if stress tested with the stress command, after 10 seconds it will go up to 2.9GHz but never over.

I’ve never ever had this problem with an intel processor before. do these details offer any clarity as to what the issue could be?

The acpi-cpufreq driver relies on information supplied in the ACPI code in your firmware/BIOS and that might include different limits depending on the power supply circuit etc. so the output you posted doesn’t look strange to me.
Maybe Forum members with more experience with Ryzen can be more specific, but you might try the following meanwhile:

  • look if an updated BIOS or Firmware is available for your model (reportedly some vendors rushed Ryzens to market with incomplete or not tuned firmware);
  • try to switch TLP_PERSISTENT_DEFAULT=1 in /etc/default/tlp so that it reads:
# Operation mode when no power supply can be detected: AC, BAT.
# Concerns some desktop and embedded hardware only.
TLP_DEFAULT_MODE=AC

# Operation mode select: 0=depend on power source, 1=always use TLP_DEFAULT_MODE
# Hint: use in conjunction with TLP_DEFAULT_MODE=BAT for BAT settings on AC.
TLP_PERSISTENT_DEFAULT=1

to fake AC behaviour even when you are on battery, but be aware that the ACPI code might be wiser and disregard that, or the power supply might not be able to supply the full voltage when on battery…

I have done this. No configuration in the TLP conf seems to have any effect on the actual clocks. any other mechanism I can look for?

  1. Try to update BIOS.

  2. Possibly battery of your laptop is too weak to provide needed power.
    Replace battery with compatible and more powerful one.
    You may tweak BIOS firmware to get needed frequencies (with a more powerful battery).

i have an very similar CPU from AMD for my laptop and it is most likely an bios misconfiguration with power management idle control also sometime is the culprit for an issue very close to this one on other ubuntu based distros but never have encountered it on an rpm based distro