(solved for no reason) webcam stopped working after an Arch Linux update
edit: solved lol
When I run Cheese, the inbuilt webcam light flashes for an instant then stops. Assuming Cheese opens correctly, it never successfully shows the webcam feed. Cheese worked prior to update. ( Zoom webcam fails too D: )
setup
Arch Linux, kernel 6.11.5-arch-11, Hyprland v0.44.1 (pipewire 1.2.6) on a hybrid Nvidia+Intel Lenovo laptop.
$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 25a7:fa23 Areson Technology Corp 2.4G Receiver
Bus 001 Device 004: ID 8087:0a2b Intel Corp. Bluetooth wireless interface
Bus 001 Device 005: ID 138a:0094 Validity Sensors, Inc.
Bus 001 Device 033: ID 13d3:5673 IMC Networks EasyCamera
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
$ v4l2-ctl --list-devices
EasyCamera: EasyCamera (usb-0000:00:14.0-5):
/dev/video0
/dev/video1
/dev/media0
Tried cheese and fswebcam, among a few others (logs are too long to fit)
$ cheese
cheese
(cheese:53011): Gdk-WARNING **: 11:41:45.977: Native Windows taller than 65535 pixels are not supported
[0:56:26.030577084] [53011] ERROR IPAModule ipa_module.cpp:171 Symbol ipaModuleInfo not found
[0:56:26.030591748] [53011] ERROR IPAModule ipa_module.cpp:291 v4l2-compat.so: IPA module has no valid info
[0:56:26.030607425] [53011] INFO Camera camera_manager.cpp:325 libcamera v0.3.2
(cheese:53011): GStreamer-CRITICAL **: 11:41:46.096: gst_structure_get_value: assertion 'structure != NULL' failed
[0:57:26.270746293] [53011] ERROR IPAModule ipa_module.cpp:171 Symbol ipaModuleInfo not found
[0:57:26.270790988] [53011] ERROR IPAModule ipa_module.cpp:291 v4l2-compat.so: IPA module has no valid info
[0:57:26.270850259] [53011] INFO Camera camera_manager.cpp:325 libcamera v0.3.2
[0:57:26.432615229] [53061] INFO Camera camera.cpp:1197 configuring streams: (0) 640x480-MJPEG
[0:57:26.449271361] [53574] ERROR V4L2 v4l2_videodevice.cpp:1931 /dev/video0[450:cap]: Failed to start streaming: Protocol error
[0:57:26.449379043] [53574] ERROR V4L2 v4l2_videodevice.cpp:1266 /dev/video0[450:cap]: Unable to request 0 buffers: No such device
(cheese:53011): cheese-WARNING **: 11:42:46.537: Failed to start the camera: Protocol error: ../libcamera/src/gstreamer/gstlibcamerasrc.cpp(680): gst_libcamera_src_task_enter (): /GstCameraBin:camerabin/GstWrapperCameraBinSrc:camera_source/GstBin:bin37/GstLibcameraSrc:libcamerasrc0:
Camera.start() failed with error code -71
(cheese:53011): Clutter-CRITICAL **: 11:42:48.119: Unable to create dummy onscreen: No foreign surface, and wl_shell unsupported by the compositor
$ fswebcam -v
--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
src_v4l2_get_capability,91: /dev/video0 information:
src_v4l2_get_capability,92: cap.driver: "uvcvideo"
src_v4l2_get_capability,93: cap.card: "EasyCamera: EasyCamera"
src_v4l2_get_capability,94: cap.bus_info: "usb-0000:00:14.0-5"
src_v4l2_get_capability,95: cap.capabilities=0x84A00001
src_v4l2_get_capability,96: - VIDEO_CAPTURE
src_v4l2_get_capability,107: - STREAMING
No input was specified, using the first.
src_v4l2_set_input,185: /dev/video0: Input 0 information:
src_v4l2_set_input,186: name = "Camera 1"
src_v4l2_set_input,187: type = 00000002
src_v4l2_set_input,189: - CAMERA
src_v4l2_set_input,190: audioset = 00000000
src_v4l2_set_input,191: tuner = 00000000
src_v4l2_set_input,192: status = 00000000
src_v4l2_set_pix_format,523: Device offers the following V4L2 pixel formats:
src_v4l2_set_pix_format,532: 0: [0x47504A4D] 'MJPG' (Motion-JPEG)
src_v4l2_set_pix_format,532: 1: [0x56595559] 'YUYV' (YUYV 4:2:2)
Using palette MJPEG
Adjusting resolution from 384x288 to 424x240.
src_v4l2_set_mmap,675: mmap information:
src_v4l2_set_mmap,676: frames=4
src_v4l2_set_mmap,725: 0 length=203520
src_v4l2_set_mmap,725: 1 length=203520
src_v4l2_set_mmap,725: 2 length=203520
src_v4l2_set_mmap,725: 3 length=203520
Error starting stream.
VIDIOC_STREAMON: Protocol error
Unable to use mmap. Using read instead.
Unable to use read.
logs
$ journalctl -b-0
# some stuff removed for post character limit
pipewire[1028]: spa.v4l2: '/dev/video0' VIDIOC_STREAMON: Protocol error
pipewire[1028]: pw.node: (v4l2_input.pci-0000_00_14.0-usb-0_5_1.0-78) suspended -> error (Start error: Protocol error)
kernel: usb 1-5: USB disconnect, device number 50
pipewire[1028]: spa.v4l2: VIDIOC_REQBUFS: No such device
kernel: usb 1-5: new high-speed USB device number 51 using xhci_hcd
kernel: usb 1-5: New USB device found, idVendor=13d3, idProduct=5673, bcdDevice=16.04
kernel: usb 1-5: New USB device strings: Mfr=3, Product=1, SerialNumber=2
kernel: usb 1-5: Product: EasyCamera
kernel: usb 1-5: Manufacturer: AzureWave
kernel: usb 1-5: SerialNumber: 0001
kernel: usb 1-5: Found UVC 1.00 device EasyCamera (13d3:5673)
mtp-probe[66565]: checking bus 1, device 51: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-5"
mtp-probe[66565]: bus: 1, device: 51 was not an MTP device
mtp-probe[66599]: checking bus 1, device 51: "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-5"
mtp-probe[66599]: bus: 1, device: 51 was not an MTP device
kernel: usb 1-5: USB disconnect, device number 51
kernel: usb 1-5: new high-speed USB device number 52 using xhci_hcd
kernel: usb 1-5: New USB device found, idVendor=13d3, idProduct=5673, bcdDevice=16.04
kernel: usb 1-5: New USB device strings: Mfr=3, Product=1, SerialNumber=2
kernel: usb 1-5: Product: EasyCamera
kernel: usb 1-5: Manufacturer: AzureWave
kernel: usb 1-5: SerialNumber: 0001
kernel: usb 1-5: Found UVC 1.00 device EasyCamera (13d3:5673)
$ sudo dmesg
[ 5248.449913] usb 1-5: USB disconnect, device number 50
[ 5248.842621] usb 1-5: new high-speed USB device number 51 using xhci_hcd
[ 5249.025592] usb 1-5: New USB device found, idVendor=13d3, idProduct=5673, bcdDevice=16.04
[ 5249.025612] usb 1-5: New USB device strings: Mfr=3, Product=1, SerialNumber=2
[ 5249.025620] usb 1-5: Product: EasyCamera
[ 5249.025626] usb 1-5: Manufacturer: AzureWave
[ 5249.025632] usb 1-5: SerialNumber: 0001
[ 5249.030816] usb 1-5: Found UVC 1.00 device EasyCamera (13d3:5673)
[ 5259.873533] usb 1-5: USB disconnect, device number 51
[ 5260.268988] usb 1-5: new high-speed USB device number 52 using xhci_hcd
[ 5260.454354] usb 1-5: New USB device found, idVendor=13d3, idProduct=5673, bcdDevice=16.04
[ 5260.454371] usb 1-5: New USB device strings: Mfr=3, Product=1, SerialNumber=2
[ 5260.454378] usb 1-5: Product: EasyCamera
[ 5260.454384] usb 1-5: Manufacturer: AzureWave
[ 5260.454389] usb 1-5: SerialNumber: 0001
[ 5260.460370] usb 1-5: Found UVC 1.00 device EasyCamera (13d3:5673)
Any help appreciated! ^_^
Solution: It fixed itself after like 15 power cycles. Easy peasy
Sounds like the driver "broke". I don't use Arch, btw. When stuff like this happens with Sid or testing the fix is to roll back the kernel until someone smarter than me updates the driver I need
I couldn't roll back the kernel easily so I booted with linux-lts. Since this didn't resolve the issue, I assume it isn't a kernel problem (or it still is one and linux-lts isn't the right way to solve it). Same errors too.
I also tried Cheese on a few old rescue USBs (Kubuntu still on Plasma 5, old Devuan copy) to see if luck would grant me working drivers -- no dice.
The camera is straight up disconnecting from the USB bus. A bad driver could cause it to get confused and reset itself. And that would be the uvcvideo kernel module, userspace shouldn't be able to crash the camera.
Since downgrading the kernel didn't help, and it also doesn't work on other distros, I'd consider the possibility your webcam just died.
Are you able to make it work on any distro, or even Windows?