* [PATCH] USB: quirks: add USB_QUIRK_WINDOWS_CONFIG_REQ_SIZE for GameSir G7 SE
@ 2026-09-27 15:54 Ali via B4 Relay
2026-09-29 13:32 ` Greg Kroah-Hartman
0 siblings, 1 reply; 2+ messages in thread
From: Ali via B4 Relay @ 2026-09-27 15:54 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: linux-usb, linux-kernel, stable, Ali
From: Ali <aliresool567@gmail.com>
The GameSir G7 SE wired controller first enumerates as 3537:10a0 and
then re-enumerates in a mode it picks from how the host enumerated it.
When the configuration descriptor is fetched the Linux way, 9 bytes
followed by the full 80, the controller disconnects about 1 ms after
its string descriptors have been read, before SET_CONFIGURATION, and
comes back as 3537:1082, a generic HID gamepad without force feedback.
When the configuration descriptor is fetched in one 255-byte request,
as Windows does, it comes back as 3537:1010 in Xbox One (GIP) mode,
which xpad already supports, including rumble.
Skipping the device qualifier requests (USB_QUIRK_DEVICE_QUALIFIER)
makes no difference; the configuration descriptor request size alone
decides the mode. Add USB_QUIRK_WINDOWS_CONFIG_REQ_SIZE for the 10a0
identity, as is already done for the ShanWan Wireless Gamepad.
Cc: stable@vger.kernel.org
Assisted-by: claude-opus-5-5
Signed-off-by: Ali <aliresool567@gmail.com>
---
Tested on 7.2.7 (x86_64, xHCI) by setting usbcore.quirks=3537:10a0:r at
runtime. With it, the controller settles as 3537:1010 on every plug-in,
is bound by xpad as "GameSir G7 SE", and rumble works through xpad's
force feedback. Without it, it settles as 3537:1082 every time. The
patch itself is against v7.3-rc5.
usbmon of the 3537:10a0 enumeration without the quirk: GET_DESCRIPTOR
(CONFIGURATION) with wLength 9, then 80, then string descriptors 0, 2,
1 and 3. The port reports a disconnect about 1 ms after the serial
number string, and the SET_CONFIGURATION that follows fails with
-EPROTO. With the quirk, the only difference is a single wLength 255
configuration request, after which the device re-enumerates as
3537:1010.
---
drivers/usb/core/quirks.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
index b5b577f..a4bcbe9 100644
--- a/drivers/usb/core/quirks.c
+++ b/drivers/usb/core/quirks.c
@@ -612,6 +612,9 @@ static const struct usb_device_id usb_quirk_list[] = {
/* ezcap401 - BOS descriptor fetch hangs at SuperSpeed Plus */
{ USB_DEVICE(0x32ed, 0x0401), .driver_info = USB_QUIRK_NO_BOS },
+ /* GameSir G7 SE */
+ { USB_DEVICE(0x3537, 0x10a0), .driver_info = USB_QUIRK_WINDOWS_CONFIG_REQ_SIZE },
+
/* DELL USB GEN2 */
{ USB_DEVICE(0x413c, 0xb062), .driver_info = USB_QUIRK_NO_LPM | USB_QUIRK_RESET_RESUME },
---
base-commit: fd179f8a05be3ccae366b9b96e176b51fbe54aab
change-id: 20260927-master-799b75b330e6
Best regards,
--
Ali <aliresool567@gmail.com>
^ permalink raw reply [flat|nested] 2+ messages in thread* Re: [PATCH] USB: quirks: add USB_QUIRK_WINDOWS_CONFIG_REQ_SIZE for GameSir G7 SE
2026-09-27 15:54 [PATCH] USB: quirks: add USB_QUIRK_WINDOWS_CONFIG_REQ_SIZE for GameSir G7 SE Ali via B4 Relay
@ 2026-09-29 13:32 ` Greg Kroah-Hartman
0 siblings, 0 replies; 2+ messages in thread
From: Greg Kroah-Hartman @ 2026-09-29 13:32 UTC (permalink / raw)
To: aliresool567; +Cc: linux-usb, linux-kernel, stable
On Sun, Sep 27, 2026 at 06:54:01PM +0300, Ali via B4 Relay wrote:
> From: Ali <aliresool567@gmail.com>
>
> The GameSir G7 SE wired controller first enumerates as 3537:10a0 and
> then re-enumerates in a mode it picks from how the host enumerated it.
>
> When the configuration descriptor is fetched the Linux way, 9 bytes
> followed by the full 80, the controller disconnects about 1 ms after
> its string descriptors have been read, before SET_CONFIGURATION, and
> comes back as 3537:1082, a generic HID gamepad without force feedback.
>
> When the configuration descriptor is fetched in one 255-byte request,
> as Windows does, it comes back as 3537:1010 in Xbox One (GIP) mode,
> which xpad already supports, including rumble.
>
> Skipping the device qualifier requests (USB_QUIRK_DEVICE_QUALIFIER)
> makes no difference; the configuration descriptor request size alone
> decides the mode. Add USB_QUIRK_WINDOWS_CONFIG_REQ_SIZE for the 10a0
> identity, as is already done for the ShanWan Wireless Gamepad.
>
> Cc: stable@vger.kernel.org
> Assisted-by: claude-opus-5-5
> Signed-off-by: Ali <aliresool567@gmail.com>
Hi,
This is the friendly patch-bot of Greg Kroah-Hartman. You have sent him
a patch that has triggered this response. He used to manually respond
to these common problems, but in order to save his sanity (he kept
writing the same thing over and over, yet to different people), I was
created. Hopefully you will not take offence and will fix the problem
in your patch and resubmit it so that it can be accepted into the Linux
kernel tree.
You are receiving this message because of the following common error(s)
as indicated below:
- It looks like you did not use your "real" name for the patch on either
the Signed-off-by: line, or the From: line (both of which have to
match). Please read the kernel file,
Documentation/process/submitting-patches.rst for how to do this
correctly.
If you wish to discuss this problem further, or you have questions about
how to resolve this issue, please feel free to respond to this email and
Greg will reply once he has dug out from the pending patches received
from other developers.
thanks,
greg k-h's patch email bot
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-09-29 13:32 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-27 15:54 [PATCH] USB: quirks: add USB_QUIRK_WINDOWS_CONFIG_REQ_SIZE for GameSir G7 SE Ali via B4 Relay
2026-09-29 13:32 ` Greg Kroah-Hartman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®