Skip to content

v6.0.0

Latest

Choose a tag to compare

@petersulyok petersulyok released this 09 Jul 15:12

New

  • Signed APT repository for DEB packages, hosted at petersulyok/smfc-deb. Users on Debian/Ubuntu/Proxmox/Mint/Raspberry Pi OS can now install smfc directly with apt install smfc after 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 install smfc directly with dnf install smfc after adding the repository — see README chapter 9.2.
  • New companion smfc-client tool showing a live read-only snapshot of controllers, fan levels, IPMI zones, and standby state — works either against a running smfc service 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 of temp-level points defining an arbitrary piecewise-linear curve, instead of a single linear segment between min_temp/max_temp and min_level/max_level — see README chapter 2.2.
  • New fan mode enforcement: smfc now 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 existing hd_names= prefill), skipping duplicate nvme-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: genericx9 renamed to generic_x9 (old value still accepted for compatibility), unrecognized values now rejected at config-parse time, and auto detection now matches the BMC product name by prefix (X14generic_x14, X10QBiX10QBi, X9generic_x9, otherwise generic).
  • 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 smfc systemd 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.