system76 / firmware-open

System76 Open Firmware
Other
949 stars 86 forks source link

Fan always starting and stopping #250

Open CourchesneA opened 2 years ago

CourchesneA commented 2 years ago

I believe this has started happening only after the firmware update last week "2021-07-20_93c2809".

According to sensors, the CPU and GPU temp of my oryp7 is oscillating between 54 and 55 °C. Everytime the 55 is reached (once every ~5seconds or so), the fans start and emit a really annoying noise. The noise itself isn't that bad, but the constant restart makes it hard to concentrate on anything.

Is there anyway to start the fans on an average of last temperatures, or just make it such that the fans are always on ?

Philip-Scott commented 2 years ago

Also seeing this myself on an oryp6. Temperatures are oscillating around 50° (even making it too hot to have on a lap), and then the fans kick off dropping the temperature a few degrees and ramping up again every few seconds under a light load.

Fans off

image

Fans on

image

im7FFY commented 2 years ago

Got the same problem on my lemp9 since a while now, did not monitor temps while it occurred though.

Since the last firmware update (2021-07-20_93c2809) the fan curve seems agressive as hell. My laptop now from time to time starts to have those crazy moments of spinning on at ~= 7000RMP then stops, then spin again etc...

This is really annoying as it kinda sounds like a biker on a motorcycle trying to impress the chicks around. Sometimes those acceleration are even less than a second which sounds really weird.

CourchesneA commented 2 years ago

I did some testing with different options and fan point value, but I was not able to find a good setup, there will always be oscillation between fan on and fan off. I could make it more bearable by adding FAN_POINT(35,25) to keep the fan always on at minimum speed, which is way less annoying.

Would love to see a better solution if there are other ideas

jamuir commented 2 years ago

I am also seeing this (or rather hearing this) on my Oryx Pro 6.

It is very annoying to constantly hear the hum and rattle of the CPU and GPU fans switching on and off.

I use watch sensors to observe the fans switch on and off -- here is what I see:

# fans off
system76_acpi-acpi-0
Adapter: ACPI interface
CPU fan:        0 RPM
GPU fan:        0 RPM
CPU temp:     +52.0°C
GPU temp:     +54.0°C
# fans on
system76_acpi-acpi-0
Adapter: ACPI interface
CPU fan:     1501 RPM
GPU fan:     1862 RPM
CPU temp:     +52.0°C
GPU temp:     +54.0°C

I like the idea of keeping the fans running at some minimum speed to stop the on-off noise.

Is there some work-around I can apply now to stop the noise?

Destreyf commented 1 year ago

I am having a very similar issue, and like @jamuir I can see my fans going from 0 RPM to 2600-2800 RPM.

although my temps jump at ~58-60c, which is IMO too hot for a machine that's sitting idle.

bartlebee13 commented 1 year ago

I am also experiencing this issue on an Oryx Pro 6 Pop!_OS 22.04. Nvidia Graphics Mode w/ 2 external monitors and only vscode, chrome, discord, and slack running.

I noticed when I switch the power profile to Balanced from High Performance the fans aren't as loud but this problem has been around for a while it seems.

jorgegonzalez commented 1 year ago

Bumping for the same issue

edit: I ended up building a new desktop and getting rid of my System76. I will never use their hardware again

markwylde commented 1 year ago

I like the idea of keeping the fans running at some minimum speed to stop the on-off noise.

Is there a way to do this without building my own firmware? Or is it easy to build? I know we can keep the fans running at max by pressing Ctrl + Fn + 1. But would there be a way to. have tiers, so you press Ctrl + Fn + 1 once, at it starts the fans at 100, then 500, 1000, 2000, 3000, 5000?

Is there a /sys/class/... file we can use to set the minimum fan speed?

EDIT: I worked it out:

In the code here:

CFLAGS+=-DBOARD_FAN_POINTS="\
    FAN_POINT(0, 10), \
    FAN_POINT(45, 20), \
    FAN_POINT(55, 25), \
    FAN_POINT(65, 30), \
    FAN_POINT(70, 40), \
    FAN_POINT(75, 60), \
    FAN_POINT(80, 75), \
    FAN_POINT(85, 90), \
    FAN_POINT(90, 100) \

FAN_POINT(0, 10) means, when the CPU temperature reaches 0 degrees, the fans should go to 10%. FAN_POINT(45, 20) means, when the CPU temperature reaches 45 degrees, the fans should go to 20%.

