[PATCH 2/4] HID: asus: Filter spurious HID vendor codes on ROG laptops

Ionut Nechita (Sunlight Linux) posted 4 patches 1 month ago
[PATCH 2/4] HID: asus: Filter spurious HID vendor codes on ROG laptops
Posted by Ionut Nechita (Sunlight Linux) 1 month ago
From: Ionut Nechita <ionut_n2001@yahoo.com>

On Asus ROG G14 and G15 laptops, several HID vendor usage codes (0xea,
0xec, 0x02, 0x8a, 0x9e) are sent during normal operation without a clear
purpose, generating unwanted "Unmapped Asus vendor usagepage code"
warnings in dmesg.

Add definitions for these codes and filter them out in asus_raw_event()
to prevent kernel log spam.

Tested on Asus ROG G14/G15 series laptops.

Change-Id: I3f3b3a1e1698c8689e4c57582635435bfeda5990
Signed-off-by: Ionut Nechita <ionut_n2001@yahoo.com>
---
 drivers/hid/hid-asus.c | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/drivers/hid/hid-asus.c b/drivers/hid/hid-asus.c
index eb14b9d13823b..06cd3d3b74af7 100644
--- a/drivers/hid/hid-asus.c
+++ b/drivers/hid/hid-asus.c
@@ -57,6 +57,13 @@ MODULE_DESCRIPTION("Asus HID Keyboard and TouchPad");
 #define ROG_ALLY_X_MIN_MCU 313
 #define ROG_ALLY_MIN_MCU 319
 
+/* Spurious HID codes sent by QUIRK_ROG_NKEY_KEYBOARD devices */
+#define ASUS_SPURIOUS_CODE_0XEA 0xea
+#define ASUS_SPURIOUS_CODE_0XEC 0xec
+#define ASUS_SPURIOUS_CODE_0X02 0x02
+#define ASUS_SPURIOUS_CODE_0X8A 0x8a
+#define ASUS_SPURIOUS_CODE_0X9E 0x9e
+
 #define SUPPORT_KBD_BACKLIGHT BIT(0)
 
 #define MAX_TOUCH_MAJOR 8
