[Bug 204807] Hardware monitoring sensor nct6798d doesn't work unless acpi_enforce_resources=lax is enabled

bugzilla-daemon
2026-03-14T23:56:01Z

--- Comment #355 from Theunis Scheepers (ptscheepers@gmail.com) ---
(In reply to Theunis Scheepers from comment #353)
> (In reply to Denis Pauk from comment #352)
> > (In reply to Theunis Scheepers from comment #351)
> > > Requesting addition of ROG STRIX X870E-E GAMING WIFI to the
> > > nct6775-platform.c ASUS WMI board allowlist for stable fan PWM control
> > under
> > > Linux.
> > > --------------
> > > A full data tarball (DSDT binary + decompiled, sensors-detect, dmesg, PWM
> > > override test, hwmon drivers list) is attached to:
> > > https://github.com/zeule/asus-ec-sensors/issues/100
> >
> > The dmesg log attached to github issue does not have mention about resource
> > conflict or applying some custom parameters/patches.
> >
> > Have you applied some patches or custom parameters for the kenel? Could you
> > please provide dmesg messages before and after applying patch or custom
> > parameter?
> >
> > Use comment #350 as example of patch.
>
> Hi Denis,
> Testing results for ROG STRIX X870E-E GAMING WIFI.
> System Info:
>
> Board: ROG STRIX X870E-E GAMING WIFI (DMI vendor: ASUSTeK COMPUTER INC.)
> Kernel: 6.19.8-1-cachyos (CachyOS, Arch-based)
> Chip: NCT6796D-S/NCT6799D-R
>
> Key Finding:
> This board needs to go in asus_msi_boards[], NOT asus_wmi_boards[]. The ACPI
> WMI device has UID AsusMbSwInterface (not ASUSWMI), so asus_wmi_boards[]
> does not match.
> BEFORE patch (ISA path):
>
> dmesg: Found NCT6796D-S/NCT6799D-R or compatible chip at 0x2e:0x290
> No WMI mention in dmesg
> PWM writes via ISA held intermittently but firmware can override
>
> AFTER patch (WMI path via asus_msi_boards[]):
>
> dmesg: Using Asus WMBD method of AsusMbSwInterface to access 0xc1 chip
> WMI read confirmed: ret=0 tmp=0xc1
> PWM writes persist for 22+ seconds
> Fan RPM responds correctly: 1468 → 1153 RPM when setting PWM to 200
> Firmware does NOT override manual control
>
> The patch (one line added to asus_msi_boards[] in nct6775-platform.c):
> "ROG STRIX X670E-I GAMING WIFI",
> + "ROG STRIX X870E-E GAMING WIFI",
> "ROG STRIX X870E-H GAMING WIFI7",
> Full before/after dmesg logs and PWM test results attached if needed.

Hi Denis, apologies for the incomplete data. Here are the before/after dmesg
and PWM results:

BEFORE (stock kernel, no patch):

=== BEFORE dmesg filtered ===
[ 6.136438] asus_wmi: ASUS WMI generic driver loaded
[ 6.138654] asus-ec-sensors asus-ec-sensors: board has 5 EC sensors that
span 6 registers
[ 6.139104] asus_wmi: failed to register LPS0 sleep handler in asus-wmi
[ 6.139227] asus_wmi: Initialization: 0x0
[ 6.139306] asus_wmi: BIOS WMI version: 0.0
[ 6.139382] asus_wmi: SFUN value: 0x0
[ 6.139384] eeepc-wmi eeepc-wmi: Detected AsusMbSwInterface, not ASUSWMI,
use DSTS
[ 6.145311] input: Eee PC WMI hotkeys as
/devices/platform/eeepc-wmi/input/input18

AFTER (added to asus_msi_boards[]):

=== AFTER dmesg filtered ===
[ 6.712988] asus_wmi: ASUS WMI generic driver loaded
[ 6.729934] asus_wmi: failed to register LPS0 sleep handler in asus-wmi
[ 6.730062] asus_wmi: Initialization: 0x0
[ 6.730135] asus_wmi: BIOS WMI version: 0.0
[ 6.730203] asus_wmi: SFUN value: 0x0
[ 6.730204] eeepc-wmi eeepc-wmi: Detected AsusMbSwInterface, not ASUSWMI,
use DSTS
[ 6.730845] asus-ec-sensors asus-ec-sensors: board has 5 EC sensors that
span 6 registers
[ 6.736109] input: Eee PC WMI hotkeys as
/devices/platform/eeepc-wmi/input/input18
[ 595.539067] nct6775_core: module verification failed: signature and/or
required key missing - tainting kernel
[ 595.544039] nct6775: Found NCT6796D-S/NCT6799D-R or compatible chip at
0x2e:0x290
[ 686.026446] nct6775: Found NCT6796D-S/NCT6799D-R or compatible chip at
0x2e:0x290
[ 712.442566] nct6775: Found NCT6796D-S/NCT6799D-R or compatible chip at
0x2e:0x290
[ 740.950908] nct6775: Found NCT6796D-S/NCT6799D-R or compatible chip at
0x2e:0x290
[ 912.805550] nct6775: nct6775: ACPI device not found for UID ASUSWMI
[ 912.805624] nct6775: Found NCT6796D-S/NCT6799D-R or compatible chip at
0x2e:0x290
[ 992.855201] nct6775: nct6775: Found ACPI device for UID AsusMbSwInterface
[ 992.855417] nct6775: nct6775: WMI read ret=0 tmp=0xc1
[ 992.855418] nct6775: nct6775: Using Asus WMBD method of AsusMbSwInterface to
access 0xc1 chip.
[ 992.855486] nct6775: Found NCT6796D-S/NCT6799D-R or compatible chip at
0x2e:0x290

PWM persistence BEFORE (firmware overrides):

=== BEFORE PWM state ===
nct hwmon path: /sys/class/hwmon/hwmon10
fan1: 1792 RPM, pwm1_enable: 5, pwm1: 255
fan2: 1468 RPM, pwm2_enable: 5, pwm2: 255
fan3: 2288 RPM, pwm3_enable: 5, pwm3: 158
fan4: 0 RPM, pwm4_enable: 5, pwm4: 255
fan5: 1829 RPM, pwm5_enable: 5, pwm5: 255
fan6: 2039 RPM, pwm6_enable: 5, pwm6: 255
fan7: 0 RPM, pwm7_enable: 5, pwm7: 205

=== PWM persistence test (BEFORE patch) ===
Before: fan2=1470 RPM, pwm2_enable=5, pwm2=255
After 2s: fan2=1308 RPM, pwm2_enable=1, pwm2=200
After 7s: fan2=1147 RPM, pwm2_enable=1, pwm2=200
After 12s: fan2=1151 RPM, pwm2_enable=1, pwm2=200
Restored to BIOS Q-Fan

PWM persistence AFTER (writes hold 22+ seconds):

=== AFTER PWM state ===
=== PWM persistence test (AFTER patch — asus_msi_boards WMI) ===
Before: fan2=1468 RPM, pwm2_enable=5, pwm2=255
After 2s: fan2=1327 RPM, pwm2_enable=1, pwm2=200
After 7s: fan2=1146 RPM, pwm2_enable=1, pwm2=200
After 12s: fan2=1152 RPM, pwm2_enable=1, pwm2=200
After 22s: fan2=1153 RPM, pwm2_enable=1, pwm2=200
Restored to BIOS Q-Fan

No custom parameters or other patches were applied. The only change was adding
"ROG STRIX X870E-E GAMING WIFI" to asus_msi_boards[] (not asus_wmi_boards[]).
The board's WMI device has UID AsusMbSwInterface, not ASUSWMI.