From: Denis Benato <denis.benato@linux.dev>
To: Paolo Pisati <p.pisati@gmail.com>, Jiri Kosina <jikos@kernel.org>,
Benjamin Tissoires <bentiss@kernel.org>
Cc: linux-input@vger.kernel.org, linux-kernel@vger.kernel.org,
"Luke Jones" <luke@ljones.dev>,
"Joshua Leivenzon" <hacker1024@users.sourceforge.net>,
"Ivan Levchenko" <me@livan.pro>,
"Rebecca Mara Müller" <rebecca.mara@posteo.de>,
"Nathan Chancellor" <nathan@kernel.org>
Subject: Re: [PATCH v3 5/7] HID: asus: Do not send feature reports larger than declared
Date: Sun, 18 Oct 2026 18:52:17 +0200 [thread overview]
Message-ID: <8d47efcf-003d-40ea-a79c-20df738d02fc@linux.dev> (raw)
In-Reply-To: <20261013104033.36079-6-p.pisati@gmail.com>
On 10/13/26 12:40, Paolo Pisati wrote:
> The keyboard backlight and Fn-lock commands are sent as 64 byte
> feature reports, the size of report 0x5a on the ROG keyboards. The
> Zenbook Duo keyboards declare feature report 0x5a with 15 data bytes,
> 16 with the report ID, and do not answer writes larger than that: the
> control transfer times out over USB and fails with -EIO over
> Bluetooth, so the backlight cannot be set, while the 16 byte handshake
> goes through.
>
> Cap feature report writes at the length the device declares for the
> report, when it declares it. hid_report_len() counts the report ID, so
> the handshake and the other commands up to that size are sent as they
> are.
This has been a huge pain in the past months for me so than you for
taking care of this.
> Assisted-by: LLM
As the others.
With comments extended (see below):
Reviewed-by: Denis Benato <denis.benato@linux.dev>
If you decide to help me and unify packets alloc between devices
you can do it on a separate patch after this one and preserve my reviewed-by.
> Signed-off-by: Paolo Pisati <p.pisati@gmail.com>
> Tested-by: Rebecca Mara Müller <rebecca.mara@posteo.de> # UX8407AA
> ---
> drivers/hid/hid-asus.c | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/drivers/hid/hid-asus.c b/drivers/hid/hid-asus.c
> index b127f5c38f60..7b17553e94b6 100644
> --- a/drivers/hid/hid-asus.c
> +++ b/drivers/hid/hid-asus.c
> @@ -632,6 +632,18 @@ static int asus_raw_event(struct hid_device *hdev,
>
> static int asus_kbd_set_report(struct hid_device *hdev, const u8 *buf, size_t buf_size)
> {
> + struct hid_report *report;
> +
> + /*
> + * Do not send more than the declared size of the report, report ID
> + * included: the Zenbook Duo keyboards declare 15 data bytes for
> + * report 0x5a, 16 on the wire like the handshake, and do not answer
> + * the 64 byte writes sized for the ROG keyboards.
> + */
Maybe also mentions the majority of ROG laptops uses 64 bytes, xgm 300 bytes
and touchpads also 16 bytes as the duo.
> + report = hdev->report_enum[HID_FEATURE_REPORT].report_id_hash[buf[0]];
> + if (report)
> + buf_size = min_t(size_t, buf_size, hid_report_len(report));
> +
I think that it's worth doing this for every supported devices: rog ally,
laptops, touchpads and so on, my only question is if this code is robust
enough to handle all cases, but it's worth a try.
It's also worth adding another patch to unify all devices to use this code.
I can test on a rog xg mobile: obscure hardware that uses 300 bytes and
see if it still works.
> u8 *dmabuf __free(kfree) = kmemdup(buf, buf_size, GFP_KERNEL);
> if (!dmabuf)
> return -ENOMEM;
next prev parent reply other threads:[~2026-10-18 16:52 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-13 10:39 [PATCH v3 0/7] HID: asus: ASUS Zenbook Duo keyboard support Paolo Pisati
2026-10-13 10:39 ` [PATCH v3 1/7] HID: asus: Fix up Zenbook Duo report descriptors Paolo Pisati
2026-10-18 15:50 ` Denis Benato
2026-10-18 16:18 ` Rebecca Mara Müller
2026-10-18 17:52 ` Denis Benato
2026-10-13 10:39 ` [PATCH v3 2/7] HID: asus: Add missing Zenbook Duo hotkeys Paolo Pisati
2026-10-18 15:55 ` Denis Benato
2026-10-18 21:38 ` Nathan Chancellor
2026-10-18 21:39 ` Denis Benato
2026-10-13 10:40 ` [PATCH v3 3/7] HID: asus: Force hid-input to bind to the Zenbook Duo hotkey interface Paolo Pisati
2026-10-18 16:06 ` Denis Benato
2026-10-13 10:40 ` [PATCH v3 4/7] HID: asus: Cycle the platform profile from the Zenbook Duo profile key Paolo Pisati
2026-10-18 16:27 ` Denis Benato
2026-10-13 10:40 ` [PATCH v3 5/7] HID: asus: Do not send feature reports larger than declared Paolo Pisati
2026-10-18 16:52 ` Denis Benato [this message]
2026-10-13 10:40 ` [PATCH v3 6/7] HID: asus: add prod-id, quirk for Zenbook Duo keyboard Paolo Pisati
2026-10-18 16:57 ` Denis Benato
2026-10-18 21:43 ` Nathan Chancellor
2026-10-18 21:46 ` Denis Benato
2026-10-13 10:40 ` [PATCH v3 7/7] HID: asus: Re-send the Zenbook Duo keyboard handshake after probe Paolo Pisati
2026-10-18 17:10 ` Denis Benato
2026-10-18 19:18 ` Rebecca Mara Müller
2026-10-18 19:48 ` Denis Benato
2026-10-19 6:12 ` Rebecca Mara Müller
2026-10-19 11:03 ` Denis Benato
2026-10-19 13:36 ` Rebecca Mara Müller
2026-10-13 11:45 ` [PATCH v3 0/7] HID: asus: ASUS Zenbook Duo keyboard support Rebecca Mara Müller
2026-10-13 13:56 ` Denis Benato
2026-10-14 13:21 ` Paolo Pisati
2026-10-18 17:21 ` Denis Benato
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=8d47efcf-003d-40ea-a79c-20df738d02fc@linux.dev \
--to=denis.benato@linux.dev \
--cc=bentiss@kernel.org \
--cc=hacker1024@users.sourceforge.net \
--cc=jikos@kernel.org \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luke@ljones.dev \
--cc=me@livan.pro \
--cc=nathan@kernel.org \
--cc=p.pisati@gmail.com \
--cc=rebecca.mara@posteo.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.