Repository navigation
1.9.0
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.