And so on.

I cloned this repo and followed the README.md and it built and flashed perfectly first time.

CourchesneA commented 1 year ago

It's a bit anoying having to rebuild when a new firmware is announced, but it's not too long. For me here are the steps:

ddetton commented 1 year ago

I just tried this with my new oryp11 and the flash step failed. Any ideas how to fix this?

make BOARD=system76/oryp11 flash_internal

dean@oryx-pro:~/repos/system76/firmware-open/ec$ make BOARD=system76/oryp11 flash_internal
warning: unused manifest key: registries
warning: use of deprecated unit variant `hidapi::HidError::OpenHidDeviceError`
   --> src/main.rs:431:43
    |
431 |                     Err(hidapi::HidError::OpenHidDeviceError.into())
    |                                           ^^^^^^^^^^^^^^^^^^
    |
    = note: `#[warn(deprecated)]` on by default

warning: `system76_ectool` (bin "system76_ectool") generated 1 warning
    Finished release [optimized] target(s) in 0.00s
file board: Ok("system76/oryp11")
file version: Ok("2023-08-02_13dd6a1-dirty")
ec board: Ok("system76/oryp11")
ec version: Ok("2023-06-22_e5c3632")
Waiting 5 seconds for all keys to be released
Sync
Result: Err(Protocol(1))
Sync
System will shut off in 5 seconds
Sync
failed to flash 'build/system76/oryp11/2023-08-02_13dd6a1-dirty/ec.rom': Protocol(1)
make: *** [src/board/system76/common/common.mk:117: flash_internal] Error 1
jacobgkau commented 1 year ago

I just assisted @ddetton in Mattermost. It's now necessary to run these commands from the ec directory before EC can be flashed:

./scripts/ectool.sh security unlock
sudo systemctl reboot # Or reboot your preferred way.

See https://github.com/system76/firmware-open/pull/159. After that, the flash_internal command will work again.

proffalken commented 10 months ago

EDIT OF THE EDIT: I can confirm that using the commands in the reddit link below work. My fans are now floating somewhere around 10-15% most of the time, and ramping up almost immediately inline with temperature spikes.

As a result, they are quieter for longer, but when they do start, they run for the right speed for a lower amount of time and appear to react a lot quicker.

FWIW, my settings are as follows:

# Custom fan curve
CFLAGS+=-DBOARD_HEATUP=0
CFLAGS+=-DBOARD_COOLDOWN=5
CFLAGS+=-DBOARD_FAN_POINTS="\
    FAN_POINT(30, 10), \
    FAN_POINT(55, 25), \
    FAN_POINT(60, 30), \
    FAN_POINT(65, 30), \
    FAN_POINT(70, 40), \
    FAN_POINT(75, 50), \
    FAN_POINT(80, 60), \
    FAN_POINT(85, 70), \
    FAN_POINT(90, 80), \
    FAN_POINT(95, 90) \
"

EDIT: I've just found that this is no longer the correct command at https://www.reddit.com/r/System76/comments/16sg78r/comment/k29x2n5/ - I'm trying the advice there. Leaving the below comment for posterity.

======================================================

FWIW, I'm still seeing the protocol error on my oryp11 after running the command from @jacobgkau above to unlock the security mode.

After running security unlock and rebooting, I get prompted to type in a passcode for flashing the firmware, but then it just reboots into Pop!_OS and when I re-run the make flash_internal command I get the following output:

warning: unused manifest key: registries
warning: use of deprecated unit variant `hidapi::HidError::OpenHidDeviceError`
   --> src/main.rs:431:43
    |
431 |                     Err(hidapi::HidError::OpenHidDeviceError.into())
    |                                           ^^^^^^^^^^^^^^^^^^
    |
    = note: `#[warn(deprecated)]` on by default

warning: `system76_ectool` (bin "system76_ectool") generated 1 warning
    Finished release [optimized] target(s) in 0.00s
file board: Ok("system76/oryp11")
file version: Ok("2023-09-07_181d4c5-dirty")
ec board: Ok("system76/oryp11")
ec version: Ok("2023-09-08_42bf7a6")
Waiting 5 seconds for all keys to be released
Sync
Result: Err(Protocol(1))
Sync
System will shut off in 5 seconds
Sync
failed to flash 'build/system76/oryp11/2023-09-07_181d4c5-dirty/ec.rom': Protocol(1)
make: *** [src/board/system76/common/common.mk:117: flash_internal] Error 1

