Overheating problem Ubuntu 20.04

I updated from 18.04 to 20.04 a couple of weeks ago. With 18.04 the mean temperature was between 28 and 40° in light usage (YouTube, browsing etc.), now with 20.04 is always over 40°, also while in idle. I tried updating the Kernel from 5.4 to 5.6.10 and now 5.6.14, but nothing. I have an MSI Prestige 15, with an i7-10750U.


Overtemp

There's really nothing wrong with 40°C.

If you've overclocked your CPU or GPU, set it back to default.

Make sure that you only have one thermal process. ps auxc | grep -i therm. If you have two, then purge thermald with sudo apt-get purge thermald.

BIOS

You have BIOS E16S3IMS.106.

BIOS E16S3IMS.108 can be download from here. Confirm your exact model # on this page.

Note: Have good backups before updating the BIOS.

Nvidia

You have Nvidia GTX 1650.

The current driver is 440.82, and can be downloaded here.

To cool things down, select the Intel video subsystem, when the Nvidia is not needed for games, etc.


Under volting helps a lot when there is over heating (and by lot I mean A LOT). To be on a safer side, manufacturers supply higher voltage than required to the CPU (which causes heating), as at very lower voltages CPU doesn't work properly under stress. Under volting is completely safe. It will not void your warranty whatsoever. Under volting is basically removing the excess voltage supplied and giving the minimum voltage required to run the CPU smoothly.

Try intel-undervolt from here on GitHub.

Here is an article on CPU undervolting in Linux which I followed

Some terms in the guide might be deprecated. Refer to the first link for the deprecated terms.

Here is a step by step procedure with the non deprecated terms

  1. install git with sudo apt install git
  2. run git clone https://github.com/kitsunyan/intel-undervolt
  3. sudo su and then enter password
  4. run ./configure --enable-systemd --enable-openrc && make && make install
  5. close the root mode by typing exit and press enter
  6. run sudo systemctl daemon-reload
  7. run sudo gedit /etc/intel-undervolt.conf this will open a text editor
  8. change the value in line 10 (in front of CPU) to -130 like this undervolt 0 'CPU' -130 (recommended -125)
  9. now save that text file and exit
  10. run sudo intel-undervolt apply and then run sudo systemctl start intel-undervolt
  11. use the system for some time, if it looks stable then run sudo systemctl enable intel-undervolt.

As of selecting the offset, I use undervolt 0 'CPU' -130 in the /etc/intel-undervolt.conf file. As a beginner I would suggest you to stick to undervolting the CPU only.

To find the correct offset (unique to each CPU piece. Same CPU but on different computer could have different ideal offset) slowly lower the offset by small values (I used 10), and at the point where your PC crashes, is the threshold. And set the final value to threshold - 10. In my case it crashed at 140 so I set it to 130.

The only downside (if you don't choose sudo systemctl enable intel-undervolt) is that you will have to apply the settings on every boot. I have created an alias with alias us='sudo intel-undervolt apply && sudo tlp start'. So I just have to type us in the terminal on a boot, and then I am good to go.

Note: the crashing of PC to calculate the offset is completely safe. It will not damage you hardware whatsoever.

Note: Any Intel CPU can go to -125 at least, above that comes the difficult part. If you want to take it to the limit, then only try increasing it step by step. Otherwise -125 will work just fine for any Intel CPU.