I have spent some hours trying to make my webcam work on linux. I was wondering if it is ok to ask here.
I have an Elgato Facecam 4K and works fine on windows. I try to use it on Ubuntu 24.04 but it doesn't work properly. The behaviour is that if I run vlc, teams (browser) or google meet it works the first time but the second time the screen stays black, the camera shows being active, google meet mentions "camera starting" but no image. If I re-plugin the webcam it works again for one time but as soon as I close a meeting and open another one it fails, same behaviour when I try again with vlc app, the camera screen becomes black at the 2nd time I open it.
I have the feeling something gets locked in the kernel when the camera stream closes.
Using "sudo modprobe -r uvcvideo" gives always "modprobe: FATAL: Module uvcvideo is in use." while no other process is still active when checking with "fuser -v /dev/video*"
I have tried lowering resolution to 720p, framerates to 30fps etc but that doesn't change it. resetting uvc doesn't work because something in the kernel keeps a lock. Only by unplugging the webcam and replugin it works, and works only once.
Some info v4l2-ctl --list-devices: Elgato Facecam 4K (usb-0000:06:00.0-1): /dev/video1 /dev/video2 /dev/media0
Here I wonder why it doesn't start by the typical default /dev/video0, not sure if that is an issue.
I ran "echo 0xffff > /sys/module/uvcvideo/parameters/trace" but it only output "0" in the file. maybe I did something wrong here. Below some other info, hope that helps:
System Info:
Ubuntu 24.04
Kernel: 6.14.0-29-generic
Webcam: Elgato Facecam 4K, USB 3.0
Driver: uvcvideo (UVC 1.5)
GNOME Shell 46.0
/dev/video1 → MJPEG/NV12 interface (the one that works, but only one initial time)
/dev/video2 → H.264 interface (always fails to open, I must use video1 only)
Cheese application freezes always or crashes when opening /dev/video1 or /dev/video2.
lsmod | grep uvcvideo uvcvideo 143360 1 videobuf2_vmalloc 20480 6 uvcvideo uvc 12288 1 uvcvideo videobuf2_v4l2 36864 1 uvcvideo videobuf2_common 86016 4 videobuf2_vmalloc,videobuf2_v4l2,uvcvideo,videobuf2_memops videodev 360448 3 videobuf2_v4l2,uvcvideo mc 81920 5 videodev,snd_usb_audio,videobuf2_v4l2,uvcvideo,videobuf2_common
sudo dmesg | grep -i video [ 0.290147] pci 0000:01:00.0: Video device with shadowed ROM at [mem 0x000c0000-0x000dffff] [ 3.757547] videodev: Linux video capture interface: v2.00 [ 3.983248] usbcore: registered new interface driver uvcvideo [10062.207360] uvcvideo 4-1:1.1: Failed to resubmit video URB (-1). [11641.606170] uvcvideo 4-1:1.1: Failed to resubmit video URB (-1).
Kr, Philippe
sudo journalctl --since="-5 minutes"will show system logs that cover the event. – waltinator Sep 17 '25 at 17:10Failed to resubmit video URBshows many results in Google but hardly any solution or even suggestion, other then use shorter cables and/or not have other devices in the same USB hub. The latter makes sense due to the bandwidth required. – ChanganAuto Sep 17 '25 at 18:28