My fans are still causing a significant amount of noise, and I'm now getting complaints from my co-workers!

Logic-Beach commented 6 months ago

Is there any update to this issue? I am trying to adjust the fan curve, but am running into the same issue as @proffalken

root@pop-os:/home/jarm/repos/firmware-open/ec# make BOARD=system76/serw13 flash_internal
warning: unused manifest key: registries
warning: use of deprecated unit variant `hidapi::HidError::OpenHidDeviceError`
   --> src/main.rs:431:43
    |
431 |                     Err(hidapi::HidError::OpenHidDeviceError.into())
    |                                           ^^^^^^^^^^^^^^^^^^
    |
    = note: `#[warn(deprecated)]` on by default

warning: `system76_ectool` (bin "system76_ectool") generated 1 warning
    Finished release [optimized] target(s) in 0.00s
file board: Ok("system76/serw13")
file version: Ok("2023-09-07_181d4c5-dirty")
ec board: Ok("system76/serw13")
ec version: Ok("2023-09-19_16ef69c")
Waiting 5 seconds for all keys to be released
Sync
Result: Err(Protocol(1))
Sync
System will shut off in 5 seconds
Sync
failed to flash 'build/system76/serw13/2023-09-07_181d4c5-dirty/ec.rom': Protocol(1)
make: *** [src/board/system76/common/common.mk:117: flash_internal] Error 1
tcollinsworth commented 6 months ago

This needs a PID controller implementation that finds the right fan speed for the current load, or at least adjusts it in tiny increments that will be far less distracting. There is no possible way to configure it for stability with simple thresholds.

chrisbirster commented 5 months ago

Is there any update to this issue? I am trying to adjust the fan curve, but am running into the same issue as @proffalken

root@pop-os:/home/jarm/repos/firmware-open/ec# make BOARD=system76/serw13 flash_internal
warning: unused manifest key: registries
warning: use of deprecated unit variant `hidapi::HidError::OpenHidDeviceError`
   --> src/main.rs:431:43
    |
431 |                     Err(hidapi::HidError::OpenHidDeviceError.into())
    |                                           ^^^^^^^^^^^^^^^^^^
    |
    = note: `#[warn(deprecated)]` on by default

warning: `system76_ectool` (bin "system76_ectool") generated 1 warning
    Finished release [optimized] target(s) in 0.00s
file board: Ok("system76/serw13")
file version: Ok("2023-09-07_181d4c5-dirty")
ec board: Ok("system76/serw13")
ec version: Ok("2023-09-19_16ef69c")
Waiting 5 seconds for all keys to be released
Sync
Result: Err(Protocol(1))
Sync
System will shut off in 5 seconds
Sync
failed to flash 'build/system76/serw13/2023-09-07_181d4c5-dirty/ec.rom': Protocol(1)
make: *** [src/board/system76/common/common.mk:117: flash_internal] Error 1

I'm running into the same issue as the others above on a oryp11

proffalken commented 5 months ago

FWIW, I've found that selecting "Optimise Battery" (or words to that effect - I don't have that laptop to hand at the moment!) from the power menu seems to calm the fans nicely.

brainthinks commented 5 months ago

The docs are linked in the README, but I didn't see anything in the form of a "Getting Started" section, so here is what I had to do to tame the obnoxious fan on my bonw15. I am doing this on my bonw15 machine running Linux Mint, NOT PopOS or Ubuntu.

Those steps worked for me on my bonw15 running Linux Mint. I hope this helps someone.

I'll come back to edit this post with updated fan values if I find these unsatisfactory.

brainthinks commented 5 months ago

After a few days with my unedited configuration above, the fan noise is now better, but still obnoxious. I had originally dismissed some of the comments here saying the configuring the power settings helps, because I don't want my performance being throttled. However, I have been using the laptop without being plugged in for about the last 30 min, and the fan has been completely silent this whole time, though my sensor reading indicates 2k rpm. I'm currently not doing development, but even at idle when plugged in, the fan will turn on.

My guess is that if you're using something like a bonobo, you bought it specifically for the CPU (and GPU) horsepower. However, if you don't have crazy CPU expectations or requirements, maybe this is a viable strategy. I work remote most of the time, so the obnoxious fan only bothers me. When I'm near my coworkers, however, this seems to be worth testing.

