I was able to install and dual boot Windows 7 and Ubuntu 13.04 (both x64) just a while ago. As a newbie in Ubuntu, I'm still searching for ways to install my games because I'm planning to make Ubuntu my main OS because it's like really cool and smooth and uses less resources.

So, I was wondering if there are softwares that are similar to ThrottleStop. I need it because my Laptop throttles upon reaching 75C (processor). I play heavy games so, I need to stop it from throttling. Of course I'm not trying to kill my laptop. I adjust my multiplier so that it wont reach as much as 95C. Nothing much I can do. I'm just making the most out of my Laptop since I can't buy a new one yet. I don't have a job :| I'm still just a student.

Anyways, Is there any software similar to ThrottleStop so that I can adjust the multiplier and disable throttling.


Solution 1:

ThrottleStop writes data to the multiplier request register. This is MSR 0x199. You should be able to write a simple batch file that writes the same data to this register when you are using Linux.

You can use the MSR Tool to see what values ThrottleStop is writing to this register.

http://www.mediafire.com/download/myjkxzkzzmd/MSR.zip

It lets you read and write data to various CPU registers in Windows. Doing the same thing should be doable in Linux. Setting a multiplier in MSR 0x199 that is less than the default maximum should allow you to slow your CPU down which will reduce how much heat it puts out. That's all the ThrottleStop - Set Multiplier feature does. Clock modulation is hiding in MSR 0x19A. Using that register is useful on the 2nd and 3rd Gen Core i CPUs when your goal is to limit heat output.

Solution 2:

MSR 0x1FC - bit[0] is where BD PROCHOT is hiding.

You would need to write some simple code to read this register, clear only that one bit and then write the results back to the same 0x1FC register.

Here is some C/C++ code that ThrottleStop uses to turn off BD PROCHOT

DWORD dwEAX, dwEDX;

Readmsr( 0x1FC, &dwEAX, &dwEDX );

// save all of the original bits in that register and only clear bit[0]

dwEAX = dwEAX & 0xFFFFFFFE;  

Writemsr( 0x1FC, dwEAX, dwEDX );

I don't ever use Linux but I know writing some simple code like this should not be too difficult. To turn BD PROCHOT back on you would just replace the middle line in that code with:

dwEAX = dwEAX | 0x1;
  • where that | line means "OR"

Send me an email if you need some more help. The address is in the About... box of ThrottleStop or RealTemp.

Edit: The WinRing0 software I am using has dwEAX and dwEDX reversed in that routine. dwEDX refers to the high 32 bits in that MSR and dwEAX contains the lower 32 bits.

Solution 3:

I came across the same problem and I found a solution which works for me.
You'll have to download cpufrequtils.
Run every command in Terminal: Note: The '-c' argument is for core number. If your CPU has four cores, run the given command for 0 through 3 and if your CPU has eight cores, then run the command for 0 through 7.

sudo cpufreq-set -c 0 -g performance
sudo cpufreq-set -c 1 -g performance
sudo cpufreq-set -c 2 -g performance
sudo cpufreq-set -c 3 -g performance
sudo cpufreq-set -c XX -g performance
sudo modprobe msr
sudo rdmsr 0x1FC

The XX here is the number of your core. After this step you'll get an output which you need to note down and then use in the next command.

sudo wrmsr 0x1FC XXXXX

Here, XXXXX is the output from the previous command execution.
Finally, to check if it has worked, run:

cpufreq-info

Solution 4:

I found this utility (https://github.com/georgewhewell/undervolt) to be a very useful means of undervolting my i7-7700HQ in ubuntu. You need Python and Python-PIP but it's otherwise pretty straightforward.

Solution 5:

There is now a new cmdline utility for linux with some features in it. It is available here:

https://github.com/agoose77/throttlestop

It still does not have everything and is pretty basic overall when compared to windows throttlestop. A slow progress, but still is going to be helpful for improving the support gradually. (as of may 2019 - we are not there yet!)