fan-control: continuous linear curve (replaces discrete step-bands)
Replace the step-band fan curve with a continuous linear ramp — the bands flapped at edges (e.g. 45<->65%). Web-researched: linear + 2-3C hysteresis is the homelab standard; PID is overkill for this slow thermal loop. fan% now interpolates between env-tunable anchors: COOL 50C/30% -> 83C/100% (~2.1%/C; ~51% at the ~60C equilibrium) QUIET 68C/20% -> 83C/100% (near-silent until ~70C) Both reach 100% at the 83C ceiling. Anti-oscillation: asymmetric hysteresis (fc_decide) + a MIN_STEP (3%) min-change threshold. 41 bash tests green; deployed + verified live (59C -> 49%, smooth). [ci skip] Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
945c1936e3
commit
324f2dc3bf
4 changed files with 67 additions and 62 deletions
|
|
@ -55,7 +55,7 @@ Edit `/etc/fan-control.env` on the host, then `systemctl restart fan-control`.
|
|||
Common knobs:
|
||||
- `HOLD_SECS` — how long to stay quiet after the garage door last moved (default 900 = 15 min).
|
||||
- `CEILING` — temp at which we abandon manual control and let the firmware take over (default 83).
|
||||
- Curves themselves are arrays (`COOL_CURVE`, `QUIET_CURVE`) near the top of the script.
|
||||
- Curve shape: **linear anchors** near the top of the script — `COOL_T_LO/COOL_P_LO/COOL_T_HI/COOL_P_HI` (default 50°C/30% → 83°C/100%) and `QUIET_*` (68°C/20% → 83°C/100%); fan% interpolates linearly between them (replaced the old discrete step-bands). `MIN_STEP` (default 3%) = smallest fan-% change worth an IPMI write (anti-jitter); `DEADBAND` (3°C) = ease-down hysteresis. Lower `COOL_P_HI` or raise `COOL_T_HI` to run the top end quieter; steepen by raising `COOL_P_LO` / lowering `COOL_T_LO`.
|
||||
|
||||
## Deploy / update
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue