[PATCH] usb: add QUIRK_NO_BOS for several devices

A1RM4X posted 1 patch 3 days, 11 hours ago
drivers/usb/core/quirks.c | 9 +++++++++
1 file changed, 9 insertions(+)
[PATCH] usb: add QUIRK_NO_BOS for several devices
Posted by A1RM4X 3 days, 11 hours ago
Add QUIRK_NO_BOS entries for:
 * ASUS TUF 4K PRO (0x0b05:0x1ab9)
 * Avermedia Live Gamer Ultra 2.1 (0x07ca:0x2553)
 * UGREEN 35871 (0x2b89:0x5871)

Signed-off-by: A1RM4X <dev@a1rm4x.com>
---
 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 },
+
 	/* Sony Xperia XZ1 Compact (lilac) smartphone in fastboot mode */
 	{ USB_DEVICE(0x0fce, 0x0dde), .driver_info = USB_QUIRK_NO_LPM },
 
-- 
2.53.0
Re: [PATCH] usb: add QUIRK_NO_BOS for several devices
Posted by Greg KH 3 days, 10 hours ago
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@a1rm4x.com>

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
Re: [PATCH] usb: add QUIRK_NO_BOS for several devices
Posted by A1RM4X 3 days ago
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@linuxfoundation.org> 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@a1rm4x.com>
>
> 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
>
Re: [PATCH] usb: add QUIRK_NO_BOS for several devices
Posted by Greg KH 3 days ago
On Wed, Feb 04, 2026 at 09:25:18AM -0500, A1RM4X wrote:
> Hi,
> 
> Please find attached the new patch which fixes the structure of the commit.

Attached patches do not work :(

> 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).

Why does the device slow down like this?  Is it a bug in it?

> 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.

If you run `lsusb -v` you will read the BOS values, and then look at the
kernel to see if it has issues after that.

> --------------------------------
> 
> 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?

Sorry, I can't do that as I do not know who this is.

greg k-h
Re: [PATCH] usb: add QUIRK_NO_BOS for several devices
Posted by Greg KH 3 days ago
On Wed, Feb 04, 2026 at 09:25:18AM -0500, A1RM4X wrote:
> Hi,
> 
> Please find attached the new patch which fixes the structure of the commit.

Also, you sent a patch on top of your previous patch which was not
accepted, and so this wouldn't even apply to our trees at all :(

Please always make a "clean" patch.

thanks,

greg k-h
Re: [PATCH] usb: add QUIRK_NO_BOS for several devices
Posted by A1RM4X 2 days, 19 hours ago
I added a clean patch to this email.

I own the devices mentioned in the patch. For all 3 devices, the USB
port speed (10Gbps) is reached on Windows, they just negotiate 5Gbps
speed on Linux. After applying the patch, as mentioned earlier, they
reach the correct speed. I just did a 3 hours record on the Avermedia
on Linux and it works as expected with a patched kernel.

Here is an updated dmesg output after following your instructions on
the current kernel master:

[  701.425991] usb 2-2: new SuperSpeed Plus Gen 2x1 USB device number
2 using xhci_hcd
[  706.735379] usb 2-2: unable to get BOS descriptor or descriptor too short
[  706.735390] usb 2-2: unable to read config index 0 descriptor/start: -19
[  706.920395] usb 2-2: Device not responding to setup address.
[  707.127380] usb 2-2: Device not responding to setup address.
[  707.335050] usb 2-2: device not accepting address 3, error -71
[  707.338647] usb usb2-port2: attempt power cycle
[  708.656278] usb 2-2: new SuperSpeed USB device number 5 using xhci_hcd
[  708.859889] usb 2-2: LPM exit latency is zeroed, disabling LPM.
[  708.955893] usb 2-2: New USB device found, idVendor=2b89,
idProduct=5871, bcdDevice= 0.00
[  708.955895] usb 2-2: New USB device strings: Mfr=6, Product=7, SerialNumber=3
[  708.955896] usb 2-2: Product: UGREEN 35871
[  708.955897] usb 2-2: Manufacturer: UGREEN 35871
[  708.955897] usb 2-2: SerialNumber: PRODUCT
[  709.142354] 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
[  709.165518] videodev: Linux video capture interface: v2.00
[  709.187290] uvcvideo 2-2:1.1: Unknown video format
30313050-0000-0010-8000-00aa00389b71
[  709.187297] uvcvideo 2-2:1.0: Found UVC 1.00 device UGREEN 35871 (2b89:5871)
[  709.224374] usbcore: registered new interface driver uvcvideo

Regarding the Signed‑off‑by line, if I can't sign it with my content
creator name, please sign it yourself. Whether I put my name on this
patch is not important, what is important is the kernel to function
properly with those devices.

Thanks again for helping,
A1RM4X

