drivers/platform/x86/asus-nb-wmi.c | 17 +++++++++++++++++ drivers/platform/x86/asus-wmi.h | 1 + 2 files changed, 18 insertions(+)
The ASUS ROG Zephyrus G16 GU605MY periodically emits an
unrecognized WMI event (0xe5), approximately every 12 seconds.
The event is reported as KEY_UNKNOWN through the Asus WMI hotkeys
input device. When the session is locked, it causes both the
internal display and an external monitor connected through a
Thunderbolt dock to wake up repeatedly.
Add a DMI-specific quirk to suppress this event on the GU605MY
without affecting other ASUS notebook models.
Ignoring the event was first verified on a 7.2.7-based OGC kernel.
The DMI-specific quirk was subsequently built against 7.2.8-ogc5
and tested on 7.2.9-ogc2 and 7.2.9-ogc4. On both 7.2.9 variants,
the DMI match was confirmed and the unknown 0xe5 event messages
disappeared.
Signed-off-by: Evgeny Volferts <eugene.wolferz@gmail.com>
---
drivers/platform/x86/asus-nb-wmi.c | 17 +++++++++++++++++
drivers/platform/x86/asus-wmi.h | 1 +
2 files changed, 18 insertions(+)
diff --git a/drivers/platform/x86/asus-nb-wmi.c b/drivers/platform/x86/asus-nb-wmi.c
index aeb461b1644d..8d69231d25a0 100644
--- a/drivers/platform/x86/asus-nb-wmi.c
+++ b/drivers/platform/x86/asus-nb-wmi.c
@@ -150,6 +150,10 @@ static struct quirk_entry quirk_asus_zenbook_duo_kbd = {
.key_wlan_event = ASUS_WMI_KEY_IGNORE,
};
+static struct quirk_entry quirk_asus_gu605my = {
+ .ignore_e5_wmi_event = true,
+};
+
static struct quirk_entry quirk_asus_z13 = {
.key_wlan_event = ASUS_WMI_KEY_ARMOURY,
.tablet_switch_mode = asus_wmi_kbd_dock_devid,
@@ -562,6 +566,15 @@ static const struct dmi_system_id asus_quirks[] = {
},
.driver_data = &quirk_asus_z13,
},
+ {
+ .callback = dmi_matched,
+ .ident = "ASUS ROG Zephyrus G16 GU605MY",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
+ DMI_MATCH(DMI_PRODUCT_NAME, "ROG Zephyrus G16 GU605MY_GU605MY"),
+ },
+ .driver_data = &quirk_asus_gu605my,
+ },
{},
};
@@ -690,6 +703,10 @@ static void asus_nb_wmi_key_filter(struct asus_wmi_driver *asus_wmi, int *code,
if (quirks->key_wlan_event)
*code = quirks->key_wlan_event;
break;
+ case 0xE5:
+ if (quirks->ignore_e5_wmi_event)
+ *code = ASUS_WMI_KEY_IGNORE;
+ break;
}
}
diff --git a/drivers/platform/x86/asus-wmi.h b/drivers/platform/x86/asus-wmi.h
index 5cd4392b964e..e7772397cd10 100644
--- a/drivers/platform/x86/asus-wmi.h
+++ b/drivers/platform/x86/asus-wmi.h
@@ -41,6 +41,7 @@ struct quirk_entry {
bool wmi_force_als_set;
bool wmi_ignore_fan;
bool filter_i8042_e1_extended_codes;
+ bool ignore_e5_wmi_event;
int key_wlan_event;
enum asus_wmi_tablet_switch_mode tablet_switch_mode;
int wapf;
--
2.56.0
On 10/15/26 18:30, Evgeny Volferts wrote:
> The ASUS ROG Zephyrus G16 GU605MY periodically emits an
> unrecognized WMI event (0xe5), approximately every 12 seconds.
>
> The event is reported as KEY_UNKNOWN through the Asus WMI hotkeys
> input device. When the session is locked, it causes both the
> internal display and an external monitor connected through a
> Thunderbolt dock to wake up repeatedly.
>
> Add a DMI-specific quirk to suppress this event on the GU605MY
> without affecting other ASUS notebook models.
>
> Ignoring the event was first verified on a 7.2.7-based OGC kernel.
> The DMI-specific quirk was subsequently built against 7.2.8-ogc5
> and tested on 7.2.9-ogc2 and 7.2.9-ogc4. On both 7.2.9 variants,
> the DMI match was confirmed and the unknown 0xe5 event messages
> disappeared.
Hi Evgeny,
Thank you for your work!
I am thinking that a quirk with e5 in the name is a bit overly specific...
That code has never been handled and is just the EC repeating some settings.
I am thinking that perhaps the best thing to do is just create a case 0xE5 that
simply does the ignore with no quirks check and a nice comment outlining
why it is done.
I don't see asus repurposing that for something else honestly so it should
be future-proof enough and will potentially avoid this to other models as
well.
On the other end it would be cool to know what that really is telling us...
If you don't come up with an answer I would defer to Ilpo whether preferring
reducing quirks or keeping the symmetry within that key_filter function.
I am fine either way.
Best regards,
Denis Benato
> Signed-off-by: Evgeny Volferts <eugene.wolferz@gmail.com>
> ---
> drivers/platform/x86/asus-nb-wmi.c | 17 +++++++++++++++++
> drivers/platform/x86/asus-wmi.h | 1 +
> 2 files changed, 18 insertions(+)
>
> diff --git a/drivers/platform/x86/asus-nb-wmi.c b/drivers/platform/x86/asus-nb-wmi.c
> index aeb461b1644d..8d69231d25a0 100644
> --- a/drivers/platform/x86/asus-nb-wmi.c
> +++ b/drivers/platform/x86/asus-nb-wmi.c
> @@ -150,6 +150,10 @@ static struct quirk_entry quirk_asus_zenbook_duo_kbd = {
> .key_wlan_event = ASUS_WMI_KEY_IGNORE,
> };
>
> +static struct quirk_entry quirk_asus_gu605my = {
> + .ignore_e5_wmi_event = true,
> +};
> +
> static struct quirk_entry quirk_asus_z13 = {
> .key_wlan_event = ASUS_WMI_KEY_ARMOURY,
> .tablet_switch_mode = asus_wmi_kbd_dock_devid,
> @@ -562,6 +566,15 @@ static const struct dmi_system_id asus_quirks[] = {
> },
> .driver_data = &quirk_asus_z13,
> },
> + {
> + .callback = dmi_matched,
> + .ident = "ASUS ROG Zephyrus G16 GU605MY",
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
> + DMI_MATCH(DMI_PRODUCT_NAME, "ROG Zephyrus G16 GU605MY_GU605MY"),
> + },
> + .driver_data = &quirk_asus_gu605my,
> + },
> {},
> };
>
> @@ -690,6 +703,10 @@ static void asus_nb_wmi_key_filter(struct asus_wmi_driver *asus_wmi, int *code,
> if (quirks->key_wlan_event)
> *code = quirks->key_wlan_event;
> break;
> + case 0xE5:
> + if (quirks->ignore_e5_wmi_event)
> + *code = ASUS_WMI_KEY_IGNORE;
> + break;
> }
> }
>
> diff --git a/drivers/platform/x86/asus-wmi.h b/drivers/platform/x86/asus-wmi.h
> index 5cd4392b964e..e7772397cd10 100644
> --- a/drivers/platform/x86/asus-wmi.h
> +++ b/drivers/platform/x86/asus-wmi.h
> @@ -41,6 +41,7 @@ struct quirk_entry {
> bool wmi_force_als_set;
> bool wmi_ignore_fan;
> bool filter_i8042_e1_extended_codes;
> + bool ignore_e5_wmi_event;
> int key_wlan_event;
> enum asus_wmi_tablet_switch_mode tablet_switch_mode;
> int wapf;
On Tue, 20 Oct 2026, Denis Benato wrote:
>
> On 10/15/26 18:30, Evgeny Volferts wrote:
> > The ASUS ROG Zephyrus G16 GU605MY periodically emits an
> > unrecognized WMI event (0xe5), approximately every 12 seconds.
> >
> > The event is reported as KEY_UNKNOWN through the Asus WMI hotkeys
> > input device. When the session is locked, it causes both the
> > internal display and an external monitor connected through a
> > Thunderbolt dock to wake up repeatedly.
> >
> > Add a DMI-specific quirk to suppress this event on the GU605MY
> > without affecting other ASUS notebook models.
> >
> > Ignoring the event was first verified on a 7.2.7-based OGC kernel.
> > The DMI-specific quirk was subsequently built against 7.2.8-ogc5
> > and tested on 7.2.9-ogc2 and 7.2.9-ogc4. On both 7.2.9 variants,
> > the DMI match was confirmed and the unknown 0xe5 event messages
> > disappeared.
>
> Hi Evgeny,
>
> Thank you for your work!
>
> I am thinking that a quirk with e5 in the name is a bit overly specific...
>
> That code has never been handled and is just the EC repeating some settings.
>
> I am thinking that perhaps the best thing to do is just create a case 0xE5 that
> simply does the ignore with no quirks check and a nice comment outlining
> why it is done.
>
> I don't see asus repurposing that for something else honestly so it should
> be future-proof enough and will potentially avoid this to other models as
> well.
>
> On the other end it would be cool to know what that really is telling us...
>
> If you don't come up with an answer I would defer to Ilpo whether preferring
> reducing quirks or keeping the symmetry within that key_filter function.
>
> I am fine either way.
Don't we need to touch the code anyway if the code is repurposed, so
having this behind a quirk doesn't really win us anything over just
ignoring it for any model.
--
i.
> Best regards,
> Denis Benato
>
> > Signed-off-by: Evgeny Volferts <eugene.wolferz@gmail.com>
> > ---
> > drivers/platform/x86/asus-nb-wmi.c | 17 +++++++++++++++++
> > drivers/platform/x86/asus-wmi.h | 1 +
> > 2 files changed, 18 insertions(+)
> >
> > diff --git a/drivers/platform/x86/asus-nb-wmi.c b/drivers/platform/x86/asus-nb-wmi.c
> > index aeb461b1644d..8d69231d25a0 100644
> > --- a/drivers/platform/x86/asus-nb-wmi.c
> > +++ b/drivers/platform/x86/asus-nb-wmi.c
> > @@ -150,6 +150,10 @@ static struct quirk_entry quirk_asus_zenbook_duo_kbd = {
> > .key_wlan_event = ASUS_WMI_KEY_IGNORE,
> > };
> >
> > +static struct quirk_entry quirk_asus_gu605my = {
> > + .ignore_e5_wmi_event = true,
> > +};
> > +
> > static struct quirk_entry quirk_asus_z13 = {
> > .key_wlan_event = ASUS_WMI_KEY_ARMOURY,
> > .tablet_switch_mode = asus_wmi_kbd_dock_devid,
> > @@ -562,6 +566,15 @@ static const struct dmi_system_id asus_quirks[] = {
> > },
> > .driver_data = &quirk_asus_z13,
> > },
> > + {
> > + .callback = dmi_matched,
> > + .ident = "ASUS ROG Zephyrus G16 GU605MY",
> > + .matches = {
> > + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
> > + DMI_MATCH(DMI_PRODUCT_NAME, "ROG Zephyrus G16 GU605MY_GU605MY"),
> > + },
> > + .driver_data = &quirk_asus_gu605my,
> > + },
> > {},
> > };
> >
> > @@ -690,6 +703,10 @@ static void asus_nb_wmi_key_filter(struct asus_wmi_driver *asus_wmi, int *code,
> > if (quirks->key_wlan_event)
> > *code = quirks->key_wlan_event;
> > break;
> > + case 0xE5:
> > + if (quirks->ignore_e5_wmi_event)
> > + *code = ASUS_WMI_KEY_IGNORE;
> > + break;
> > }
> > }
> >
> > diff --git a/drivers/platform/x86/asus-wmi.h b/drivers/platform/x86/asus-wmi.h
> > index 5cd4392b964e..e7772397cd10 100644
> > --- a/drivers/platform/x86/asus-wmi.h
> > +++ b/drivers/platform/x86/asus-wmi.h
> > @@ -41,6 +41,7 @@ struct quirk_entry {
> > bool wmi_force_als_set;
> > bool wmi_ignore_fan;
> > bool filter_i8042_e1_extended_codes;
> > + bool ignore_e5_wmi_event;
> > int key_wlan_event;
> > enum asus_wmi_tablet_switch_mode tablet_switch_mode;
> > int wapf;
>
20 ott 2026 13:12:11 Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>:
> On Tue, 20 Oct 2026, Denis Benato wrote:
>
>>
>> On 10/15/26 18:30, Evgeny Volferts wrote:
>>> The ASUS ROG Zephyrus G16 GU605MY periodically emits an
>>> unrecognized WMI event (0xe5), approximately every 12 seconds.
>>>
>>> The event is reported as KEY_UNKNOWN through the Asus WMI hotkeys
>>> input device. When the session is locked, it causes both the
>>> internal display and an external monitor connected through a
>>> Thunderbolt dock to wake up repeatedly.
>>>
>>> Add a DMI-specific quirk to suppress this event on the GU605MY
>>> without affecting other ASUS notebook models.
>>>
>>> Ignoring the event was first verified on a 7.2.7-based OGC kernel.
>>> The DMI-specific quirk was subsequently built against 7.2.8-ogc5
>>> and tested on 7.2.9-ogc2 and 7.2.9-ogc4. On both 7.2.9 variants,
>>> the DMI match was confirmed and the unknown 0xe5 event messages
>>> disappeared.
>>
>> Hi Evgeny,
>>
>> Thank you for your work!
>>
>> I am thinking that a quirk with e5 in the name is a bit overly specific...
>>
>> That code has never been handled and is just the EC repeating some settings.
>>
>> I am thinking that perhaps the best thing to do is just create a case 0xE5 that
>> simply does the ignore with no quirks check and a nice comment outlining
>> why it is done.
>>
>> I don't see asus repurposing that for something else honestly so it should
>> be future-proof enough and will potentially avoid this to other models as
>> well.
>>
>> On the other end it would be cool to know what that really is telling us...
>>
>> If you don't come up with an answer I would defer to Ilpo whether preferring
>> reducing quirks or keeping the symmetry within that key_filter function.
>>
>> I am fine either way.
>
> Don't we need to touch the code anyway if the code is repurposed, so
> having this behind a quirk doesn't really win us anything over just
> ignoring it for any model.
>
Yeah, I expressed myself poorly: my reasoning was more like dev-oriented: if a feature doesn't work at all but a dmesg error appears then it's super easy to spot it... While if nothing happens that complicates things... And I like when the driver tells me "ehi, fill this TODO" / "complete this part".
> --
> i.
>
>> Best regards,
>> Denis Benato
>>
>>> Signed-off-by: Evgeny Volferts <eugene.wolferz@gmail.com>
>>> ---
>>> drivers/platform/x86/asus-nb-wmi.c | 17 +++++++++++++++++
>>> drivers/platform/x86/asus-wmi.h | 1 +
>>> 2 files changed, 18 insertions(+)
>>>
>>> diff --git a/drivers/platform/x86/asus-nb-wmi.c b/drivers/platform/x86/asus-nb-wmi.c
>>> index aeb461b1644d..8d69231d25a0 100644
>>> --- a/drivers/platform/x86/asus-nb-wmi.c
>>> +++ b/drivers/platform/x86/asus-nb-wmi.c
>>> @@ -150,6 +150,10 @@ static struct quirk_entry quirk_asus_zenbook_duo_kbd = {
>>> .key_wlan_event = ASUS_WMI_KEY_IGNORE,
>>> };
>>>
>>> +static struct quirk_entry quirk_asus_gu605my = {
>>> + .ignore_e5_wmi_event = true,
>>> +};
>>> +
>>> static struct quirk_entry quirk_asus_z13 = {
>>> .key_wlan_event = ASUS_WMI_KEY_ARMOURY,
>>> .tablet_switch_mode = asus_wmi_kbd_dock_devid,
>>> @@ -562,6 +566,15 @@ static const struct dmi_system_id asus_quirks[] = {
>>> },
>>> .driver_data = &quirk_asus_z13,
>>> },
>>> + {
>>> + .callback = dmi_matched,
>>> + .ident = "ASUS ROG Zephyrus G16 GU605MY",
>>> + .matches = {
>>> + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
>>> + DMI_MATCH(DMI_PRODUCT_NAME, "ROG Zephyrus G16 GU605MY_GU605MY"),
>>> + },
>>> + .driver_data = &quirk_asus_gu605my,
>>> + },
>>> {},
>>> };
>>>
>>> @@ -690,6 +703,10 @@ static void asus_nb_wmi_key_filter(struct asus_wmi_driver *asus_wmi, int *code,
>>> if (quirks->key_wlan_event)
>>> *code = quirks->key_wlan_event;
>>> break;
>>> + case 0xE5:
>>> + if (quirks->ignore_e5_wmi_event)
>>> + *code = ASUS_WMI_KEY_IGNORE;
>>> + break;
>>> }
>>> }
>>>
>>> diff --git a/drivers/platform/x86/asus-wmi.h b/drivers/platform/x86/asus-wmi.h
>>> index 5cd4392b964e..e7772397cd10 100644
>>> --- a/drivers/platform/x86/asus-wmi.h
>>> +++ b/drivers/platform/x86/asus-wmi.h
>>> @@ -41,6 +41,7 @@ struct quirk_entry {
>>> bool wmi_force_als_set;
>>> bool wmi_ignore_fan;
>>> bool filter_i8042_e1_extended_codes;
>>> + bool ignore_e5_wmi_event;
>>> int key_wlan_event;
>>> enum asus_wmi_tablet_switch_mode tablet_switch_mode;
>>> int wapf;
>>
On Tue, Oct 20, 2026, Denis Benato wrote:
> I am thinking that a quirk with e5 in the name is a bit overly specific...
>
> I am thinking that perhaps the best thing to do is just create a case 0xE5 that
> simply does the ignore with no quirks check and a nice comment outlining
> why it is done.
Hi Denis,
Thank you for the review!
I agree that a DMI-specific quirk is probably unnecessary here,
especially since the same event has been observed on other ASUS
models.
I initially tested a global KE_IGNORE entry for 0xE5 on my GU605MY
with a 7.2.7-based kernel, and it successfully stopped the repeated
display wakeups.
I also noticed the related patch series from Seyed Mohammad Mahdi
Hosseini, which proposes the same global KE_IGNORE approach:
https://lore.kernel.org/platform-driver-x86/cover.1791672579.git.i@smmh.dev/
Since my patch was submitted first, I would be happy to prepare a v2
using the global KE_IGNORE approach, incorporating your feedback.
Would you prefer that I submit a v2, or should we wait for Ilpo's
opinion on how to handle the overlapping submissions?
Best regards,
Evgeny
С уважением, Евгений.
+7 (926) 607-70-19
https://t.me/mreugene
On Tue, 20 Oct 2026 at 01:12, Denis Benato <denis.benato@linux.dev> wrote:
>
>
> On 10/15/26 18:30, Evgeny Volferts wrote:
> > The ASUS ROG Zephyrus G16 GU605MY periodically emits an
> > unrecognized WMI event (0xe5), approximately every 12 seconds.
> >
> > The event is reported as KEY_UNKNOWN through the Asus WMI hotkeys
> > input device. When the session is locked, it causes both the
> > internal display and an external monitor connected through a
> > Thunderbolt dock to wake up repeatedly.
> >
> > Add a DMI-specific quirk to suppress this event on the GU605MY
> > without affecting other ASUS notebook models.
> >
> > Ignoring the event was first verified on a 7.2.7-based OGC kernel.
> > The DMI-specific quirk was subsequently built against 7.2.8-ogc5
> > and tested on 7.2.9-ogc2 and 7.2.9-ogc4. On both 7.2.9 variants,
> > the DMI match was confirmed and the unknown 0xe5 event messages
> > disappeared.
>
> Hi Evgeny,
>
> Thank you for your work!
>
> I am thinking that a quirk with e5 in the name is a bit overly specific...
>
> That code has never been handled and is just the EC repeating some settings.
>
> I am thinking that perhaps the best thing to do is just create a case 0xE5 that
> simply does the ignore with no quirks check and a nice comment outlining
> why it is done.
>
> I don't see asus repurposing that for something else honestly so it should
> be future-proof enough and will potentially avoid this to other models as
> well.
>
> On the other end it would be cool to know what that really is telling us...
>
> If you don't come up with an answer I would defer to Ilpo whether preferring
> reducing quirks or keeping the symmetry within that key_filter function.
>
> I am fine either way.
>
> Best regards,
> Denis Benato
>
> > Signed-off-by: Evgeny Volferts <eugene.wolferz@gmail.com>
> > ---
> > drivers/platform/x86/asus-nb-wmi.c | 17 +++++++++++++++++
> > drivers/platform/x86/asus-wmi.h | 1 +
> > 2 files changed, 18 insertions(+)
> >
> > diff --git a/drivers/platform/x86/asus-nb-wmi.c b/drivers/platform/x86/asus-nb-wmi.c
> > index aeb461b1644d..8d69231d25a0 100644
> > --- a/drivers/platform/x86/asus-nb-wmi.c
> > +++ b/drivers/platform/x86/asus-nb-wmi.c
> > @@ -150,6 +150,10 @@ static struct quirk_entry quirk_asus_zenbook_duo_kbd = {
> > .key_wlan_event = ASUS_WMI_KEY_IGNORE,
> > };
> >
> > +static struct quirk_entry quirk_asus_gu605my = {
> > + .ignore_e5_wmi_event = true,
> > +};
> > +
> > static struct quirk_entry quirk_asus_z13 = {
> > .key_wlan_event = ASUS_WMI_KEY_ARMOURY,
> > .tablet_switch_mode = asus_wmi_kbd_dock_devid,
> > @@ -562,6 +566,15 @@ static const struct dmi_system_id asus_quirks[] = {
> > },
> > .driver_data = &quirk_asus_z13,
> > },
> > + {
> > + .callback = dmi_matched,
> > + .ident = "ASUS ROG Zephyrus G16 GU605MY",
> > + .matches = {
> > + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
> > + DMI_MATCH(DMI_PRODUCT_NAME, "ROG Zephyrus G16 GU605MY_GU605MY"),
> > + },
> > + .driver_data = &quirk_asus_gu605my,
> > + },
> > {},
> > };
> >
> > @@ -690,6 +703,10 @@ static void asus_nb_wmi_key_filter(struct asus_wmi_driver *asus_wmi, int *code,
> > if (quirks->key_wlan_event)
> > *code = quirks->key_wlan_event;
> > break;
> > + case 0xE5:
> > + if (quirks->ignore_e5_wmi_event)
> > + *code = ASUS_WMI_KEY_IGNORE;
> > + break;
> > }
> > }
> >
> > diff --git a/drivers/platform/x86/asus-wmi.h b/drivers/platform/x86/asus-wmi.h
> > index 5cd4392b964e..e7772397cd10 100644
> > --- a/drivers/platform/x86/asus-wmi.h
> > +++ b/drivers/platform/x86/asus-wmi.h
> > @@ -41,6 +41,7 @@ struct quirk_entry {
> > bool wmi_force_als_set;
> > bool wmi_ignore_fan;
> > bool filter_i8042_e1_extended_codes;
> > + bool ignore_e5_wmi_event;
> > int key_wlan_event;
> > enum asus_wmi_tablet_switch_mode tablet_switch_mode;
> > int wapf;
© 2016 - 2026 Red Hat, Inc.