Re: [PATCH] usb: add QUIRK_NO_BOS for several devices

From: A1RM4X

Date: Wed Feb 04 2026 - 09:30:44 EST


Hi,

Please find attached the new patch which fixes the structure of the commit.

Why? If the option is not being used, the speed limit will be limited
to 5000M, which limits the capture capabilities of the device (4K30fps
at 5000M versus the expected 4K60fps at 10000M).

What happens in userspace?
- without patch
[ 5036.674972] usb 2-2: new SuperSpeed Plus Gen 2x1 USB device number
2 using xhci_hcd
[ 5041.770595] usb 2-2: unable to get BOS descriptor or descriptor too short
[ 5041.770605] usb 2-2: unable to read config index 0 descriptor/start: -19
[ 5041.955592] usb 2-2: Device not responding to setup address.
[ 5042.162588] usb 2-2: Device not responding to setup address.
[ 5042.370246] usb 2-2: device not accepting address 3, error -71
[ 5042.373859] usb usb2-port2: attempt power cycle
[ 5043.691464] usb 2-2: new SuperSpeed USB device number 5 using xhci_hcd
[ 5043.887185] usb 2-2: LPM exit latency is zeroed, disabling LPM.
[ 5043.980556] usb 2-2: New USB device found, idVendor=2b89,
idProduct=5871, bcdDevice= 0.00
[ 5043.980561] usb 2-2: New USB device strings: Mfr=6, Product=7, SerialNumber=3
[ 5043.980563] usb 2-2: Product: UGREEN 35871
[ 5043.980564] usb 2-2: Manufacturer: UGREEN 35871
[ 5043.980564] usb 2-2: SerialNumber: PRODUCT
[ 5044.166844] hid-generic 0003:2B89:5871.0007: hiddev99,hidraw6: USB
HID v1.11 Device [UGREEN 35871 UGREEN 35871] on
usb-0000:0b:00.0-2/input4
[ 5044.188946] videodev: Linux video capture interface: v2.00
[ 5044.207601] uvcvideo 2-2:1.1: Unknown video format
30313050-0000-0010-8000-00aa00389b71
[ 5044.207606] uvcvideo 2-2:1.0: Found UVC 1.00 device UGREEN 35871 (2b89:5871)
[ 5044.242584] usbcore: registered new interface driver uvcvideo

/: Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/5p, 20000M/x2
|__ Port 002: Dev 005, If 0, Class=Video, Driver=uvcvideo, 5000M
|__ Port 002: Dev 005, If 1, Class=Video, Driver=uvcvideo, 5000M
|__ Port 002: Dev 005, If 2, Class=Audio, Driver=snd-usb-audio, 5000M
|__ Port 002: Dev 005, If 3, Class=Audio, Driver=snd-usb-audio, 5000M
|__ Port 002: Dev 005, If 4, Class=Human Interface Device,
Driver=usbhid, 5000M


- with patch
[ 51.913978] usb 6-1: new SuperSpeed Plus Gen 2x1 USB device number
3 using xhci_hcd
[ 52.181717] usb 6-1: New USB device found, idVendor=2b89,
idProduct=5871, bcdDevice= 0.00
[ 52.181721] usb 6-1: New USB device strings: Mfr=6, Product=7, SerialNumber=3
[ 52.181724] usb 6-1: Product: UGREEN 35871
[ 52.181726] usb 6-1: Manufacturer: UGREEN 35871
[ 52.181728] usb 6-1: SerialNumber: PRODUCT
[ 52.284659] uvcvideo 6-1:1.1: Unknown video format
30313050-0000-0010-8000-00aa00389b71
[ 52.284666] uvcvideo 6-1:1.0: Found UVC 1.00 device UGREEN 35871 (2b89:5871)
[ 52.475086] hid-generic 0003:2B89:5871.000A: hiddev100,hidraw6: USB
HID v1.11 Device [UGREEN 35871 UGREEN 35871] on
usb-0000:0e:00.3-1/input4

/: Bus 006.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/4p, 10000M
|__ Port 001: Dev 003, If 0, Class=Video, Driver=uvcvideo, 10000M
|__ Port 001: Dev 003, If 1, Class=Video, Driver=uvcvideo, 10000M
|__ Port 001: Dev 003, If 2, Class=Audio, Driver=snd-usb-audio, 10000M
|__ Port 001: Dev 003, If 3, Class=Audio, Driver=snd-usb-audio, 10000M
|__ Port 001: Dev 003, If 4, Class=Human Interface Device,
Driver=usbhid, 10000M


If more debug tests are required, please let me know how to proceed.

--------------------------------

Regarding the Signed‑off‑by line, I would like to use my public
content‑creator alias rather than my personal identity. Could you
advise how to do this while remaining compliant with the DCO?

Thanks,
A1RM4X