To try to get a casual idea of what I find tolerable, I installed the "Sensors Monitor" applet - I'm sure there's something comparable in your distro. It took a bit of time to get configured, but it's been invaluable. For instance, I now know that these are the current sensor readings, as i sit here in blissful silence:

image

notably absent from the applet right now is the GPU temp - apparently when on battery, the profile disables the discrete GPU in favor of the integrated one (either that or it's because I don't have any external monitors plugged in).

A fan reading of >2k rpm doesn't seem that much lower than idle and plugged in, and I can't even hear it. This makes me wonder if the GPU fan specifically is the culprit.


Edit 1 - so it turns out I didn't read the rest of the board file. Under the CPU fan curve is indeed the GPU fan curve, which I left stock. I'll update my firmware later this week and report back. Here are the default values for bonw15:

# Enable DGPU support
CFLAGS+=-DHAVE_DGPU=1
CFLAGS+=-DBOARD_DGPU_HEATUP=5
CFLAGS+=-DBOARD_DGPU_COOLDOWN=20
CFLAGS+=-DBOARD_DGPU_FAN_POINTS="\
    FAN_POINT(60, 40), \
    FAN_POINT(65, 60), \
    FAN_POINT(70, 75), \
    FAN_POINT(75, 90), \
    FAN_POINT(80, 100) \
"
crawfxrd commented 4 months ago

Temperature hysteresis for fan-off would likely be sufficient for this. Have it cool like 2°C lower than first point before turning off. (Older ITE EC chips apparently had this functionality when "smart fan mode" was an option.)

jbaribeault commented 3 months ago

After a few days with my unedited configuration above, the fan noise is now better, but still obnoxious. I had originally dismissed some of the comments here saying the configuring the power settings helps, because I don't want my performance being throttled. However, I have been using the laptop without being plugged in for about the last 30 min, and the fan has been completely silent this whole time, though my sensor reading indicates 2k rpm. I'm currently not doing development, but even at idle when plugged in, the fan will turn on.

My guess is that if you're using something like a bonobo, you bought it specifically for the CPU (and GPU) horsepower. However, if you don't have crazy CPU expectations or requirements, maybe this is a viable strategy. I work remote most of the time, so the obnoxious fan only bothers me. When I'm near my coworkers, however, this seems to be worth testing.

To try to get a casual idea of what I find tolerable, I installed the "Sensors Monitor" applet - I'm sure there's something comparable in your distro. It took a bit of time to get configured, but it's been invaluable. For instance, I now know that these are the current sensor readings, as i sit here in blissful silence:

image

notably absent from the applet right now is the GPU temp - apparently when on battery, the profile disables the discrete GPU in favor of the integrated one (either that or it's because I don't have any external monitors plugged in).

A fan reading of >2k rpm doesn't seem that much lower than idle and plugged in, and I can't even hear it. This makes me wonder if the GPU fan specifically is the culprit.

Edit 1 - so it turns out I didn't read the rest of the board file. Under the CPU fan curve is indeed the GPU fan curve, which I left stock. I'll update my firmware later this week and report back. Here are the default values for bonw15:

# Enable DGPU support
CFLAGS+=-DHAVE_DGPU=1
CFLAGS+=-DBOARD_DGPU_HEATUP=5
CFLAGS+=-DBOARD_DGPU_COOLDOWN=20
CFLAGS+=-DBOARD_DGPU_FAN_POINTS="\
  FAN_POINT(60, 40), \
  FAN_POINT(65, 60), \
  FAN_POINT(70, 75), \
  FAN_POINT(75, 90), \
  FAN_POINT(80, 100) \
"

Hey how did you manage to get the RPMs for the fan? I can't find a sensor that shows that data at all on my BONW15

tcollinsworth commented 3 months ago

This will show all the sensors and CPU and GPU fan speeds.

temp sensors

# https://www.cyberciti.biz/faq/how-to-check-cpu-temperature-on-ubuntu-linux/ gnome-terminal --tab --title="Temp Sensors" -- bash -c "watch -n 0.5 sensors"

On Fri, May 31, 2024 at 6:27 PM jbaribeault @.***> wrote:

