New
- Signed APT repository for DEB packages, hosted at
petersulyok/smfc-deb. Users on Debian/Ubuntu/Proxmox/Mint/Raspberry Pi OS can now installsmfcdirectly withapt install smfcafter adding the repository — see README chapter 9.1. - Signed DNF repository for RPM packages, hosted at
petersulyok/smfc-rpm. Users on Fedora/RHEL/Rocky/AlmaLinux/CentOS Stream/openSUSE can now installsmfcdirectly withdnf install smfcafter adding the repository — see README chapter 9.2. - New companion
smfc-clienttool showing a live read-only snapshot of controllers, fan levels, IPMI zones, and standby state — works either against a runningsmfcservice or fully standalone. See README chapter 14. - New platform support for Supermicro X14 motherboards (
generic_x14), auto-detected from the BMC product name — experimental, your feedback is welcome at discussion #106. - New Grafana integration: sample dashboard and step-by-step guide for visualizing live and historical fan/temperature data — see
grafana/GRAFANA.md. - New documentation:
ARCHITECTURE.md(internal design for contributors),TESTING.md(test suite guide),grafana/GRAFANA.md(Grafana integration guide). - Advanced multi-segment user-defined control function:
control_function=now accepts a sequence oftemp-levelpoints defining an arbitrary piecewise-linear curve, instead of a single linear segment betweenmin_temp/max_tempandmin_level/max_level— see README chapter 2.2. - New fan mode enforcement:
smfcnow detects and restores when the BMC drifts out of FULL mode, see new[Ipmi] enforce_fan_mode=parameter. More details in README chapter 6. - Multiple fan curves per controller type: numbered sections (e.g.
[CPU]+[CPU:1]) let a single controller family drive independent fan curves across different IPMI zones. - Install script now auto-prefills
nvme_names=with detected NVMe devices (matching the existinghd_names=prefill), skipping duplicatenvme-nvme.*(NGUID) links. - Startup log now shows the active control function as a plateau list, making it easy to confirm the configured temperature-to-fan-level curve at a glance.
Changed
platform_name=values reworked:genericx9renamed togeneric_x9(old value still accepted for compatibility), unrecognized values now rejected at config-parse time, andautodetection now matches the BMC product name by prefix (X14→generic_x14,X10QBi→X10QBi,X9→generic_x9, otherwisegeneric).- Default polling interval for the NVMe fan controller lowered from 10s to 2s, matching CPU/GPU defaults.
- Unit and smoke test suites reorganized and expanded for maintainability; source code now holds 100% test coverage — see
TESTING.md. - Installation docs reorganized: DEB/RPM repository installs are now the preferred path, ahead of Docker and the manual install script — see README chapter 9.
- DEB/RPM packages now enable (but do not start) the
smfcsystemd unit on install, so you can review your configuration before the service first runs — see README chapter 9.1/9.2.
Fixed
- Cold-boot race: after a full power cycle, fans could be pinned at 100% on low-polling zones (e.g. HD) for as long as their polling interval, while the BMC's fan subsystem was still settling. smfc now waits for live sensor data before applying any fan level at startup.