CPU Fan doesn't STOP at idle

Hi
I am running EndevourOs (i3wm) on an MSI Modern 14 B4MW laptop (R5 4500u).
In windows, when doing basic stuff (browsing etc) the CPU fan completely stops spinning but the same refuse to happen on Linux i.e. it does ramp up and down just fine, but the zero rpm mode doesn’t engage ever. I am a complete noob to Linux this is my first time here.
I have tried lm_sensors but it doesn’t detect anything, nbfc does not have any configs for me either. I would’ve tried other solutions (this) but I really don’t want to fry my machine so I came here.

Also, I noticed the bottom bar on my i3 displays a temperature reading next to the battery and wifi so I guess it is not entirely unreasonable to hope for something.

Is it possible that the CPU is too warm for that to happen?

On Windows the fan kicks in at 45°C on CPU or 38°C on the skin (whichever comes first).
The reading on i3 is always in the low 30s and the body is cold to touch, moreover the exhaust air is cool (basically room temp).

1 Like

Usually fan setting are set in the BIOS.
Especially new bios, you usually have a chart with rpm related to temp in the bios that you can set to whatever you like.

I thought this looked familiar…

Does the same thing happen on Garuda? Or did you switch the install to EnOS?

That is usually the case but we are dealing with a laptop with a severely limited BIOS. I didn’t find anything like performance profile or fan curve or anything really

Yes that’s me​:joy:
And yes the fan thing is consistent across all Linux distributions.
I switched from Garuda(i3) because I’ve had several things work out of the box with EnOs(i3)

1 Like

While fans speed are initially controlled by BIOS and not OS, there can be problems with ACPI for this particular laptop or power settings that have a minimal fan speed. Which will prevent laptop fans to stop even on idle. For the latter probably the best bet is the link u placed in the first post. If nothing than at least to install lm sensor package to see if everything is detected properly.
Fan speed control - ArchWiki (archlinux.org)
What Linux kernel are you running?

1 Like

This made me think of

which is definitely worth checking.

I would’ve tried but the problem is that lm_sensors isn’t really detecting anything.

Sorry, no sensors were detected. This is relatively common on laptops, where thermal management is handled by ACPI rather than the OS.

I’m looking into the acpi_osi thing, that sounds useful

So I tried

acpi_oci='Windows 2020'

And it didn’t do anything.
But I learned something new, The laptop ships with a UWP application called MSI Creator Centre
I have the option to choose b/w 4 ‘user scenarios’ - Performance, Balanced, Silent, and Battery saver.
And the default balanced profile doesn’t idle at zero RPM, that happens only in the last 2 profiles.
I am very sure my Endeavor install is perpetually stuck in balanced mode.
I have scoured the BIOS but there’s no option to change the performance profile.
Is there a way to install the app or send a command somehow to change the performance profiles?

1 Like

There is a program in the AUR called isw which is MSI upside down. It is for fan control on MSI Gaming laptops. Maybe you can check it out. I’m not sure it will work on your laptop.

I am looking into it
It doesn’t support my model out of box but I the config files look simple enough.
I have to copy over some code from the official EC files. Let’s see how it goes​:crossed_fingers:

Ok so here’s the current state of things
I performed an EC dump with the help of ISW and it returns a matrix of base16 numbers. This tells me what exactly each of them is supposed to mean.
I also looked at my EC on windows in battery saver mode (fan off) using this utility.
I was planning to copy the Windows values over to the ISW config file and that should’ve been it.
But I realized that the CPU_temp, CPU_fan, GPU_temp, and GPU_fan values were identical on both.
Even the performance profile was the same (0D) on both.
Also, now I know for sure the CPU temperature is not the reason, the temperature on Linux is 2C lower than on Windows.

TL;DR
The performance profile is the same on Windows and Linux,
The fan curve is also identical
CPU temperature is lower on Linux
But the fan just won’t stop on Linux.

I have no explanation for this behaviour and I don’t really know where to look for one.

I fixed it, here’s how;

  • Log into Windows, install and run this tool, and make sure you are in the performance profile you want to be in.
  • Click on the Embedded Controller button (it is one of those colorful buttons on the top bar)
  • You will see a grid of numbers, take a screenshot of it.
  • Use this image to highlight the numbers you care about like I did here
  • now on Endeavor (or any other distro) install isw from AUR

run,
sudo micro /etc/isw.conf
(make sure you have micro installed)

  • Now here you need to find your EC name, in my case, it was 14DKEMS1, this can be found in windows sysinfo or MSI Creator Centre or Dragon Centre whatever yours’ ships with.
  • Once you find your EC, punch in the values you salvaged from Windows, save and exit micro.
  • But my EC [14DKEMS1] wasn’t in the config so I created a brand new entry.
  • Save and exit.

run
sudo isw -w 14DKEMS1
[Replace ‘14DKEMS1’ with your EC’s name]

  • Now your preferred profile should be engaged.
  • All you gotta do is make this last script run at boot every time, I haven’t figured it out just yet but it shouldn’t be that difficult I guess.
2 Likes

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.