On Wed, Feb 4, 2026 at 12:15 AM Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
>
> On Tue, Feb 03, 2026 at 10:29:38PM -0500, A1RM4X wrote:
> > Add QUIRK_NO_BOS entries for:
> > * ASUS TUF 4K PRO (0x0b05:0x1ab9)
> > * Avermedia Live Gamer Ultra 2.1 (0x07ca:0x2553)
> > * UGREEN 35871 (0x2b89:0x5871)
>
> Why? What is the results without this option being used here? And what
> happens when userspace goes and asks for this descriptor?
>
> > Signed-off-by: A1RM4X <dev@xxxxxxxxxx>
>
> We need a real name, sorry.
>
> > ---
> > drivers/usb/core/quirks.c | 9 +++++++++
> > 1 file changed, 9 insertions(+)
> >
> > diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
> > index c4d85089d19b..ddce45ce9f6c 100644
> > --- a/drivers/usb/core/quirks.c
> > +++ b/drivers/usb/core/quirks.c
> > @@ -453,6 +453,15 @@ static const struct usb_device_id usb_quirk_list[] = {
> > /* Elgato 4K X - BOS descriptor fetch hangs at SuperSpeed Plus */
> > { USB_DEVICE(0x0fd9, 0x009b), .driver_info = USB_QUIRK_NO_BOS },
> >
> > + /* ASUS TUF 4K PRO - BOS descriptor fetch hangs at SuperSpeed Plus */
> > + { USB_DEVICE(0x0b05, 0x1ab9), .driver_info = USB_QUIRK_NO_BOS },
> > +
> > + /* Avermedia Live Gamer Ultra 2.1 (GC553G2) - BOS descriptor fetch hangs at SuperSpeed Plus */
> > + { USB_DEVICE(0x07ca, 0x2553), .driver_info = USB_QUIRK_NO_BOS },
> > +
> > + /* UGREEN 35871 - BOS descriptor fetch hangs at SuperSpeed Plus */
> > + { USB_DEVICE(0x2b89, 0x5871), .driver_info = USB_QUIRK_NO_BOS },
>
> Please read the comment for this structure for how to place these in the
> list.
>
> thanks,
>
> greg k-h
>
From 17b5dc3b7bc7b7ae643334908b238e6eb1dfa81e Mon Sep 17 00:00:00 2001
From: A1RM4X <dev@xxxxxxxxxx>
Date: Wed, 4 Feb 2026 08:19:56 -0500
Subject: [PATCH] =?UTF-8?q?[PATCH=20v2]=20usb:=20core:=20reorder=20BOS?=
=?UTF-8?q?=E2=80=91quirk=20entries=20alphabetically?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* usb: add QUIRK_NO_BOS for several devices
- Disables BOS handling on devices that break when the BOS
descriptor is read (e.g. UGREEN 35871). Prevents the kernel
from falling back to a 5 Gbps link speed, unlocking the
expected 10 Gbps/4K 60 fps mode.

* usb: core: reorder BOS‑quirk entries alphabetically
- The three USB_QUIRK_NO_BOS entries are now placed in the
alphabetical order required by the file header.

Signed-off-by: A1RM4X <dev@xxxxxxxxxx>
---
drivers/usb/core/quirks.c | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
index ddce45ce9f6c..f4c80063864f 100644
--- a/drivers/usb/core/quirks.c
+++ b/drivers/usb/core/quirks.c
@@ -377,6 +377,9 @@ static const struct usb_device_id usb_quirk_list[] = {
/* SanDisk Extreme 55AE */
{ USB_DEVICE(0x0781, 0x55ae), .driver_info = USB_QUIRK_NO_LPM },

+ /* Avermedia Live Gamer Ultra 2.1 (GC553G2) - BOS descriptor fetch hangs at SuperSpeed Plus */
+ { USB_DEVICE(0x07ca, 0x2553), .driver_info = USB_QUIRK_NO_BOS },
+
/* Realforce 87U Keyboard */
{ USB_DEVICE(0x0853, 0x011b), .driver_info = USB_QUIRK_NO_LPM },

@@ -437,6 +440,9 @@ static const struct usb_device_id usb_quirk_list[] = {
{ USB_DEVICE(0x0b05, 0x17e0), .driver_info =
USB_QUIRK_IGNORE_REMOTE_WAKEUP },

+ /* ASUS TUF 4K PRO - BOS descriptor fetch hangs at SuperSpeed Plus */
+ { USB_DEVICE(0x0b05, 0x1ab9), .driver_info = USB_QUIRK_NO_BOS },
+
/* Realtek Semiconductor Corp. Mass Storage Device (Multicard Reader)*/
{ USB_DEVICE(0x0bda, 0x0151), .driver_info = USB_QUIRK_CONFIG_INTF_STRINGS },

@@ -453,15 +459,6 @@ static const struct usb_device_id usb_quirk_list[] = {
/* Elgato 4K X - BOS descriptor fetch hangs at SuperSpeed Plus */
{ USB_DEVICE(0x0fd9, 0x009b), .driver_info = USB_QUIRK_NO_BOS },

- /* ASUS TUF 4K PRO - BOS descriptor fetch hangs at SuperSpeed Plus */
- { USB_DEVICE(0x0b05, 0x1ab9), .driver_info = USB_QUIRK_NO_BOS },
-
- /* Avermedia Live Gamer Ultra 2.1 (GC553G2) - BOS descriptor fetch hangs at SuperSpeed Plus */
- { USB_DEVICE(0x07ca, 0x2553), .driver_info = USB_QUIRK_NO_BOS },
-
- /* UGREEN 35871 - BOS descriptor fetch hangs at SuperSpeed Plus */
- { USB_DEVICE(0x2b89, 0x5871), .driver_info = USB_QUIRK_NO_BOS },
-
/* Sony Xperia XZ1 Compact (lilac) smartphone in fastboot mode */
{ USB_DEVICE(0x0fce, 0x0dde), .driver_info = USB_QUIRK_NO_LPM },

@@ -574,6 +571,9 @@ static const struct usb_device_id usb_quirk_list[] = {

{ USB_DEVICE(0x2386, 0x350e), .driver_info = USB_QUIRK_NO_LPM },

+ /* UGREEN 35871 - BOS descriptor fetch hangs at SuperSpeed Plus */
+ { USB_DEVICE(0x2b89, 0x5871), .driver_info = USB_QUIRK_NO_BOS },
+
/* APTIV AUTOMOTIVE HUB */
{ USB_DEVICE(0x2c48, 0x0132), .driver_info =
USB_QUIRK_SHORT_SET_ADDRESS_REQ_TIMEOUT },
--
2.53.0