Linux USB
 help / color / mirror / Atom feed
* USB: Request for guidance investigating configuration descriptor enumeration failure
@ 2026-05-29 21:22 Nikhil Solanke
  2026-05-30  1:58 ` Alan Stern
  2026-05-31  8:16 ` Michal Pecio
  0 siblings, 2 replies; 18+ messages in thread
From: Nikhil Solanke @ 2026-05-29 21:22 UTC (permalink / raw)
  To: linux-usb
  Cc: gregkh, mathias.nyman, sakari.ailus, katieeliu, johannes.bruederl,
	kees, dengjie03, limiao, wse, dev, vahnenko2003, cs, lijiayi,
	oneukum, stern, bence98, eeodqql09

Hello,

I have been investigating a USB enumeration issue affecting at least
one controller exposing an Xbox-compatible interface (VID:PID
045e:028e).

The device consistently fails enumeration under Linux during the
initial configuration descriptor read. The failure is reproducible on
multiple physical machines and also inside a VM.

Observations:
- Reproduces successfully on latest mainline linux kernel and also the
latest lts kernel release
- Windows successfully enumerates the device.
- Linux fails while reading the initial configuration descriptor.
- The issue reproduces across different hosts.
- The device falls back to a secondary mode (with different vendor id
and product id) (meant for android support) when enumeration fails.
This android mode gets enumerated and initialized properly but we lose
a few capabilities that get exposed when its in the Xinput mode.

So I collected and investigated USB captures from both Windows and
Linux via Wireshark.

Interesting finding:

The standard Linux path requests the initial configuration descriptor
using USB_DT_CONFIG_SIZE (9 bytes). By introducing a new usbcore quirk
and modifying usb_get_configuration() so that affected devices request
10 bytes instead of 9, enumeration succeeds reliably and the
controller remains in its expected XInput mode.

Additional testing:

9-byte request: fails
48-byte request: succeeds
16-byte request: succeeds
10-byte request: succeeds

I do not currently understand the underlying protocol-level reason for
this behavior and would prefer to investigate the root cause rather
than submit a workaround.

Could anyone suggest:

which USB core paths would be most useful to instrument,

whether there are existing examples of devices failing specifically at
the initial configuration descriptor size probe,

and whether usbmon alone is sufficient here or if
host-controller-level tracing would be more appropriate?

I would be happy to provide:
Windows and Linux Wireshark captures,
kernel logs,
and the experimental workaround patch.

Thanks.
Nikhil Solanke

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2026-06-01 13:02 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-29 21:22 USB: Request for guidance investigating configuration descriptor enumeration failure Nikhil Solanke
2026-05-30  1:58 ` Alan Stern
2026-05-30  6:57   ` Nikhil Solanke
2026-05-30 14:48     ` Alan Stern
2026-05-30 16:48       ` Nikhil Solanke
2026-05-30 20:26         ` Alan Stern
2026-05-30 20:47           ` Nikhil Solanke
2026-05-31  1:44             ` Alan Stern
2026-05-31  7:49               ` Nikhil Solanke
2026-05-31 14:03                 ` Alan Stern
2026-05-31  8:16 ` Michal Pecio
2026-05-31 10:11   ` Nikhil Solanke
2026-05-31 10:38     ` Michal Pecio
2026-05-31 11:20       ` Nikhil Solanke
2026-05-31 14:12       ` Alan Stern
2026-06-01  6:49         ` Michal Pecio
2026-06-01  9:01           ` Nikhil Solanke
2026-06-01 13:02           ` Alan Stern

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox