How to undervolt Intel i-series CPU in Linux
A guide to undervolt Intel CPU in Linux.
Disclaimer: This process worked for me perfectly, please follow the instructions properly otherwise it might no work for you and may leave an impact to your hardware.
Try it on your own risk!
Overheating is a serious issue in gaming laptops which leads to low performance or may cause laptop to shutdown especially during gaming sessions which consumes CPU and GPU in huge amount.
In my case: When I purchased my laptop it was working fine but when I started playing games on it, it was facing thermal throttling (reducing CPU or GPU freq. to reduce the amount of heat which is producing). So I reached about this issue and find a solution which is Under-volt the CPU.
Laptop Specifications
- Model — Dell Inspiron 5577
- CPU — Core i7 7700HQ @ 2.8GHz (Turbo boost @ 3.8 GHz)
- RAM — 8 GB @ 2400 MHz
- GPU — Nvidia GTX 1050 4 GB
- Storage — Western Digital Blue 500 GB NVMe PCIe M.2 SSD
Step — 1: Install pip package
pip
is a package manager for python from where we can download packages.
- Open terminal by pressing CTRL + ALT + T.
- Type the following command:
sudo apt install python3-pip
To check whether the pip
is installed or not just paste the following command in the terminal:
pip3 --version
Expected Output:
pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)
Now, we have successfully installed pip
our system.
Step — 2 Install undervolt package
undervolt is a program for undervolting Intel CPUs under Linux. It works in a similar manner to the Windows program ThrottleStop (i.e, MSR 0x150).
You can also checkout their GitHub repository: link
Install the undervolt package
sudo pip3 install undervolt
To check whether the undervolt package is installed or not just paste the following command in the terminal:
pip3 show undervolt
Expected Output:
Name: undervolt
Version: 0.3.0
Summary: Undervolt Intel CPUs under Linux
Home-page: http://github.com/georgewhewell/undervolt
Author: George Whewell
Author-email: georgerw@gmail.com
License: GPL
Location: /home/saransh/.local/lib/python3.8/site-packages
Requires:
Required-by:
Now, we have successfully installed undervolt package.
Step — 3: Add Python installed package path to PATH environment variable
The PATH variable is an environment variable which contains a list of paths that UNIX will search of executable command when we run a command.
To add path in PATH variable, follow the given steps:
- Open terminal and type
sudo nano /etc/environment
- Now append
:home/<user>/.local/bin
in the PATH variable. - Type
source /etc/environment
- Reopen the terminal.
Now type echo $PATH
and you should get something like this:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/saransh/.local/bin"
To check whether the undervolt command is working or not just paste the following command in the terminal:
sudo undervolt --read
This should show something similar to this:
temperature target: -5 (95C)
core: -128.91 mV
gpu: 0.0 mV
cache: -128.91 mV
uncore: 0.0 mV
analogio: 0.0 mV
powerlimit: 60.0W (short: 0.00244140625s - disabled) / 45.0W (long: 28.0s - enabled)
Now, we have successfully added the path where all the python packages are installed.
Step — 4: Create a service which will automatically run on boot
First we have to create a unit file. Please follow the given steps:
- Go to
/etc/systemd/system/
- Type
sudo nano undervolt.service
- Now, paste the following code:
[Unit]
Description=undervolt
After=suspend.target
After=hibernate.target
After=hybrid-sleep.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/undervolt -v --core -150 --cache -150 --gpu -100
[Install]
WantedBy=multi-user.target
WantedBy=suspend.target
WantedBy=hibernate.target
WantedBy=hybrid-sleep.target
Note: Please change these
--core
and--cache
arguments according to your CPU. Please research about your CPU stable offset voltage. Otherwise your system will shutdown and reset to default offset voltage i.e.0.0 mv
or may cause damage to your system.
To check that your script works or not, Type the following command:
systemctl start undervolt.service
and then type systemctl enable undervolt.service
Now, we have successfully setup the startup service.
Please stress test your CPU and find the stable offset voltage.
Install stress package to Stress test the CPU
sudo apt install stress
Run stress test by stress -c <CPU cores>
like stress -c 8
Step — 5: Stress test and check CPU temperature
Now, we have to check whether the CPU temperatures are low or not.
Install i7z package to monitor the CPU temperature
sudo apt install i7z
Now open a super user session in new terminal window by sudo su
Now type i7z
to run i7z
CPU monitor.
Now again run Stress test and note the CPU temperature. If the temperature goes above 80 degrees then follow the further steps otherwise you are good to go.
Step — 6: Disable Turbo boost
Disabling turbo boost can lower the temperature by significant amount but it affects the CPU performance. If you are OK with this you can proceed further.
Create a startup script
We have create a script to automate the process of disabling the turbo boost because every time you start ubuntu, turbo boost will get ON.
sudo nano /usr/local/sbin/no-turbo.sh
Paste the following code from the very first line:
#!/bin/sh -cd /sys/devices/system/cpu/intel_pstate
echo 1 > no_turbo
Create a unit file to run the script on Startup
sudo nano /etc/systemd/system/no-turbo.service
Paste the following code:
[Unit]
Description="Disable Turbo boost"[Service]
Type=simple
ExecStart=/usr/local/sbin/no-turbo.sh[Install]
WantedBy=multi-user.target
To check that your script works or not, Type the following command:
systemctl start no-turbo.service
and then type systemctl enable no-turbo.service
Now, we have successfully disabled the turbo boost.
Woah hoo! Now your system got chill.
Do clap 👏🏻👏🏻 50 times and share the article with your friend if he is facing the issue. Thank you for giving your valuable time.