CPU caps at 400 MHz on 12 gen i5-1240P

Got my new Framework laptop (i5-1240P) two weeks ago but just started setting it up since last Friday.

I found some people had already reported this problem and it seemed random:

I believe I’ve tried all solutions mentioned in above threads (except the EMI sticker). None of them works.

I’ve tried Fedora, Ubuntu and Arch. They all have the same problem: once CPU usage spikes the frequency is locked at 400MHz.

An more obvious evidence is that when started running stress test in s-tui, all 16 cores immediately are locked at 400MHz despite the fact my CPU temperature is only around 30 celsius. No matter on AC or battery. And no matter how full the battery is (tested with 100% and 50%).

I’m currently running on Arch with full disk encryption with LUKS2 and BTRFS on top of it.

I customized it with my own G.Skill DDR4 SODIMM F4-3200C22D-32GRS and Samsung 980 1TB NVMe.

Workaround that I’ve tried so far are:

  • [Not work] Kernel 6.0.1.arch2-1
  • [Not work] Kernel 6.0.1.zen2-1
  • [Not work] Kernel 5.15.74-1 lts
  • [Not work] Use default intel_pstate driver
  • [Not work] Use intel_pstate=no_hwp
  • [Not work] Use intel_pstate=passive
  • [Not work] cpupower frequency-set -g performance
  • [Not work] cpupower frequency-set -d 2GHz and cpupower frequency-set -u 2GHz
  • [Not work] Configure /etc/tlp.conf with
CPU_ENERGY_PERF_POLICY_ON_AC=balance_performance
CPU_ENERGY_PERF_POLICY_ON_BAT=balance_performance
CPU_MIN_PREF_ON_AC=0
CPU_MAX_PREF_ON_AC=100
CPU_MIN_PREF_ON_BAT=0
CPU_MIN_PREF_ON_BAT=100
  • [Not work] Some other random CPU frequency tweaks with tlp and cpupower.
  • [Not work] Install throttled

UEFI version is HFW30.03.05.

Only solution that I haven’t tried is to adjust EMI sticker. People who showed the picture of the board seemed a bit different from mine so I haven’t touched it yet (Plus I don’t want to touch hardware on a new laptop unless I have to).

I’m desperate to have a solution on this because with this frequency lock I can’t even watch YouTube video smoothly.

Otherwise I guess I have to open a ticket for customer service.

1 Like

Reach out to Framework support.

2 Likes

@Second_Coming Thanks for replying. I’ve opened a ticket and sent it to the support, but still curious if this is an issue of the hardware itself or just Linux’s problem.

I have a Batch 4 1240P. While I have seen the CPU throttling when I am doing long compiles (and sometimes 400MHz), it only happens when the Core & package temperatures are 90+ for sustained period of time. Doesn’t really sound like a Linux issue to me. Just to rule it out, are your fans kicking in and are they as loud as they can be?

No. My fans was not even kicking in. The CPU temperature was just around 30 Celsius. I did a cold start and run the stress test immediately after logging (without desktop environment). Result is always the same: once CPU is loaded all the cores are throttled at 400 MHz regardless temperature and power status.

That’s odd. Any chance the fans aren’t plugged in?

I’m pretty sure the fans are plugged in. :slightly_frowning_face:

Can you check prochot status to see if it is toggling rapidly?
Does it go away if charging is plugged/unplugged?
Does it go away if you unplug any non usb-c expansion cards?

Maybe try Windows on it to see how it reacts with a different driver infrastructure?

You can download the USB media easy enough. For the sake of half an hour…

This is what I did.

Restarted my system without anything running (not even desktop environment).

Monitoring BD PROCHOT bit constantly in one terminal.

$ while true; do echo -----; sudo rdmsr --all 0x1FC; sleep 1; done

-----
e4005b
e4005b
e4005b
e4005b
e4005b
e4005b
e4005b
e4005b
e4005b
e4005b
e4005b
e4005b
e4005b
e4005b
e4005b
e4005b
...

Looks like it was set.
In another terminal

$ sudo wrmsr --all 0x1FC e4005a

The bits became:

e00001
e00001
e00001
e00001
e00001
e00001
e00001
e00001
e00001
e00001
e00001
e00001
e00001
e00001
e00001
e00001

Seemed like the bit[0] was not set so I tried setting it constantly.

$ while true; do sudo wrmsr --all 0x1FC e00000; done

But the output still showed the last bit was 1.

Despite that, I ran s-tui for a stress test. All cores were throttled to 400 MHz once I started the test.

I got the same suggestions from Framework support. They didn’t work unfortunately.

I don’t use Windows. One of the reason that makes me decide to buy this laptop is it supports for Linux. If it only works on Windows then it’s pointless to me.

Yeah I get that.

But if it works fine with Windows then you know it’s a Linux issue (you need another distro dude as your linux brothers would say) and not hardware faults.

If it doesn’t work with Windows either then you know its hardware and a replacement may well work with Linux just fine.

Just a bit of extra testing, that’s all.

Right but there is something that I’m concerning.

  1. I have allocated the whole disk for Linux. If I’m going to test Windows I have to wipe it out. It’s very time consuming to backup and restore a big chunk of data. And I don’t have spare disk for testing at this time.
  2. If the latest Linux kernel has issues to support Framework hardware then there should be a lot complains. However, I only see a few random reports.
  3. I’ve tested the distros that are listed on Framework compatible list like Fedora 36 and Ubuntu 22.04. I saw the same problem so it should not be a distro issue.
  4. I doubt it might be something with the EMI stickers. Some people said they trimmed it and the issue was gone. However, they were using an old batch. I got mine early this month and the place where the EMI stickers are looks different than theirs. Framework support also asked me to send some pictures of the EMI stickers. I guess they must know there is something wrong with it.

After contacting the Framework support team, I ended up needing a main board replacement, they sent me the new one, as well as a paid return label for my old main board. The new one runs perfectly fine.

2 Likes

I got a new motherboard replacement, too. After swapping the new one, I can feel a significant boost immediately on startup. Full disk decryption takes almost no time (it took a few seconds before). And CPU stress test also looks good.
I can finally enjoy my new laptop now. :smiley:
PS: The replacement experience was just fantastic. I didn’t feel it that easy by watching videos until personally took hands on it. Design-wise is top tier!

4 Likes

On 11th gen it happens from time to time for me as well, I have these lines saved to unlock frequency:

sudo rmmod processor_thermal_device
sudo rmmod processor_thermal_rapl
sudo rmmod intel_rapl_common
sudo rmmod intel_powerclamp

sudo modprobe intel_powerclamp
sudo modprobe intel_rapl_common
sudo modprobe processor_thermal_rapl
sudo modprobe processor_thermal_device
sudo modprobe intel_rapl_msr

Can’t tell you how it works nor what it does, but it works :sparkles:

Sounds more like a thermal issue from you. But thanks for sharing this tip. I’ll save it in case I need it one day lol