After a few days with my unedited configuration above, the fan noise is now better, but still obnoxious. I had originally dismissed some of the comments here saying the configuring the power settings helps, because I don't want my performance being throttled. However, I have been using the laptop without being plugged in for about the last 30 min, and the fan has been completely silent this whole time, though my sensor reading indicates 2k rpm. I'm currently not doing development, but even at idle when plugged in, the fan will turn on.

My guess is that if you're using something like a bonobo, you bought it specifically for the CPU (and GPU) horsepower. However, if you don't have crazy CPU expectations or requirements, maybe this is a viable strategy. I work remote most of the time, so the obnoxious fan only bothers me. When I'm near my coworkers, however, this seems to be worth testing.

To try to get a casual idea of what I find tolerable, I installed the "Sensors Monitor" applet - I'm sure there's something comparable in your distro. It took a bit of time to get configured, but it's been invaluable. For instance, I now know that these are the current sensor readings, as i sit here in blissful silence:

[image: image] https://private-user-images.githubusercontent.com/2215066/318874688-bceff36f-e1e1-41ec-82df-8199110daf25.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTcxMDIwNDcsIm5iZiI6MTcxNzEwMTc0NywicGF0aCI6Ii8yMjE1MDY2LzMxODg3NDY4OC1iY2VmZjM2Zi1lMWUxLTQxZWMtODJkZi04MTk5MTEwZGFmMjUucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDUzMCUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA1MzBUMjA0MjI3WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9MmViNGJiMDI5N2VlZjc2OWQ5YzhjODMyOGVlY2FiNTI5N2U4ZjViOTFjM2FhM2MyZWVmZmUyMTA4YTAyM2YxYiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.CJnuI0BDDurUk645dxiYtdzykwMcVZyADUb7Oyx6I5E

notably absent from the applet right now is the GPU temp - apparently when on battery, the profile disables the discrete GPU in favor of the integrated one (either that or it's because I don't have any external monitors plugged in).

A fan reading of >2k rpm doesn't seem that much lower than idle and plugged in, and I can't even hear it. This makes me wonder if the GPU fan specifically is the culprit.

Edit 1 - so it turns out I didn't read the rest of the board file. Under the CPU fan curve is indeed the GPU fan curve, which I left stock. I'll update my firmware later this week and report back. Here are the default values for bonw15:

Enable DGPU support

CFLAGS+=-DHAVE_DGPU=1 CFLAGS+=-DBOARD_DGPU_HEATUP=5 CFLAGS+=-DBOARD_DGPU_COOLDOWN=20 CFLAGS+=-DBOARD_DGPU_FAN_POINTS="\ FAN_POINT(60, 40), \ FAN_POINT(65, 60), \ FAN_POINT(70, 75), \ FAN_POINT(75, 90), \ FAN_POINT(80, 100) \ "

Hey how did you manage to get the RPMs for the fan? I can't find a sensor that shows that data at all on my BONW15

— Reply to this email directly, view it on GitHub https://github.com/system76/firmware-open/issues/250#issuecomment-2143056099, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAFYANKBD5ALMQBW3YOKCJDZFD2OLAVCNFSM5E6YQIR2U5DIOJSWCZC7NNSXTN2JONZXKZKDN5WW2ZLOOQ5TEMJUGMYDKNRQHE4Q . You are receiving this because you commented.Message ID: @.***>

alejandrofierro commented 2 months ago

After a few days with my unedited configuration above, the fan noise is now better, but still obnoxious. I had originally dismissed some of the comments here saying the configuring the power settings helps, because I don't want my performance being throttled. However, I have been using the laptop without being plugged in for about the last 30 min, and the fan has been completely silent this whole time, though my sensor reading indicates 2k rpm. I'm currently not doing development, but even at idle when plugged in, the fan will turn on.

My guess is that if you're using something like a bonobo, you bought it specifically for the CPU (and GPU) horsepower. However, if you don't have crazy CPU expectations or requirements, maybe this is a viable strategy. I work remote most of the time, so the obnoxious fan only bothers me. When I'm near my coworkers, however, this seems to be worth testing.

To try to get a casual idea of what I find tolerable, I installed the "Sensors Monitor" applet - I'm sure there's something comparable in your distro. It took a bit of time to get configured, but it's been invaluable. For instance, I now know that these are the current sensor readings, as i sit here in blissful silence:

image

notably absent from the applet right now is the GPU temp - apparently when on battery, the profile disables the discrete GPU in favor of the integrated one (either that or it's because I don't have any external monitors plugged in).

