Getting more from your Laptop with the help of Undervolting

Mrunal Badole
tech@iiit-gwalior
Published in
15 min readNov 30, 2021

Are you a Laptop user and use it on battery power, and have been facing battery issues while doing tasks?
Or let’s say you are a Multicore user and are facing some Heating issues even when you try to give a good airflow to your system?
Or Maybe, you have experienced some performance drops in your machine and want to resolve that.
If you are known to at least one of the issues mentioned above, then I’d like to introduce you to a term named Undervolt which will be a good start for you to try to resolve those issues, and even if you are not facing problems, You’ll get to know what it is, and why should you consider it at least once

What does Undervolt(ing) Mean?

So if the word itself doesn't give you a general idea, undervolting means Supplying lower voltages which were “excess” anyways. Basically, what we’ll do is we won't allow our CPU to access Higher voltages. According to the electrical power equation, Power = Current x Voltage.
We are reducing one factor so eventually, the power drawn would be less.

One thing you should note is, ONLY lowering the power draw won’t make your system perform better, As if you provide too low power to your CPU it won’t be able to perform tasks to its limit. So we have to lower our voltage only enough so that we don't compromise our CPU performance. We’ll see later how exactly we will achieve this.

NOTE: If you think about what happens if you Overvolt, the opposite will happen, i.e more temperatures, more power draw, and bad performance in the end, so I won't recommend you doing that even for fun purposes.

NOTE: Underclocking is a different thing, In that you Lower the operating Clocks of your CPU, That means it’ll require less power , But deeply impact your performance. Undervolting doesn’t affect your performance if you do it right.

Why would you need Undervolt?

So now we know that our CPU will draw less power for the same performance, but you might be wondering, why do we need to do this.
See, If we can perform the same task with lower power, then why waste the extra power, so that will result in better battery life for your mobile CPU device (Notebooks and laptops).
Less power also means less heat output, so ultimately it will reduce the working temperature of your device. Lower temperatures help in a lot of ways to state few, we first have Thermal Throttle, which Means your CPU will itself reduce its clock speeds (basically performance) when it reaches a certain hot-spot set by the manufacturer. Though nowadays working temperatures of a CPU are set pretty high around 100s C, that doesn't mean we SHOULD use it at that temperature as most of the electrical components might degrade over time due to overheating. Heat is a silent killer for electronic parts.
Secondly, one throttle point I personally noticed in various laptop manufactures is the VRM (i.e Voltage Regulator Module, this module is used to control voltages given to a CPU, you don’t worry about what this is for now) Overheat. This too lowers the Power supplied to the CPU significantly in a split of a second means performance loss when overheated. We don't have a particular way to solve this other than lowering chassis temperature, which we will achieve by undervolting.

Requirements and Risks Associated

AMD CPUs, in particular, are efficient in these matters. They already are optimized to be used in lower voltages and power, so AMD users out there, Good thing for you!
Whereas Intel CPUs have these issues of consuming higher power than required. So the guide I'll be giving below would only work for Intel users, And for OS, it'll be Windows. Other OS users can understand what we are going to do, so basically they know what they need to do in the undervolting software of their particular OS.

Every CPU has its own capability, so we’ll try and test things. While testing it may happen that your PC may crash or give you a BSOD (Blue Screen of Death! (don’t worry, it’s not as scary as it sounds xd)) whenever we undervolt too much. You need not worry about such situations because we also need to check stability by testing so, the max you’ll experience would be just a few crashes, just a simple reboot will make everything as default and you can start again. And make sure you save all your files before working on this.
As for Risk, I haven't seen any device get hurt by a software undervolt, so it’ll be safe as long as you don’t do something you don’t know about.

NOTE: Due to Security issue caused by Plundervolt (learn more) Intel disabled the ability of user to modify their CPUs voltages. But there can be way around it, Learn more at….

Getting Started with the Softwares.

There are two most renowned software that helps us undervolt, which are Intel’s own Intel XTU and ThrottleStop (TS in short) by TechPowerUp

