19

My Dell laptop is experiencing the old problem of the power adapter failing to be recognized by the computer. I know for a fact it is just a break in the data cable in the line, because if I position it just right, the cable is recognized and the computer stops throttling the CPU to 20%. Is there any way that this can be disabled, so that I don't have the fiddle with my power cord every time I plug the computer in?

5
  • What does disabling the data line detection have to do with your CPU throttling?
    – Ramhound
    Dec 27, 2016 at 18:07
  • @Ramhound: wild guess, but probably "on battery" power setting? Not sure why the OP is so quick to blame a data channel though, faulty Power connections on the motherboard are pretty common.
    – Yorik
    Dec 27, 2016 at 18:14
  • I did have a similar problem not long ago, and the OP's diagnosis turned out to be correct in my case. The only real option I had was to buy a new compatible Dell adapter. Dec 27, 2016 at 18:47
  • 2
    @Ramhound Dell computers have a data line in the power brick that tells the laptop what the rating on the power adapter is. Run a quick google search and you can see what I mean. I was wondering if anyone knew how to disable the throttling feature. Dec 27, 2016 at 21:41
  • Possible duplicate of Workaround for Dell "Power supply not recognised" issue
    – user
    Oct 3, 2018 at 3:48

5 Answers 5

24

I've done some investigation into this and found that there's probably no good way to prevent recent Dell laptops from throttling the CPU when it doesn't detect an OEM AC adapter (or one with a broken data pin.)

Disabling SpeedStep or "additional sleep modes" or messing with the power profiles in the BIOS makes no difference. The "Intel Extreme Tuning" utility doesn't seem to support these motherboards as all overclocking options are locked out, but when a non-OEM charger is connected up it reports that CPU thermal throttling is engaged, and CPU-Z shows the FSB multiplier down to 5x and the core voltage at 0.6 volts.

My guess is that perhaps the BIOS is designed to send false motherboard temperature readings to the CPU when a non-OEM adapter is detected, causing it to throttle. It seems Dell was very serious about locking you in to OEM adapters when they designed this system.