A fan reading of >2k rpm doesn't seem that much lower than idle and plugged in, and I can't even hear it. This makes me wonder if the GPU fan specifically is the culprit.

Edit 1 - so it turns out I didn't read the rest of the board file. Under the CPU fan curve is indeed the GPU fan curve, which I left stock. I'll update my firmware later this week and report back. Here are the default values for bonw15:

# Enable DGPU support
CFLAGS+=-DHAVE_DGPU=1
CFLAGS+=-DBOARD_DGPU_HEATUP=5
CFLAGS+=-DBOARD_DGPU_COOLDOWN=20
CFLAGS+=-DBOARD_DGPU_FAN_POINTS="\
  FAN_POINT(60, 40), \
  FAN_POINT(65, 60), \
  FAN_POINT(70, 75), \
  FAN_POINT(75, 90), \
  FAN_POINT(80, 100) \
"

Hi @brainthinks were you able to change the GPU fan curve? Is it better now? Based on which commit did you compile the firmware`? I just received my bonw15 a week ago and this fan noise is making me want to throw it out the window, my firmware is at2023-10-20_2e4e34b`

brainthinks commented 1 month ago

ok, well, I really tried to give this thing a chance, but this fan is driving me insane. I'll be trading in my bonobo soon. I think this is only partly the fault of System 76 - surely they could have used a quieter fan.... But I suspect that the rest of the blame goes to Intel for these 13th and 14th gen chips.

The final verdict is that I cannot get the fan to gently ramp to higher speeds. The chip takes in a ton of juice to get the advertised performance, and as a result, the temp will jump 40 degrees C in less than a second. I don't think there is a configuration that can account for this.

@alejandrofierro here is the commit I am using for ec:

commit 38d4666a9007b6d36e344bbc36109876e519028e (HEAD, origin/master, origin/HEAD, master)
Author: Tim Crawford <tcrawford@system76.com>
Date:   Thu Mar 21 10:47:29 2024 -0600

    oryp12: Use OZ26786 charger

    Ref: Schematics sheet 58 ("AC In Charger")
    Signed-off-by: Tim Crawford <tcrawford@system76.com>

and here is the commit i'm using for firmware-open:

commit 2c6913bc0abb7906cfd134122a077134a82fba74 (HEAD -> master, origin/master, origin/HEAD)
Author: Jeremy Soller <jackpot51@gmail.com>
Date:   Mon Mar 25 14:30:56 2024 -0600

    lemp13: Update coreboot to fix power LED flicker

I did also update my GPU fan settings, but as I stated, it isn't enough to tame the fan. Here they are if you're interested:

# Enable DGPU support
CFLAGS+=-DHAVE_DGPU=1
CFLAGS+=-DBOARD_DGPU_HEATUP=5
CFLAGS+=-DBOARD_DGPU_COOLDOWN=20
CFLAGS+=-DBOARD_DGPU_FAN_POINTS="\
    FAN_POINT(30, 10), \
    FAN_POINT(35, 12), \
    FAN_POINT(40, 15), \
    FAN_POINT(45, 18), \
    FAN_POINT(50, 20), \
    FAN_POINT(55, 25), \
    FAN_POINT(60, 30), \
    FAN_POINT(65, 35), \
    FAN_POINT(70, 40), \
    FAN_POINT(75, 50), \
    FAN_POINT(80, 60), \
    FAN_POINT(85, 70), \
    FAN_POINT(90, 80), \
    FAN_POINT(95, 90), \
    FAN_POINT(99, 100) \
"

I wish I had a working solution for this, since this laptop has so much power... The only way I could get the fans to stop being obnoxious was to disconnect from the AC power. I'm sure there's some power management settings you could adjust to simulate this while plugged in, but to me that defeats the purpose, since you have to starve the cpu of power to get it to not shoot up 40 deg.

brainthinks commented 1 month ago

in case there is any confusion about what my actual updated firmware is, here are the full contents of firmware-open/ec/src/board/system76/bonw15/board.mk

# SPDX-License-Identifier: GPL-3.0-only

board-y += board.c
board-y += gpio.c

EC=ite
CONFIG_EC_ITE_IT5570E=y
CONFIG_EC_FLASH_SIZE_128K = y

# Enable eSPI
CONFIG_BUS_ESPI=y

