If you encounter uvc_disconnect then you may have a different issue than I do. I can clearly see via debugging that uvc_disconnect is never reached. In my case the disconnect is happening in usb/core/hub.c:usb_disconnect. The comment on top if this function says "This call is synchronous, and may not be used in an interrupt context" though I can clearly see that during uvc initialization it is being triggered by interrupt (the device disconnecting itself). So the disconnect comes unexpectedly via interrupt from hub, not from uvc_video. Maybe there are two separate issues? https://github.com/torvalds/linux/blob/99613159ad749543621da8238acf1a122880144e/drivers/usb/core/hub.c#L2263 *pdev = NULL; On Tue, Jan 18, 2022 at 2:50 PM Kai-Heng Feng