Edit: I found a utility that will allow you to disable the unknown adapter throttling, under Windows at least (I don't know yet if the utility will work under Linux, or if there is something similar.) ThrottleStop has a checkbox called "BD PROCHOT" which causes the CPU core voltage and multiplier to reset to normal when disabled. Apparently this is a "2 way signal path to the CPU. It allows other components in a laptop like the motherboard or GPU to send a signal to the CPU which tricks the CPU into thinking it is too hot", confirming that the way this "feature" is implemented by the BIOS is through sending this signal to the CPU when an unknown AC adapter is detected.

6
  • 4
    Would you mind confirming we should be "unchecking" BD-PRODCHOT to fix Dell's crazy CPU slowing on non-OEM powerpacks? It seemed to be ticked when opening TechPowerUp.
    – sradforth
    Sep 10, 2018 at 8:46
  • 4
    @sradforth Hi, I don't have a Dell laptop anymore so unfortunately I don't recall exactly how ThrottleStop operates. But you can find which toggle setting it is easily enough via running the CPU-Z utility for Windows simultaneously; if the processor is throttled it will be obvious from the real-time processor clock speed reported in the main page, it will be stuck at something like 400MHz no matter what you do. When set "correctly" the clock reported will jump up to its nominal rate in response to user activity when not idling, as expected
    – MattyZ
    Sep 11, 2018 at 4:13
  • 3
    Can't upvote this enough! I can confirm, I unticked BD PROCHOT in Throttlestop and I could immediately see in task manager my CPU jumping back up to normal levels after watching it flatline at 30% for the recorded time. So annoying. Thanks again.
    – DeVil
    Nov 8, 2018 at 21:27
  • 2
    ThrottleStop worked. First I unchecked BD PROCHOT and it did not work right away, but then I unchecked SpeedStep and speed returned to normal. Then I checked both, but system was still normal so it fixed somthing. I left BD PROCHOT and after a reboot performance is still normal without ThrottleStop running. Thank you.
    – MichaelE
    Dec 10, 2020 at 14:40
  • 1
    Finally! After 3 dell cases, a hard push to buy a new battery, BD PROCHOT removal solved it. Thanks!
    – MappaM
    Feb 20 at 13:38
7

-Only for Intel-CPUs-

Start by installing MSR-TOOLS in Linux.

sudo apt install msr-tools

You should load msr as a kernel module by the following command

sudo modprobe msr

Read the value from Model Specific Register (MSR) - 0x1FC

sudo rdmsr 0x1FC

Then finally write the value to the Model Specific Register (MSR) - 0x1FC

sudo wrmsr 0x1FC 4004d

There you go! Your CPU runs at maximum !

3
  • Actually not on maximum. It will run with frequency which will be set to register 0x1fc, that's why its better to write value which you will read from register first Jan 3, 2020 at 0:01
  • OMG finally an answer. I was about to try to reverse engineer the crap Intel ME firmware that seems to do this. Thank you - just saved a perfectly good bandoned XPS 9310 from the scrap heap.
    – BoeroBoy
    Dec 18, 2023 at 23:11
  • Note though - this only seems to work with SecureBoot disabeled.
    – BoeroBoy
    Dec 19, 2023 at 0:38
2

Here's an OS-independent program you can compile with a C compiler/GCC (so long as it has an implementation of asprintf available) and set to run automatically at system startup which should disable the throttling on these Intel-based laptops, I've used this successfully on a Dell Inspiron 5558 laptop running Xubuntu with root privilege for the program, with "msrtools" installed and "modprobe msr" in the startup file prior to program execution, to allow reading and writing the MSR-registers from the user side (other OS may require different commands for "const char* cmd" to read/write to processor register location 0x1FC and will likely require root/privileged user access for the executable whatever form that may take)

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

#define BUFSIZE (64)

int get_msr_value(uint64_t* reg_value) {
  const char* cmd = "rdmsr -u 0x1FC";
  char cmd_buf[BUFSIZE];

  FILE* fp;

  if ((fp = popen(cmd, "r")) == NULL) {
    printf("Error opening pipe!\n");
    return -1;
  }

  cmd_buf[strcspn(fgets(cmd_buf, BUFSIZE, fp), "\n")] = 0;
  *reg_value = atoi(cmd_buf);

  if (pclose(fp)) {
    printf("Command not found or exited with error status\n");
    return -1;
  }

  return 0;
}

int main(void) {
  const char* cmd = "wrmsr -a 0x1FC";
  char* concat_cmd;
  int ret;
  uint64_t* reg_value = &(uint64_t){0};

  if ((ret = get_msr_value(reg_value))) {
    return ret;
  }

  printf("Old register value: %lu\n", *reg_value);

  *reg_value = *reg_value & 0xFFFFFFFE;  // clear bit 0

  printf("New register value: %lu\n", *reg_value);

  if (asprintf(&concat_cmd, "%s %i", cmd, *reg_value) == -1)
    return -1;

  printf("Executing: %s\n", concat_cmd);

  system(concat_cmd);
  free(concat_cmd);

  return 0;
}
1
  • In my case this did not help: sudo ./ThrottleStop\n Old register value: 2359388\n New register value: 2359388\n Executing: wrmsr -a 0x1FC 2359388 Jun 18, 2019 at 7:27
1

Here's a Bourne shell equivalent of the C code above:

msr="0x$(sudo rdmsr 0x1FC)"
msr_bd_prochot_disabled="$(printf '0x%x' "$(( ${msr} & 0xFFFFFFFE ))")"
sudo wrmsr 0x1FC "${msr_bd_prochot_disabled}"

echo "Disabled BD PROCHOT; MSR value: ${msr} → ${msr_bd_prochot_disabled}" 

Or as a one-liner:

sudo wrmsr 0x1FC "$(printf '0x%x' "$(( 0x$(sudo rdmsr 0x1FC) & 0xFFFFFFFE ))")"

To run this on every boot, you can add this to /etc/rc.local (without sudo), or to root's crontab as:

@reboot wrmsr 0x1FC "$(printf '0x%x' "$(( 0x$(sudo rdmsr 0x1FC) & 0xFFFFFFFE ))")"
0

'Intel Dynamic platform and thermal framework' is the program that limits your cpu from clocking in normal speed.
Uninstalling Intel Dynamic platform and thermal framework should fix the problem.

3
  • welcome to superuser:- do you have any reference links to go with this answer? Please take a few minutes to read How to Answer or Help center, again welcome to superuser.
    – mic84
    Aug 13, 2018 at 2:11
  • 1
    The throttling isn't Windows-specific it happens when running Linux as well.
    – MattyZ
    Sep 11, 2018 at 4:17
  • I don't know why it's downvoted, but it actually solves the issue! Mar 1, 2023 at 9:38

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .