Re: [PATCH 0/2] platform/x86: asus-armoury: add Whisper Mode support

From: Marco Scardovi

Date: Tue Jul 28 2026 - 10:04:47 EST


In data martedì 28 luglio 2026 13:39:39 Ora legale dell’Europa centrale, Hans
de Goede ha scritto:
> Hi,
>
> Thank you for your patch.
>
> On 28-Jul-26 09:18, Marco Scardovi wrote:
> > This series introduces support for ASUS WMI Whisper Mode hardware controls
> > in the asus-wmi header and asus-armoury driver.
> >
> > Background & Findings:
> > ----------------------
> > After talking with Denis and thanks to NeuroMarshal reverse engineering
> > and
> > firmware trace analysis on modern ASUS laptops, three specific WMI Device
> > IDs were identified that manage acoustic profiles and thermal regulation
> > under ASUS Whisper Mode:
> >
> > 1. ASUS_WMI_DEVID_WHISPER_MODE (0x0012007A):
> > - Controls the BIOS-level Whisper Mode acoustic profile toggle
> > (read/write boolean).>
> > 2. ASUS_WMI_DEVID_WHISPER_ENABLE (0x00090022):
> > - Enables or disables Dynamic Whisper acoustic regulation (read/write
> > boolean).>
> > 3. ASUS_WMI_DEVID_WHISPER_STATUS (0x00090023):
> > - Reports status and allows runtime control over Dynamic Whisper state
> > (read/write boolean).
> I wonder how this interacts with the platform_profile stuff ?
>
> I would expect enabling whisper mode to lower the max performance,
> so does this automatically change the platform_profile away
> from performance when it is set to performance ?
>
> Note the platform_profile API is extensible. To me it seems more
> logical to expose this as a whisper mode platform-profile ?
>
> Regards,
>
> Hans

Hi Hans,

Thanks for the feedback!
Here you can find my opinions on your questions.

1. Interaction with platform_profile:
In ASUS laptops, where presents, Whisper Mode operates as an
independent boolean toggle/feature controlling fan acoustic target limits in
firmware/EC, rather than acting as a global thermal profile. Setting
WHISPER_MODE or WHISPER_ENABLE via WMI sends a direct call to the EC/BIOS,
which adjusts acoustic thresholds internally without altering the active
platform_profile state (throttle_thermal_policy) in asus-wmi. IIRC on Windows
it even permits to "hear" the ambient to make the fans run in a way to blend
with the ambient noise.

2. platform_profile vs firmware_attributes (asus-armoury):
platform_profile is designed for mutually exclusive global power/thermal
modes (Quiet, Balanced, Performance). Whisper Mode, on the other hand,
consists of independent BIOS feature toggles (0/1 controls for BIOS Whisper
Mode, Dynamic Whisper Enable, and Status).
Since asus-armoury is dedicated to exposing BIOS/Armoury Crate firmware
attributes via fw_attributes_class (similar to nv_dynamic_boost,
nv_temp_target, panel_od, etc.), exposing these three WMI controls as
sysfs firmware attributes fits the overall design of asus-armoury much
better than extending platform_profile.

I hope I've been of help. Feel free to let me know if you have more
questions: I'll try to answer the best of my capacities.

Best regards,
Marco
>
> > Series Overview:
> > ----------------
> > - Patch 1/2: Adds WMI Device ID macro definitions to
> >
> > include/linux/platform_data/x86/asus-wmi.h.
> >
> > - Patch 2/2: Exposes whisper_mode, whisper_enable, and whisper_status
> > sysfs
> >
> > attribute groups in drivers/platform/x86/asus-armoury.c.
> >
> > Safety & Compatibility:
> > -----------------------
> > All newly introduced attributes are probed via armoury_has_devstate()
> > before sysfs registration. On devices where these WMI methods are not
> > implemented by firmware, the sysfs nodes are gracefully omitted without
> > impacting existing attributes or functionality.
> >
> > Validation:
> > -----------
> > - Build verification against linux-next cleanly with zero warnings or
> > errors. - Coding style and formatting verified via git diff --check.
> >
> > Note:
> > -----------
> > Unfortunately, due to it being missing on my laptop, I'm not able to
> > verify
> > if the WhisperMode works as intended. The values are the same reported by
> > NeuroMarshal on his reverse engineering of Armoury Crate [1] so they
> > *should* work.
> >
> > [1] https://github.com/NeuroMarshal/armoury-linux-probe
> >
> > Marco Scardovi (2):
> > platform/x86: asus-wmi: add Whisper Mode WMI device ID defines
> > platform/x86: asus-armoury: add Whisper Mode attributes
> >
> > drivers/platform/x86/asus-armoury.c | 14 ++++++++++++++
> > include/linux/platform_data/x86/asus-wmi.h | 5 +++++
> > 2 files changed, 19 insertions(+)