Skip to content

Discussion: Optimal Fan Curves #180

@MilesBHuff

Description

@MilesBHuff

HEATUP/COOLDOWN

The rapid and sudden spin-ups of fans on System76 laptops seems to be a common complaint in reviews for some models. Thankfully, this should be somewhat largely addressed by #190; still, it may be worth deliberating on what the optimal values for HEATUP and COOLDOWN are, since they can play a large role in this.

When they're too low, the fans constantly spin up and down as the CPU fluctuates, creating a lot of distracting noise (as described by @leviport in #38 (comment));
when HEATUP is too high, the CPU fan will take too long to adjust (thus creating a jarring and sudden transition from a lower speed to a higher one); and
when COOLDOWN is too high, the fan can blow loudly and noisily for long durations after the CPU has already cooled down.

I know that HEATUP=5 and COOLDOWN=10 seem to work well on the oryp7 (The defaults are 5 and 20, respectively; 20 is definitely too long, and leaves the fans at max for 10+ seconds after the system has already cooled down.); but I don't have a good logical argument for why these are good -- only a qualitative one.
Other models, such as the darp5, seem to do best with very low values for these (see: #135).

Is there some sort of criteria that can be used to determine what values should be ideal, in principle?

Bounds and interpolation

Once #190 is merged, fan curves can be simplified a fair bit, as intermediate values can then be interpolated, from what I understand. This means that the only values that will need to be explicitly mentioned in the board.mk files, are the ones that have very specific reasons to be there.

Reading the second half of #163, it seems some fans have a lower bound for useful percentages. The oryp7, for example, has to run its fans at at least 25% or many users will experience rumbling vibrations. So maybe the lower bounds for each model could be set to the lowest percentage that works without issue?

For fans that have a broken value in the middle of their ranges (let's say Fan A rattles only from 51%-53%), two nodes could be specified, differing by only 1'C, to exclude this range: 60'C:50%::61'C:54%.

The highest value should always be 100%, unless that speed is broken for a given model's fans.
Currently, most System76 models seem to have this placed at around 90'C. While this may seem like a worthwhile tradeoff of CPU lifetime vs noise, it comes at more costs than just lifetime: When the computer does not spin the fans to max until the CPU is throttling itself extremely heavily (which it is doing at 90'C), the computational power of the computer takes a hit; and this hit can be substantial. And running at high temperatures does more than just shorten the CPU's lifespan -- it can also decrease the chip's reliability, as the fragile transistors are directly impacted by high temperatures.
All computers should reach their maximum fan speeds when they reach Tjunction, the point at which the CPU has to start throttling. This value is different for all processors, and the exact specs can be found at Intel's website (https://www.intel.com/content/www/us/en/support/articles/000005597/processors.html); but generally, hitting 100% fan at 70'C will avoid throttling on most or all CPUs, from what I understand.

But what about the temperature at which the fan should turn on? I'm unsure of an objective way to determine where this should be; but 50'C seems reasonable for laptops.

For the oryp7, the above gets us an interpolated fan curve with just two nodes: 25% @ 50'C, and 100% @ 70'C. You can find these settings (with hard-coded interpolation as a temporary workaround until #190 is merged) at my pull request, #179.

Closing remarks

I just want to say, I think you guys are awesome and thank you thank you thank you for working so hard to give us open source firmware. Like, honestly, the simple fact that I can even discuss the BIOS with the devs on GitHub and tweak the code for my own uses is just amazing.

I'm thinking through all of the above to improve the fan settings and fix the issues the defaults cause on my personal laptop; and I'm sharing my thought process here in case it's of some help, either to System76 or other power-users seeking to get the most out of their new laptops.
If nothing else, though, I really encourage you guys to consider lowering the temperature at which fans reach full speed -- 90'C is definitely too high.

Thanks for your time.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions