You are not logged in.
I have issues with my webcam on my laptop, a Lenovo ThinkBook 13s-IML.
When i try to use my camera in either discord (vesktop) or the camera app (both flatpaks if that is relevant) it seems to constantly crash over and over before even the first frame can be rendered, which means it is currently entirely unusable.
➜ ~ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 8087:0aaa Intel Corp. Bluetooth 9460/9560 Jefferson Peak (JfP)
Bus 001 Device 064: ID 5986:2115 Bison Electronics Inc. Integrated Camera
Bus 001 Device 081: ID 04f3:0c02 Elan Microelectronics Corp. ELAN:Fingerprint
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
➜ ~ lsusb -t
/: Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/12p, 480M
|__ Port 007: Dev 064, If 0, Class=Video, Driver=uvcvideo, 480M
|__ Port 007: Dev 064, If 1, Class=Video, Driver=uvcvideo, 480M
|__ Port 008: Dev 081, If 0, Class=Vendor Specific Class, Driver=[none], 12M
|__ Port 010: Dev 004, If 0, Class=Wireless, Driver=btusb, 12M
|__ Port 010: Dev 004, If 1, Class=Wireless, Driver=btusb, 12M
/: Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/6p, 10000M
Checking https://linux-hardware.org/?id=usb:5986-2115 shows the text "The device is supported by kernel versions 2.6.26 and newer". And while for a few reports on that page (including arch) the camera is marked as functional, for some other distros this does not seem to be the case.
So far i struggled with finding relevant logs. After some digging online someone mentioned the command "journalctl --user -xeu wireplumber.service"
Jun 28 19:25:26 kurisu wireplumber[1085]: wplua: wplua_pushobject: assertion 'G_IS_OBJECT (object)' failed
Jun 28 19:25:26 kurisu wireplumber[1085]: wplua: [string "name-node.lua"]:25: attempt to index a nil value (local 'properti
es')
stack traceback:
[string "name-node.lua"]:25: in function <[string "name-node.lua"]:19>
Jun 28 19:25:26 kurisu wireplumber[1085]: wplua: wplua_pushobject: assertion 'G_IS_OBJECT (object)' failed
Jun 28 19:25:26 kurisu wireplumber[1085]: wplua: [string "create-node.lua"]:30: bad argument #2 to 'match_rules_update_prop
erties' (table expected, got nil)
stack traceback:
[C]: in field 'match_rules_update_properties'
[string "create-node.lua"]:30: in function <[string "create-node.lua"]:24>
Jun 28 19:29:09 kurisu wireplumber[1085]: spa.libcamera: unknown camera id \_SB_.PCI0.XHC_.RHUB.HS07-7:1.0-5986:2115
Jun 28 19:29:09 kurisu wireplumber[1085]: wp-device: SPA handle 'api.libcamera.device' could not be loaded; is it installed?
Jun 28 19:29:09 kurisu wireplumber[1085]: s-monitors-libcamera: Failed to create 'api.libcamera.device' device
"spa.libcamera: unknown camera id \_SB_.PCI0.XHC_.RHUB.HS07-7:1.0-5986:2115" sounds interesting, and so does "wp-device: SPA handle 'api.libcamera.device' could not be loaded; is it installed?"
I have libcamera, libcamera-ipa, libcamera-tools and gst-plugin-libcamera installed, though this does not resolve my issue so far.
➜ ~ paru -Q | grep libcamera
gst-plugin-libcamera 0.3.0-1
libcamera 0.3.0-1
libcamera-ipa 0.3.0-1
libcamera-tools 0.3.0-1
Any ideas what I could try to look for, and what might resolve my issue and makes the camera functional?
Offline
Let's see if the device was recognised by the kernel at all first. Try "dmesg | grep -i uvc", which gives the following output on my machine :
$ dmesg | grep -i uvc
[ 21.883789] usb 1-1.1: Found UVC 1.00 device <unnamed> (046d:0825)
[ 21.922807] usbcore: registered new interface driver uvcvideo
Then, you should have at least one video* node in /dev :
$ ls -la /dev/video*
crw-rw----+ 1 root video 81, 0 Jun 29 00:42 /dev/video0
crw-rw----+ 1 root video 81, 1 Jun 29 00:42 /dev/video1
Only members of the "video" group are added to use those device nodes by default, have you added your user to that group?
If both those things seem okay, try installing v4l-utils which comes with an application called qv4l2. Run it from the console, and select File -> Trace IOCTLs in its window. Then click on the green button which should make a new window appear with the video feed from your webcam. At the same time, you should also get some output in the console window :
$ qv4l2
VIDIOC_QUERYMENU returned -1 (Invalid argument)
VIDIOC_QUERYMENU returned -1 (Invalid argument)
VIDIOC_G_SELECTION returned -1 (Invalid argument)
VIDIOC_SUBSCRIBE_EVENT returned -1 (Invalid argument)
VIDIOC_ENUMINPUT returned -1 (Invalid argument)
VIDIOC_QUERYMENU returned -1 (Invalid argument)
VIDIOC_QUERYMENU returned -1 (Invalid argument)
Those appear on my machine and seem to be harmless as everything's working okay. If you don't get a video feed or the program crashes, perhaps some of the prints can point us in the right direction. Also see if there are some new messages in dmesg.
A plastic bag stranded at the lights, this once was me!
Offline