fan curves: don't factory-reset via pwmN_enable=3 when reading defaults (fixes asusd start hang + input freeze on TUF FX608JMR)#171
Open
aminezzy wants to merge 1 commit into
Conversation
Writing "3" to pwm<N>_enable makes the kernel re-fetch factory defaults
via the fan_curve_get_factory_default WMI call. On the 2025 TUF F16
(FX608JMR, BIOS 306) that call blocks ~30s, stalls the EC (input
freezes), and returns EIO:
asus_wmi: fan_curve_get_factory_default (0x00110024) failed: -5
asusd triggers this on first run when fetching default curves, so it
never finishes starting: systemd kills it at the start timeout,
Restart=on-failure loops it, and the machine's input freezes repeatedly.
Read the curves the driver already reports (cached at probe time, reads
verified instant and correct on affected hardware) instead of forcing a
firmware re-fetch first. On first run these are the factory defaults.
Verified on FX608JMR: asusd starts in ~1s, per-profile defaults are
read correctly for all profiles, and no asus_wmi errors are logged.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014NneBinAM7WAFrqBqXZhA9
Contributor
|
You can't expect us to patch it when you are using a old kernel like the 6.12. If you want it merged you MUST provide it against newest stable kernel as clearly stated on the readme: Due to ongoing driver work, the minimum suggested kernel version is always the latest, as improvements and fixes are continuous. Support for TDP is tied to the new asus-armoury driver: available mainline since Linux 6.19: everything older is not supported. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
On the 2025 TUF F16 (FX608JMR, BIOS 306, kernel 6.12),
asusdnever finishes its first start on a machine with no existingfan_curves.ron. It hangs right after fan discovery while fetching default fan curves, systemd kills it at the start timeout,Restart=on-failureloops it — and the machine's input (mouse cursor) freezes repeatedly while this happens.Root cause
FanCurveProfiles::set_active_curve_to_defaults()writes"3"topwmN_enable, which makes the kernel re-fetch factory defaults via thefan_curve_get_factory_defaultWMI call. On this board that call blocks ~30 seconds, stalls the EC (that's the input freeze), and returns EIO. The kernel logs one of these per asusd start attempt, ~30s after the start:Reads are unaffected — all
pwmN_enableandpwmN_auto_pointM_*attributes read instantly with correct values from the driver's probe-time cache. Only the reset write triggers the blocked WMI call.Fix
Read the curves the driver already reports instead of forcing a firmware re-fetch first. On first run these are the factory defaults anyway. This also protects the D-Bus reset path from wedging the EC.
If dropping the reset globally is undesirable for models where the re-fetch works, I'm happy to rework this as a DMI-based quirk instead. There is likely also a kernel-side/firmware issue here (
fan_curve_get_factory_defaultblocking 30s and stalling the EC), which asusd was only exposing.Testing
On the affected FX608JMR:
asus_wmierrors in the kernel logasusctl fan-curve) still workUnrelated confirmation while I was testing: the
FX608JMentry inaura_support.rononmainis correct for this machine — Static, Breathe, RainbowCycle, Pulse all verified working (single-zone, colours honoured).🤖 Generated with Claude Code
https://claude.ai/code/session_014NneBinAM7WAFrqBqXZhA9