On Wed, Feb 4, 2026 at 9:38 AM Greg KH <gregkh@linuxfoundation.org> wrote:
>
> On Wed, Feb 04, 2026 at 09:25:18AM -0500, A1RM4X wrote:
> > Hi,
> >
> > Please find attached the new patch which fixes the structure of the commit.
>
> Also, you sent a patch on top of your previous patch which was not
> accepted, and so this wouldn't even apply to our trees at all :(
>
> Please always make a "clean" patch.
>
> thanks,
>
> greg k-h
>
Re: [PATCH] usb: add QUIRK_NO_BOS for several devices
Posted by Greg KH 2 days, 8 hours ago
On Wed, Feb 04, 2026 at 02:51:35PM -0500, A1RM4X wrote:
> I added a clean patch to this email.

Thanks, but again, we can not take attached patches :(

> I own the devices mentioned in the patch. For all 3 devices, the USB
> port speed (10Gbps) is reached on Windows, they just negotiate 5Gbps
> speed on Linux. After applying the patch, as mentioned earlier, they
> reach the correct speed. I just did a 3 hours record on the Avermedia
> on Linux and it works as expected with a patched kernel.

Ok, it looks like there is a very broken USB controller chip out there
in all of these devices.

> Here is an updated dmesg output after following your instructions on
> the current kernel master:
> 
> [  701.425991] usb 2-2: new SuperSpeed Plus Gen 2x1 USB device number
> 2 using xhci_hcd
> [  706.735379] usb 2-2: unable to get BOS descriptor or descriptor too short
> [  706.735390] usb 2-2: unable to read config index 0 descriptor/start: -19
> [  706.920395] usb 2-2: Device not responding to setup address.
> [  707.127380] usb 2-2: Device not responding to setup address.
> [  707.335050] usb 2-2: device not accepting address 3, error -71
> [  707.338647] usb usb2-port2: attempt power cycle
> [  708.656278] usb 2-2: new SuperSpeed USB device number 5 using xhci_hcd
> [  708.859889] usb 2-2: LPM exit latency is zeroed, disabling LPM.
> [  708.955893] usb 2-2: New USB device found, idVendor=2b89,
> idProduct=5871, bcdDevice= 0.00
> [  708.955895] usb 2-2: New USB device strings: Mfr=6, Product=7, SerialNumber=3
> [  708.955896] usb 2-2: Product: UGREEN 35871
> [  708.955897] usb 2-2: Manufacturer: UGREEN 35871
> [  708.955897] usb 2-2: SerialNumber: PRODUCT
> [  709.142354] 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
> [  709.165518] videodev: Linux video capture interface: v2.00
> [  709.187290] uvcvideo 2-2:1.1: Unknown video format
> 30313050-0000-0010-8000-00aa00389b71
> [  709.187297] uvcvideo 2-2:1.0: Found UVC 1.00 device UGREEN 35871 (2b89:5871)
> [  709.224374] usbcore: registered new interface driver uvcvideo

Sorry, I wasn't specific.  What happens with your patch applied, and
THEN you run 'lsusb -v' on the system?  Does the devices reset then?

> Regarding the Signed‑off‑by line, if I can't sign it with my content
> creator name, please sign it yourself. Whether I put my name on this
> patch is not important, what is important is the kernel to function
> properly with those devices.

For obvious reasons, we can't sign off on other people's patches.  But
we can rewrite them, I'll go do that later today, and give you
reported-by credit.

Note, for the future, if you wish to contribute kernel patches, please
read the documentation section about how to write changelog text, as
what you provided we couldn't take as-is.

thanks,

greg k-h
Re: [PATCH] usb: add QUIRK_NO_BOS for several devices
Posted by sharms 1 day, 21 hours ago
From: Steve Harms <sharms@snowfoundry.com>

On Thu, Feb 05, 2026 at 07:51:17AM +0100, Greg KH wrote:
> Ok, it looks like there is a very broken USB controller chip out there
> in all of these devices.

Hey Greg,

I think this references the same issues as in
https://lore.kernel.org/linux-usb/2025122837-creamlike-motivator-8dcb@gregkh/

There are a few of us who need 10G support for video capture with
these devices.

Thanks,
Steve
Re: [PATCH] usb: add QUIRK_NO_BOS for several devices
Posted by Greg KH 1 day, 21 hours ago
On Thu, Feb 05, 2026 at 10:24:32AM -0700, sharms wrote:
> From: Steve Harms <sharms@snowfoundry.com>
> 
> On Thu, Feb 05, 2026 at 07:51:17AM +0100, Greg KH wrote:
> > Ok, it looks like there is a very broken USB controller chip out there
> > in all of these devices.
> 
> Hey Greg,
> 
> I think this references the same issues as in
> https://lore.kernel.org/linux-usb/2025122837-creamlike-motivator-8dcb@gregkh/

Yes.

> There are a few of us who need 10G support for video capture with
> these devices.

Understood, and I guess they are all using the same chip in the device?
I have the one listed at the link above for testing, but it would be
really good if someone could figure out why Windows doesn't have this
problem and only Linux does...

thanks,

greg k-h