Feature request: Controllable fans / fancurves

No, modifying the energy profile does not change the tdp. One way to vary the tdp is to use a 100W charger, for example.

As for ectool for the average user it is very difficult to use

Last i checked fw-fanctrl requires disabling secure boot. Imo anything that requires that is an incomplete temporary solution that still needs Improvement

I agree, fortunately there is work on the linux kernel to put it clean.
For next 6.11 kernel for example: cros_ec_hwmon.c « hwmon « drivers - kernel/git/torvalds/linux.git - Linux kernel source tree

1 Like

On the 6.10 kernel, secure boot enabled, fan control works.

1 Like

like @knipp30 report and my own test, ectool+linux-kernel-6.10 do not need to disable secure boot.

my test:
get here: Jobs · Dustin L. Howett / ectool · GitLab and download last artifact for my OS (linux in my case: #905: build linux/x64)

# on fedora 40 with last 6.10 kernel:
# default report:
$ sudo ./ectool temps all
--sensor name -------- temperature -------- ratio (fan_off and fan_max) --
ambient_f75303@4d     303 K (= 30 C)        N/A (fan_off=0 K, fan_max=0 K)
charger_f75303@4d     305 K (= 32 C)        N/A (fan_off=0 K, fan_max=0 K)
apu_f75303@4d         307 K (= 34 C)           0% (320 K and 335 K)
cpu@4c                304 K (= 31 C)           0% (338 K and 370 K)
gpu_amb_f75303@4d     273 K (= 0 C)        N/A (fan_off=0 K, fan_max=0 K)
gpu_vr_f75303@4d      273 K (= 0 C)           0% (323 K and 347 K)
gpu_vram_f75303@4d    273 K (= 0 C)        N/A (fan_off=0 K, fan_max=0 K)
gpu_amdr23m@40        273 K (= 0 C)           0% (323 K and 353 K)

$ sudo ./ectool thermalget
sensor  warn  high  halt   fan_off fan_max   name
  0      363   363    378      0       0     ambient_f75303@4d
  1      363   363    378      0       0     charger_f75303@4d
  2      363   363    378    320     335     apu_f75303@4d
  3      381   381    400    338     370     cpu@4c
  4        0     0      0      0       0     gpu_amb_f75303@4d
  5      344     0      0    323     347     gpu_vr_f75303@4d
  6        0     0      0      0       0     gpu_vram_f75303@4d
  7        0     0      0    323     353     gpu_amdr23m@40


# change temps curve: cpu@4c with 0rpm@30°C => 100%@90°C:
# > thermalset <sensor id> <warn> <high> <halt> <fan_off> <fan_max>
sudo ./ectool thermalset 3 381 381 400 303 363

#> result:
$ sudo ./ectool temps all
--sensor name -------- temperature -------- ratio (fan_off and fan_max) --
ambient_f75303@4d     307 K (= 34 C)        N/A (fan_off=0 K, fan_max=0 K)
charger_f75303@4d     308 K (= 35 C)        N/A (fan_off=0 K, fan_max=0 K)
apu_f75303@4d         308 K (= 35 C)           0% (320 K and 335 K)
cpu@4c                305 K (= 32 C)           3% (303 K and 363 K)
gpu_amb_f75303@4d     273 K (= 0 C)        N/A (fan_off=0 K, fan_max=0 K)
gpu_vr_f75303@4d      273 K (= 0 C)           0% (323 K and 347 K)
gpu_vram_f75303@4d    273 K (= 0 C)        N/A (fan_off=0 K, fan_max=0 K)
gpu_amdr23m@40        273 K (= 0 C)           0% (323 K and 353 K)

$ sudo ./ectool pwmgetfanrpm all
Fan 0 RPM: 1080
Fan 1 RPM: 1010

For me (FW16 7940HS without dGPU) does not make noise at normal/low CPU load and the case is now kept cool. CPU@33°C (was more 38/40 °C with default settings)

(Now need to add a systemd service to enable it at startup…)

1 Like

I change a lot between a few of the defaults.

I highly recommend creating an alias for some of your preferred sets:

$ grep alias ~/.bashrc 
# User specific aliases and functions
alias fan1='fw-fanctrl agile'
alias fan2='fw-fanctrl very-agile'
alias fan3='fw-fanctrl deaf'
alias fan4='fw-fanctrl aeolus'

This way, before running a game, or anything intensive… I can ramp up the fans to get ahead of the curve.

I also added the command to my sudoers.d directory as well, and then created some aliases to quickly run the ectool commands:

alias temps='sudo /usr/bin/ectool temps all'
alias fanspeed='sudo /usr/bin/ectool pwmgetfanrpm all'

Is there a link to this please?

Just in case you haven’t heard of it yet, I suggest trying “ectool thermalset” command. I run linux, but ectool is also available for windows. It doesn’t have a GUI and it may require disabling secure-boot, but it might be able to make the firmware manage the fan just the way you want.

By default, the firmware almost ignores the CPU’s internal temperature, and only really considers a temp sensor which is on the motherboard near the CPU. The idea of that was to let the cpu throttle itself when it gets too hot, and only turn on the fan when the laptop surface or other components would be getting too hot, because it seems many users just don’t want to hear the fan if at all possible :person_shrugging:

But you can change that! If you run “ectool thermalget” you can get an overview of the parameters:

sensor  warn  high  halt   fan_off fan_max   name
  0      343   353    393    313     343     local_f75303@4d
  1      343   353    393    319     327     cpu_f75303@4d
  2      343   353    393    401     401     ddr_f75303@4d
  3      370   380    390    333     368     cpu@4c

That last line is not the defaults, it’s already modified with:

ectool thermalset 3 370 380 390 333 368

That causes the fan to ramp from 0% at 60°C (333°K) to 100% at 95°C (368°K), and now my fans respond instantly when high load hits my CPU. I set that in a script that runs at bootup, but go ahead and try it on-the-fly first, to observe and adjust how you like.

1 Like

This is for the legacy command structure. There’s currently some revision ongoing where additional commands are introduced.
Old: fw-fanctrl agile
New: fw-fanctrl use agile
So, you’ve got to first give a command (“use”) and then the parameter (“agile”). Otherwise, a warning [Warning] > this command is deprecated and will be removed soon, please use the new command format instead ('fw-fanctrl -h' for more details). will be printed.

Interesting - i dont get those errors - I just pulled the git last week. When was this updated?

Github says “5 days ago”.

1 Like

Thank ya! I guess I need to update it lol.

is this for FW13 ?

on FW16 it look like:

sudo ./ectool thermalget
sensor  warn  high  halt   fan_off fan_max   name
  0      363   363    378      0       0     ambient_f75303@4d
  1      363   363    378      0       0     charger_f75303@4d
  2      363   363    378    320     335     apu_f75303@4d
  3      381   381    400    338     370     cpu@4c
  4        0     0      0      0       0     gpu_amb_f75303@4d
  5      344     0      0    323     347     gpu_vr_f75303@4d
  6        0     0      0      0       0     gpu_vram_f75303@4d
  7        0     0      0    323     353     gpu_amdr23m@40
1 Like

Yup, I have the FW13 AMD. It looks like, on your FW16, the CPU temp response settings are already pretty similar to my adjusted settings, whereas the default on mine was “fan_off” around 100°C for the in-CPU sensor. So on mine it would wait until the f75303 sensor near the CPU got around 50° C, about 30 seconds after a full load, before turning on the fan.

Everything you are talking about is very good. But as long as there is no accessible user environment in the application it is very difficult for the average user.

In any case, I don’t understand why they don’t allow it to be done with external applications like msi afterburner like on most laptops.

That type of policy is more typical of Apple than a supposedly “open” company.

I even think that some user has offered them help but they have not wanted to accept it so I do not think that, despite the multiple requests, you are interested in anything that allows you to control the fans or everything like asus, xmg, msi, dell, levono. …

1 Like

Regarding:

Everything you are talking about is very good. But as long as there is no accessible user environment in the application it is very difficult for the average user.

Are you afraid of the command line? If you are wanting help setting this up, it can be done… you just have to ask.

Regarding:

In any case, I don’t understand why they don’t allow it to be done with external applications like msi afterburner like on most laptops.

This reddit link explains it nicer, and cleaner, than I can:

https://www.reddit.com/r/framework/comments/1cdgd9o/comment/l1c19rt/

tl;dr, those other companies would need to support Framework, not the other way around.

Lastly:

That type of policy is more typical of Apple than a supposedly “open” company.

What policy? The policy that they released the code for the ectool to the public so people could create an option to control the fans?

The process is right there for you to use. You just have to implement it. Just because its not your “first choice” - doesn’t mean it doesnt exist.

Hell… I even have a gui to control my fans now thanks to the open nature of this support:
image

3 Likes

I don’t doubt your good work. But most users need an installer that is easy to use, run it, install it, and get it working.

As frameworks like asus, levono, xmg, alienware already do…

That is the reality, it has to be accessible to any user and this is not it.

You have obviously made up your mind. The majority of your posts in this forum, as well as on reddit, point to a negative view of this laptop. I am curious why you have decided to keep it?