# Enable firmware security
CONFIG_SECURITY=y

# Include keyboard
KEYBOARD=15in_102

# Set keyboard LED mechanism
CONFIG_HAVE_KBLED = y
KBLED=bonw14

# Set discrete GPU I2C bus
CFLAGS+=-DI2C_DGPU=I2C_1

# Set battery I2C bus
CFLAGS+=-DI2C_SMBUS=I2C_4

# Set touchpad PS2 bus
CFLAGS+=-DPS2_TOUCHPAD=PS2_3

# Set USB-PD I2C bus
CFLAGS+=-DI2C_USBPD=I2C_1

# Set smart charger parameters
# XXX: PRS1 and PRS2 are in parallel for adapter Rsense?
CHARGER=oz26786
CFLAGS+=\
    -DCHARGER_ADAPTER_RSENSE=5 \
    -DCHARGER_BATTERY_RSENSE=5 \
    -DCHARGER_CHARGE_CURRENT=3072 \
    -DCHARGER_CHARGE_VOLTAGE=17400 \
    -DCHARGER_INPUT_CURRENT=16920

# Set USB-PD parameters
USBPD=tps65987

# Set CPU power limits in watts
CFLAGS+=\
    -DPOWER_LIMIT_AC=330 \
    -DPOWER_LIMIT_DC=55

# Custom fan curve
CFLAGS+=-DBOARD_HEATUP=0
CFLAGS+=-DBOARD_COOLDOWN=10
CFLAGS+=-DBOARD_FAN_POINTS="\
    FAN_POINT(30, 10), \
    FAN_POINT(35, 12), \
    FAN_POINT(40, 15), \
    FAN_POINT(45, 18), \
    FAN_POINT(50, 20), \
    FAN_POINT(55, 25), \
    FAN_POINT(60, 30), \
    FAN_POINT(65, 35), \
    FAN_POINT(70, 40), \
    FAN_POINT(75, 50), \
    FAN_POINT(80, 60), \
    FAN_POINT(85, 70), \
    FAN_POINT(90, 80), \
    FAN_POINT(95, 90), \
    FAN_POINT(99, 100) \
"

# Enable DGPU support
CFLAGS+=-DHAVE_DGPU=1
CFLAGS+=-DBOARD_DGPU_HEATUP=5
CFLAGS+=-DBOARD_DGPU_COOLDOWN=20
CFLAGS+=-DBOARD_DGPU_FAN_POINTS="\
    FAN_POINT(30, 10), \
    FAN_POINT(35, 12), \
    FAN_POINT(40, 15), \
    FAN_POINT(45, 18), \
    FAN_POINT(50, 20), \
    FAN_POINT(55, 25), \
    FAN_POINT(60, 30), \
    FAN_POINT(65, 35), \
    FAN_POINT(70, 40), \
    FAN_POINT(75, 50), \
    FAN_POINT(80, 60), \
    FAN_POINT(85, 70), \
    FAN_POINT(90, 80), \
    FAN_POINT(95, 90), \
    FAN_POINT(99, 100) \
"

# Add system76 common code
include src/board/system76/common/common.mk

Warning though, my file is from a months-old commit at this point, so I suggest you only use it for reference and only use the CPU and GPU fan configuration. If you copy and paste the contents of the entire file directly, you may be missing some configuration that is more up to date.

ddetton commented 1 month ago

I found any fan speed above 75% to be unbearable so this is what I did on my oryp11. Been running pretty much 24x7 for almost a year with this config. Fan is always running at low speeds until it gets to super high temps then I slowly raise it, maxing out at 75%. No idea if this will have any adverse effect over the long term. Seems fine so far.

Just wish that s76 would make fan control a built in utility so that we don't have to reflash firmware to change it.

FLAGS+=-DBOARD_FAN_POINTS="\
    FAN_POINT(45, 25), \
    FAN_POINT(50, 25), \
    FAN_POINT(55, 25), \
    FAN_POINT(60, 25), \
    FAN_POINT(65, 25), \
    FAN_POINT(70, 30), \
    FAN_POINT(75, 35), \
    FAN_POINT(80, 40), \
    FAN_POINT(85, 45), \
    FAN_POINT(90, 50), \
    FAN_POINT(95, 75)  \
crawfxrd commented 1 month ago

Working on it. Current progress in https://github.com/system76/ec/pull/495.