3

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

Philippe
  • 31
  • 2
  • Please read https://askubuntu.com/help/formatting and [edit] your Question appropriately. – waltinator Sep 17 '25 at 17:09
  • 1
    Within 5 minutes of the event, the terminal command sudo journalctl --since="-5 minutes" will show system logs that cover the event. – waltinator Sep 17 '25 at 17:10
  • v4l2-ctl -d /dev/video1 --list-ctrls – petep Sep 17 '25 at 18:23
  • The Failed to resubmit video URB shows 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
  • @petep I ran the command you gave but I don't see anything useful? – Philippe Sep 17 '25 at 18:53
  • @ChanganAuto I connected the cam directly to the USB-C on the motherboard. The cable came with the webcam, I can try a shorter one but I don't think that will solve the issue. I also tried with low resolutions and I have the same issue. It looks like something in the kernel to detect frames from the webcam is not working anymore after the first time the video stream closes – Philippe Sep 17 '25 at 18:56
  • try vlc or gstreamer – petep Sep 17 '25 at 20:26
  • @petep I already tried vlc, cheese, google meet, teams, I'm afraid it happens on any application – Philippe Sep 18 '25 at 06:20

0 Answers0