Re: [PATCH v6 2/2] media: uvcvideo: add Razer Kiyo Pro to device info table

Ricardo Ribalda
2026-04-09T07:58:09Z

Hi

On Thu, 9 Apr 2026 at 09:44, JP Hein <jp@jphein.com> wrote:
>
> Add a device entry for the Razer Kiyo Pro (1532:0e05) with quirks to
> work around firmware bugs that crash the xHCI host controller:
>
> UVC_QUIRK_CTRL_THROTTLE - rate-limit control transfers and skip
> error-code queries after EPIPE
> UVC_QUIRK_DISABLE_AUTOSUSPEND - prevent runtime suspend
> UVC_QUIRK_NO_RESET_RESUME - skip post-reset reinitialization
>
> The firmware (v1.5.0.1) has two failure modes: it stalls endpoints
> under rapid control transfers (~25 without delay), and it fails to
> reinitialize properly after USB power state transitions. Both can
> cascade into xHCI controller death, disconnecting all USB devices on
> the bus.
>
> Bug reproduced on two separate Kiyo Pro units running simultaneously,
> confirming the issue is not unit-specific.
>
> lsusb -v:
> Bus 002 Device 002: ID 1532:0e05 Razer USA, Ltd Razer Kiyo Pro
> Device Descriptor:
> bLength 18
> bDescriptorType 1
> bcdUSB 3.20
> bDeviceClass 239 Miscellaneous Device
> bDeviceSubClass 2 [unknown]
> bDeviceProtocol 1 Interface Association
> bMaxPacketSize0 9
> idVendor 0x1532 Razer USA, Ltd
> idProduct 0x0e05 Razer Kiyo Pro
> bcdDevice 8.21
> iManufacturer 1 Razer Inc
> iProduct 2 Razer Kiyo Pro
> iSerial 0
>

Is this the whole output of lsusb?? Can you try with lsusb -vv?

> Signed-off-by: JP Hein <jp@jphein.com>
> ---
> drivers/media/usb/uvc/uvc_driver.c | 16 ++++++++++++++++
> 1 file changed, 16 insertions(+)
>
> diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
> index 775bede..9b6df8e 100644
> --- a/drivers/media/usb/uvc/uvc_driver.c
> +++ b/drivers/media/usb/uvc/uvc_driver.c
> @@ -2880,6 +2880,22 @@ static const struct usb_device_id uvc_ids[] = {
> .bInterfaceSubClass = 1,
> .bInterfaceProtocol = 0,
> .driver_info = (kernel_ulong_t)&uvc_quirk_probe_minmax },
> +
> + /*
> + * Razer Kiyo Pro -- firmware crashes under rapid control transfers
> + * and on LPM/autosuspend resume, cascading into xHCI controller
> + * death that disconnects all USB devices on the bus.
> + */
> + { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + | USB_DEVICE_ID_MATCH_INT_INFO,
> + .idVendor = 0x1532,
> + .idProduct = 0x0e05,
> + .bInterfaceClass = USB_CLASS_VIDEO,
> + .bInterfaceSubClass = 1,
> + .bInterfaceProtocol = 0,
> + .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_CTRL_THROTTLE
> + | UVC_QUIRK_DISABLE_AUTOSUSPEND
> + | UVC_QUIRK_NO_RESET_RESUME) },
> /* Kurokesu C1 PRO */
> { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
> --
> 2.43.0
>

--
Ricardo Ribalda