Skip to content

Allow RPM to be sent directly to hardware, having no fan PID loop #32

@Krellan

Description

@Krellan

Right now, the architecture of phosphor-pid-control assumes each thermal zone will have 2 cascaded PID loops:

  • The thermal loop, to decide on the necessary fan RPM to keep the system cool
  • The fan PID loop, to decide on the correct PWM percentage value, to command to the fan motors, to achieve that desired RPM

Newer hardware, with a smart fan controller, has the possibility of accepting a RPM value sent directly to hardware. The controller then becomes responsible for dealing with the fan motors to achieve that. It would often be more desirable to do this. The workaround is to have a dummy fan PID loop that is 1:1 input and output, but this is cumbersome.

To fully realize this feature, we will need:

  • Linux hwmon/kernel support for allowing RPM to be written directly, like PWM is today (this may involve toggling a mode in the hardware, not just writing a value, because some smart fan controllers operate in either "RPM mode" or "PWM mode" and you have to tell them what mode you are using in advance)
  • OpenBMC D-Bus sensor interface support for allowing RPM to be written directly, like PWM is today (perhaps a separate Control interface becomes necessary, as writing to an OpenBMC sensor merely fakes out the value (useful for testing), and does not actually push a value to the hardware)
  • A way for phosphor-pid-control to know that it should operate in this mode (perhaps this would be obvious by simply not having any fan PID loop in the thermal zone)

Anything else I forgot?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions