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

JP Hein
2026-04-09T07:44:24Z

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

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