Skip to content

1.9.0

Choose a tag to compare

@andrebrait andrebrait released this 05 Oct 09:15
b8fd9c5

What's changed

  • Discover PWM channels numbered 10 and above, exclude per-channel attributes such as pwm10_enable, and list channels in natural numeric order. Older driver layouts remain supported. (#10)
  • Preserve fan labels and group assignments across hwmon renumbering and USB HID re-enumeration instead of leaving them attached to vanished sysfs paths. (#12)
  • Record unique USB controller serial identities so assignments follow controllers across USB port, bus, and hub changes, even when an identical model occupies the old port. Controllers without a unique serial retain separate same-port bindings.
  • Keep missing or ambiguous controller bindings for recovery without controlling another device, and prevent multiple configurations from driving the same PWM channel.
  • Preserve unresolved bindings across configuration saves and renames. Clearing a label also removes its dormant identity entry so it cannot reappear when ambiguity is resolved.

Upgrade compatibility

Back up /boot/config/plugins/fanctrlplus2/ before upgrading, especially if you may need to downgrade later. No manual conversion is needed for controllers still identifiable at their saved location: their bindings are upgraded when the service starts.

Start the service on 1.9.0 before moving a USB controller so its serial can be recorded. If an older, unrecorded controller has already moved, reassign it once. Controllers without a unique serial must remain on the same USB port. Restart the service after a driver reload or USB port move; this release does not add hot-plug monitoring.

Older plugin versions do not understand the new serial-based label keys. Restore your pre-upgrade configuration backup if downgrading. Device identity identifies the controller's channel, not the physical fan plugged into it.

The export/import request in #11 remains separate and is not included in this release.

Verification

All 25 test files pass. Isolated runtime smoke checks exercised actual label/configuration endpoints and service startup against synthetic sysfs, including port moves with replacements, ambiguous identities, recovery, saves, and label deletion. Physical hardware validation is still welcome.

Thanks to @mrjacobarussell for the multi-channel fix and detailed ARCTIC controller reports.