I’d recommend you use TS for two main reasons, firstly, unlike XTU, TS doesn't apply/write undervolt values to your device's BIOS (For now only know, you shouldn’t mess with BIOS if you don't know about it), so it’s risk-free.
Secondly, it is a very handy tool if you ever like to monitor your CPU’s statistics on a small scale.

You can download ThrottleStop from here. I’d recommend you go with the latest stable version. Select any server you are comfortable with downloading. It will be a ZIP File as this software is portable software without any installation. So you can extract the program folder anywhere you want, as long as it won’t get accidentally deleted.
Now that we are ready with the knowledge and software, let's make practical use of it.

Getting Familiar with ThrottleStop

Once you open up the application, you’ll be presented with what is shown below, I’ll give u a brief idea about things we would need to look out for.

ThrottleStop

The top left box is to select different profiles. We can have different settings for 4 different profiles, in which we’ll be needing only 2, One for AC power (Profile 1) and the other for battery usage(Profile 4).

Red box in the left is of Speed Shift, which is a technology used by Intel to quickly change the clock speed of the CPU depending on the load (learn more). This works on the scale of 0–255, with 0 being full clock speeds with Turbo Boost. and 255 being the lowest base clock speeds. You should enable that for smooth performance and keep a value between 25 to 100 as it suits you for your workloads at AC Profile and around 150 to 200 in battery profile if you want more from your battery, and then click Save.

NOTE: SpeedStep , which is below SpeedShift Option, work Similar to SpeedShift but was introduced in older generation of CPU. If you have option for SpeedShift, I’d recommend you Disable SpeedStep and Only use SpeedShift.

NOTE: Disable turbo option disables your CPU to run on higher peak Clock Speeds. (learn more) I would not recommend disabling it if you don’t wanna compromise performance.

The green highlighted box in the top right part is the place where you can see at what clock speeds your CPU is running. It can vary depending upon how heavy a task you do and also on your CPU. You can learn more about your CPU online as TS also provides the name of your CPU in the top right box’s heading.

The blue highlighted box gives the information about the temperatures. Left side gives the average temp. Whereas right side gives the maximum temp your CPU peaked, in the entire duration of you using TS/Keeping it open in background.

Orange highlighted box gives us the information about the power consumption by our CPU. This value varies from CPU to CPU so you should have an idea about how much power your CPU should consume, from the internet.
We will also check ourselves how much does it actually consumes later on, but you should know this as it will help you get an idea about how much of an improvement you’re getting.

The 2-D array in middle gives information about each and individual thread of your CPU. (So logically It’ll have as many rows as Threads in your CPU). It highlights how much is a thread is being used, its own temperature, and max temp. and order information. (Learn more about what a Thread is)

NOTE: Limits button in the middle opens up a new window that basically informs us about what factors are/were Limiting our CPU. In simple words, It shows us What made the performance of our CPU throttle. There can be many factors, Stating few, Power Limits(PL1->long term power limit, and PL2-> short term power limit, learn more) (known as Power Limit throttling), and then Thermal throttling.
If the bar is red then it means its hitting that limit right now, if it is yellow, means it hit that limit sometime in the past once/multiple time. You don’t need to care about any other limit for now.

TS Bench
TS Bench

TS Bench is a small benchmark tool built inside TS itself. We will use this to check our stability. You don’t need to worry about priority, threads used, size, and MHz. We will do a test with default values just to make sure our system fails it or passes it.
The empty table below stores and displays the highest score you got in different settings of the test in a grid style view.
As I said, we won’t need this.
As We are just checking whether our system is stable or not, and we do not care about the score.

So before we begin undervolting, let's do an initial benchmark to get an idea about how our system is performing. Simply hit Start and wait for it to complete. (It does some CPU intensive tasks in the background that you don’t need to worry about, that makes our CPU under full load)
Make sure you have good airflow so your system doesn’t need thermal throttle due to lack of cooling and we can get precise performance stats.
Take a note of the PKG Power and Avg Temperature. We will compare our future test based on these values.

Finally, let's get to Undervolting

So, for messing with the voltages, we need to open the FIVR option by clicking its button, which can be found below the limits button. FIVR stands for Fully Integrated Voltage Regulator, for anyone who’s wondering about that.

FIVR Controls
FIVR Control

Red underlined box is for selecting different profiles. As discussed above we will be using profiles 1 and 4 for power and battery respectively. For now, let's just edit and learn on profile 1 itself.

Advance Note:

Yellow underlined part named as Turbo Ratio Limits, is an option where you can manually set the clock speed of your CPU, depending on the number of cores active at that moment. Many advance guides may or may not guide you to change this, but I’d recommend you don’t, until you know what your CPU’s Capabilities are.

Note: There can be a situation where the middle part i.e FIVR Control and CPU Core Voltage are greyed out and unaccessible to you, with a heading as ‘ Locked ’
This can be due to the above mentioned security issue, and Intel might have locked it by a recent firmware upgrade. But no worries, there are workarounds for this too, Which I have discussed on….

Green underlined box is FIVR Control. Here you can select which different components of the CPU you want to change voltage off. Don’t get confused by the names. Just know this, CPU Core and CPU Cache is the part of the CPU and Intel GPU and iGPU Unslice are parts of the Integrated Intel GPU (If you have any)

Blue underlined box is the actual place where we will be modifying voltages for our CPU.

To begin, select CPU Core, and then check this box named Unlock Adjustable Voltage
The name clears out what exactly it means.
Let the radio button be on adaptive as CPUs nowadays use adaptive voltages.

We don’t need to touch/play with the voltage slider. Instead, we will be using the Offset Voltage.

This is because we need to differ the voltage by this amount, that’ll be given to the CPU originally. Now our main motive is to provide it with less voltage, we need to set Negative Values for the Offset.

Note: We cannot determine exactly what amount of voltage a modern CPU needs, as it varies adaptively, BUT, we can allow, or in other words, tell our CPU to consume ‘x’ amount of volt lower than whatever it is consuming at the moment. That ‘x’ is what offset means here. This offset value is a common term while undervolting and its value is in the range of mili-volts (mV). Each and every CPU has it’s own limit of offset that it can handle, which you can learn more about on the internet, and apply those values, but with the help of this guide, I will teach you how you can find your own offsets which are stable on your system.

We will start with a small value of -10mV, you can use right-left arrow keys OR the side buttons given, to make precise adjustments. After you have set that, head over to the FIVR Control box and select CPU Cache and apply the same offset values!

This is important, that you use the same offset values for Core and Cache, other wise the undervolt won’t function properly and you can have issue in the future.

After that, click Ok in the bottom right corner. You’ll notice the FIVR tab was closed automatically, You can re-enter this tab and see in the Top right 2-D table if your offset was applied or not. (As long as you have the ability to adjust your offset, It will be applied, don't worry)
Now it is time to test this offset. Open up TS Bench, and click start with default values, and let the test complete. Keep track of PKG power and Temp to compare it with our initial test.

Successful Test

If your test was completed successfully, without errors, give yourself a pat on your back, you have successfully adjusted voltages on your CPU. But it doesn't end here; as this was just a small value. We need to check what’s the min offset our CPU can work on. So for this, decrease the offset value by another 10, making it -20mV, Hit Ok, and perform the test. Repeat this procedure of decreasing the value by 10, until you get an error in your TS Bench.

Test with Error

Sometimes, instead, it can happen that your PC may crash while Testing, Well…that means the value you were testing was not stable. Don’t panic, as you can reboot your system, and everything will be as it was before testing. You can just reopen TS after reboot and start again. You need to remember the values that failed, so we will begin our test from that.

Whenever any of the above cases happen, we will not decrease in the multiple of 10s now but instead will decrease single values to get a precise result.

Let us say, my system failed a test for -140mV, but -130mV was very stable. So, now I will decrease the offset from 130 one by one using the arrow buttons and test each and every value between this range to get the best offset value.

Best Values also depends upon your system and your priorities, if you get a value that is resulting in fewer temperatures than that of the minimum stable offset your CPU can handle, you can even use that. (if lower temperature is your main concern)

Note: Make Sure every time you edit core voltage you also change offset for CPU Cache with the same value.

The offset values aren’t exactly in multiples of 10 or 5, but you can use arrow buttons. By clicking them 10 times to test values while testing for range.
The general idea is simple, we first check values with big differences to get an idea of the range our offset lies in, and from there we check one value by one. It is a bit of a hard work, but trust me, it’s worth it.

So after a lot of tries and maybe system restart you might’ve found a good working and stable offset value. Let me remind you, we were also taking note of the PKG Power and Temperatures. Well, now is the time to compare the results from the initial test and test with your stable offset values. You might’ve noticed a power consumption change of about 5W or 10W or maybe less, and also a temperature difference of CPU Cores of 5C or 10C or maybe even less! (I got a temperature difference of 15C and 10W less power consumption!)

Now that we have found a stable offset for your CPU, we also can tune the performance of the Integrated Graphics that come with your Intel Chips. The process is similar, but you don't have to test it as I will be giving you a decent offset value that works very well in almost all Intel Integrated GPU.
Select Intel GPU from the FIVR Control, and In the voltage offset, set a value of -40mV. Now, as CPU Core and CPU Cache need to have the same offset values, Intel GPU and iGPU Unslice also need to have the same offset values. So select iGPU Unslice from the FIVR Control box and apply the same -40mV offset. Now click Ok from the bottom right part.

Congratulations! You have finally found a sweet spot of an offset for your CPU to work on without compromising performance! With the added benefit of less system temperatures.
Now to make this helpful in increasing your battery life, We need to apply the same values of Offset we found after a lot of testing, in Profile 4, the one we are going to use when were will be on battery power.

So open up the FIVR tab again, now, from the top left box, select the 4th radio button, i.e Profile 4. Apply the found offset voltage for CPU core, CPU Cache, Intel GPU, and iGPU Unslice. Hit save from the bottom right part and You are good to go.

Now that we have successfully undervolted and are happy with our CPU’s performance, let's set some needed settings of TS. Click the Options button in the lower left, you’ll be presented with a screen as below

The main parts that you’ll be needing are already highlighted by me.

Green box Allows you to name the 4 different profiles you are allowed to make in TS.

Red box has the option to set a particular profile active when you are plugged into AC Power, OR when you are using Battery Power. From the start, I told you that our profile one will be of AC Power, so you can type in 1 in the AC Profile section after you tick the checkbox beside it. Similarly, check the Battery Profile and type in 4, as we’ve set our SpeedShift EPP values according to our use case in these respective profiles.

The blue box has some important settings that need to be looked upon. Check on battery monitoring as it will give you information about your battery percentage on TS main screen itself.
And, check on Minimize on Close option. This is Important, as you don't want to exit TS completely, else you will lose the offset you applied to your CPU. So whenever you close TS it will be minimized into the Windows System tray. Leave all the rest options as default for now, or until you know more about them….

Note: ThrottleStop is a software base Unvervolting application, so in order for your CPU to read the offset values we provided, TS must be opened in background! And so we set it to minimize rather than completely closing it while exiting.

This raises a question, What about the time you Boot your system, will Throttlestop open automatically and be open in the background the whole time? (In order for your Undervolt to work)
The Answer is NO.
ThrottleStop is third-party software that requires admin privileges, So we cannot simply add this program as a Startup Program in windows. So you have to manually open up ThrottleStop every time you sign out of windows or Reboot/Boot your system up.

Note: There is a way you can set a particular app that requires admin permissions, to run as a Start-up application. It can be done with the help of Windows Task Scheduler (learn more)

Well, now you have a CPU that is comparatively more efficient!
Works under a good and acceptable temperature!
AND we’re also saving battery power while doing heavy tasks and not plugged into AC Power!
You also learned a little more about CPU and their power consumption, and a great tool that will be helpful to you in the future too when you learn more about it and want to fine-tune your system’s performance, even more, making it reach its limit!

Isn’t it just satisfying, to get more from the system you already had and have a completely new experience!…..

--

--