@@ -348,6 +355,21 @@ static int asus_raw_event(struct hid_device *hdev,
 	if (report->id == FEATURE_KBD_LED_REPORT_ID1 || report->id == FEATURE_KBD_LED_REPORT_ID2)
 		return -1;
 	if (drvdata->quirks & QUIRK_ROG_NKEY_KEYBOARD) {
+		/*
+		 * G14 and G15 send these codes on some keypresses with no
+		 * discernable reason for doing so. Filter them out to avoid
+		 * unmapped warning messages.
+		 */
+		if (report->id == FEATURE_KBD_REPORT_ID) {
+			if (data[1] == ASUS_SPURIOUS_CODE_0XEA ||
+			    data[1] == ASUS_SPURIOUS_CODE_0XEC ||
+			    data[1] == ASUS_SPURIOUS_CODE_0X02 ||
+			    data[1] == ASUS_SPURIOUS_CODE_0X8A ||
+			    data[1] == ASUS_SPURIOUS_CODE_0X9E) {
+				return -1;
+			}
+		}
+
 		/*
 		 * G713 and G733 send these codes on some keypresses, depending on
 		 * the key pressed it can trigger a shutdown event if not caught.
-- 
2.52.0
Re: [PATCH 2/4] HID: asus: Filter spurious HID vendor codes on ROG laptops
Posted by Mario Limonciello 1 month ago
On 1/7/26 5:19 AM, Ionut Nechita (Sunlight Linux) wrote:
> From: Ionut Nechita <ionut_n2001@yahoo.com>
> 
> On Asus ROG G14 and G15 laptops, several HID vendor usage codes (0xea,
> 0xec, 0x02, 0x8a, 0x9e) are sent during normal operation without a clear
> purpose, generating unwanted "Unmapped Asus vendor usagepage code"
> warnings in dmesg.
> 
> Add definitions for these codes and filter them out in asus_raw_event()
> to prevent kernel log spam.
> 
> Tested on Asus ROG G14/G15 series laptops.
> 
> Change-Id: I3f3b3a1e1698c8689e4c57582635435bfeda5990

Please strip Change-Id when sending patches to LKML.

> Signed-off-by: Ionut Nechita <ionut_n2001@yahoo.com>

Otherwise LGTM, feel free to add to next version.

Reviewed-by: Mario Limonciello (AMD) <superm1@kernel.org>

> ---
>   drivers/hid/hid-asus.c | 22 ++++++++++++++++++++++
>   1 file changed, 22 insertions(+)
> 
> diff --git a/drivers/hid/hid-asus.c b/drivers/hid/hid-asus.c
> index eb14b9d13823b..06cd3d3b74af7 100644
> --- a/drivers/hid/hid-asus.c
> +++ b/drivers/hid/hid-asus.c
> @@ -57,6 +57,13 @@ MODULE_DESCRIPTION("Asus HID Keyboard and TouchPad");
>   #define ROG_ALLY_X_MIN_MCU 313
>   #define ROG_ALLY_MIN_MCU 319
>   
> +/* Spurious HID codes sent by QUIRK_ROG_NKEY_KEYBOARD devices */
> +#define ASUS_SPURIOUS_CODE_0XEA 0xea
> +#define ASUS_SPURIOUS_CODE_0XEC 0xec
> +#define ASUS_SPURIOUS_CODE_0X02 0x02
> +#define ASUS_SPURIOUS_CODE_0X8A 0x8a
> +#define ASUS_SPURIOUS_CODE_0X9E 0x9e
> +
>   #define SUPPORT_KBD_BACKLIGHT BIT(0)
>   
>   #define MAX_TOUCH_MAJOR 8
> @@ -348,6 +355,21 @@ static int asus_raw_event(struct hid_device *hdev,
>   	if (report->id == FEATURE_KBD_LED_REPORT_ID1 || report->id == FEATURE_KBD_LED_REPORT_ID2)
>   		return -1;
>   	if (drvdata->quirks & QUIRK_ROG_NKEY_KEYBOARD) {
> +		/*
> +		 * G14 and G15 send these codes on some keypresses with no
> +		 * discernable reason for doing so. Filter them out to avoid
> +		 * unmapped warning messages.
> +		 */
> +		if (report->id == FEATURE_KBD_REPORT_ID) {
> +			if (data[1] == ASUS_SPURIOUS_CODE_0XEA ||
> +			    data[1] == ASUS_SPURIOUS_CODE_0XEC ||
> +			    data[1] == ASUS_SPURIOUS_CODE_0X02 ||
> +			    data[1] == ASUS_SPURIOUS_CODE_0X8A ||
> +			    data[1] == ASUS_SPURIOUS_CODE_0X9E) {
> +				return -1;
> +			}
> +		}
> +
>   		/*
>   		 * G713 and G733 send these codes on some keypresses, depending on
>   		 * the key pressed it can trigger a shutdown event if not caught.
Re: [PATCH 2/4] HID: asus: Filter spurious HID vendor codes on ROG laptops
Posted by Denis Benato 1 month ago
On 1/7/26 12:19, Ionut Nechita (Sunlight Linux) wrote:
> From: Ionut Nechita <ionut_n2001@yahoo.com>
>
> On Asus ROG G14 and G15 laptops, several HID vendor usage codes (0xea,
> 0xec, 0x02, 0x8a, 0x9e) are sent during normal operation without a clear
> purpose, generating unwanted "Unmapped Asus vendor usagepage code"
> warnings in dmesg.
>
> Add definitions for these codes and filter them out in asus_raw_event()
> to prevent kernel log spam.
>
> Tested on Asus ROG G14/G15 series laptops.
>
> Change-Id: I3f3b3a1e1698c8689e4c57582635435bfeda5990
> Signed-off-by: Ionut Nechita <ionut_n2001@yahoo.com>
Reviewed-by: Denis Benato <benato.denis96@gmail.com>
> ---
>  drivers/hid/hid-asus.c | 22 ++++++++++++++++++++++
>  1 file changed, 22 insertions(+)
>
> diff --git a/drivers/hid/hid-asus.c b/drivers/hid/hid-asus.c
> index eb14b9d13823b..06cd3d3b74af7 100644
> --- a/drivers/hid/hid-asus.c
> +++ b/drivers/hid/hid-asus.c
> @@ -57,6 +57,13 @@ MODULE_DESCRIPTION("Asus HID Keyboard and TouchPad");
>  #define ROG_ALLY_X_MIN_MCU 313
>  #define ROG_ALLY_MIN_MCU 319
>  
> +/* Spurious HID codes sent by QUIRK_ROG_NKEY_KEYBOARD devices */
> +#define ASUS_SPURIOUS_CODE_0XEA 0xea
> +#define ASUS_SPURIOUS_CODE_0XEC 0xec
> +#define ASUS_SPURIOUS_CODE_0X02 0x02
> +#define ASUS_SPURIOUS_CODE_0X8A 0x8a
> +#define ASUS_SPURIOUS_CODE_0X9E 0x9e
> +
I don't know what's the preferred way to call these, I am happy
with any way.
>  #define SUPPORT_KBD_BACKLIGHT BIT(0)
>  
>  #define MAX_TOUCH_MAJOR 8
> @@ -348,6 +355,21 @@ static int asus_raw_event(struct hid_device *hdev,
>  	if (report->id == FEATURE_KBD_LED_REPORT_ID1 || report->id == FEATURE_KBD_LED_REPORT_ID2)
>  		return -1;
>  	if (drvdata->quirks & QUIRK_ROG_NKEY_KEYBOARD) {
> +		/*
> +		 * G14 and G15 send these codes on some keypresses with no
> +		 * discernable reason for doing so. Filter them out to avoid
> +		 * unmapped warning messages.
> +		 */
Pretty much all ASUS laptops do, not just G14 or G15, and it's not
only on keypresses.
> +		if (report->id == FEATURE_KBD_REPORT_ID) {
> +			if (data[1] == ASUS_SPURIOUS_CODE_0XEA ||
> +			    data[1] == ASUS_SPURIOUS_CODE_0XEC ||
> +			    data[1] == ASUS_SPURIOUS_CODE_0X02 ||
> +			    data[1] == ASUS_SPURIOUS_CODE_0X8A ||
> +			    data[1] == ASUS_SPURIOUS_CODE_0X9E) {
> +				return -1;
> +			}
> +		}
> +
>  		/*
>  		 * G713 and G733 send these codes on some keypresses, depending on
>  		 * the key pressed it can trigger a shutdown event if not caught.