petersulyok / smfc

Super Micro Fan Control
GNU General Public License v3.0
184 stars 15 forks source link

Feature Request: autoconfiguration of IPMI fan upper and lower bounds #30

Open emansom opened 1 year ago

emansom commented 1 year ago

Currently setting up the correct lower and upper values can be somewhat error-prone as #28 demonstrated, it would help if SMFC did this job of configuring the IPMI fan upper and lower bounds for us instead.

How I imagine this could work is the following:

  1. Having some way of tieing the corresponding Noctua fan model to a specific FAN header (FAN1, FAN2, FANA etc.) via the configuration file.
  2. The released version of SMFC already contains a definition file where the upper and lower bounds for specific Noctua models are defined within.
  3. This definition file is then used to look up the upper and lower bounds for the given Noctua model found in the configuration file.
  4. Lookup failures will result in SMFC refusing to start and logging the error.
  5. If the upper and lower bounds found within the definition file don't match with the IPMI data, SMFC will correct this and print a warning/info message that a cold reset of the BMC should be performed.

The definition file could be generated by crawling Noctua websites using e.g. htmlq

The configuration section syntax could look something like the following:

[Fan models]
FAN1 = "Noctua NF-A12x15 PWM"
FAN3 = "Noctua NF-P12 redux-1700 PWM"
FANA = "Noctua NF-P12 redux-1700 PWM"
FAN4 = "Noctua NF-R8 redux-1800 PWM"

Just a quick draft. Feel free to share a better syntax and/or implementation idea.

petersulyok commented 1 year ago

Hi @emansom! Thanks for this idea. I was thinking on similar things:

  1. a fan calibration tool
  2. a self-correction mechanism in fan control, similarly how you described here

I've started some experiments on the first one. Meanwhile you may check the rewritten chapter 7. for new insights on this area.