Closed vega-d closed 4 weeks ago
Hi @vega-d ,
Can you please try to stop all applications trying to access your webcam, including wluma.
Then do sudo modprobe -rv uvcvideo
.
If this module unloading success, try sudo modprobe -v uvcvideo
then ffplay /dev/video0
.
Is it working or still black image?
If still black, try to unload and load uvcvideo module a second time, then list all supported format by your webcam with ffplay -f video4linux2 -list_formats all /dev/video0
; and try to use the bigger format; eg: ffplay -f video4linux2 -video_size 1280x720 /dev/video0
.
Can you also paste me the output of lsusb |grep -i webcam; ffplay -f video4linux2 -list_formats all /dev/video0
?
@cyrinux I did a reboot (full power off of a computer), then:
sudo modprobe -rv uvcvideo
sudo modprobe -v uvcvideo
ffplay /dev/video0
It worked once, opened a window and showed me my webcam feed. I gently closed ffplay
... and webcam light did not go off. It's back to being a malevich square.
Now, if I try to unload the kernel module it does this:
vega@fedora-toolbox-35 ~ [123]> sudo modprobe -rv uvcvideo
rmmod uvcvideo
modprobe: ERROR: could not remove 'uvcvideo': Operation not permitted
Right now it's in it's glitched state. The light is on, the feed is black.
lsusb
returns this for a webcamera, it's the only camera on the computer:
Bus 003 Device 003: ID 04f2:b6fb Chicony Electronics Co., Ltd Chicony USB2.0 Camera
ffplay -f video4linux2 -list_formats all /dev/video0
returns this:
ffplay version 4.4.1 Copyright (c) 2003-2021 the FFmpeg developers
built with gcc 11 (GCC)
configuration: --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --docdir=/usr/share/doc/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man --arch=x86_64 --optflags='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' --extra-ldflags='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 ' --extra-cflags=' -I/usr/include/rav1e' --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvo-amrwbenc --enable-version3 --enable-bzlib --enable-chromaprint --disable-crystalhd --enable-fontconfig --enable-frei0r --enable-gcrypt --enable-gnutls --enable-ladspa --enable-libaom --enable-libdav1d --enable-libass --enable-libbluray --enable-libbs2b --enable-libcdio --enable-libdrm --enable-libjack --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libilbc --enable-libmp3lame --enable-libmysofa --enable-nvenc --enable-openal --enable-opencl --enable-opengl --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librav1e --enable-librtmp --enable-librubberband --enable-libsmbclient --enable-version3 --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtesseract --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-version3 --enable-vapoursynth --enable-libvpx --enable-vulkan --enable-libglslang --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libxml2 --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-avfilter --enable-avresample --enable-libmodplug --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir=/usr/lib64 --enable-lto --enable-libmfx --enable-runtime-cpudetect
libavutil 56. 70.100 / 56. 70.100
libavcodec 58.134.100 / 58.134.100
libavformat 58. 76.100 / 58. 76.100
libavdevice 58. 13.100 / 58. 13.100
libavfilter 7.110.100 / 7.110.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 9.100 / 5. 9.100
libswresample 3. 9.100 / 3. 9.100
libpostproc 55. 9.100 / 55. 9.100
[video4linux2,v4l2 @ 0x7fc5dc000c80] Compressed: mjpeg : Motion-JPEG : 640x480 640x360 352x288 320x240 176x144 160x120 1280x720
[video4linux2,v4l2 @ 0x7fc5dc000c80] Raw : yuyv422 : YUYV 4:2:2 : 640x480 640x360 352x288 320x240 176x144 160x120 1280x720
/dev/video0: Immediate exit requested
nan : 0.000 fd= 0 aq= 0KB vq= 0KB sq= 0B f=0/0
I'm gonna go boot from a usb stick and see if the issue is software or hardware
Do you use your webcam a lot before using it with luma ? Its weird, look like kernel module/driver issue maybe ? 🤔 When you try to unload after gently close of ffplay are we agree wluma was not trying to start too ?
I try to reproduce on my side with same steps but I can't reproduce the bug.
Can you try to start ffplay like this ffplay ffplay -f video4linux2 -framerate 30 -video_size 640x480 -input_format mjpeg /dev/video0
Can you run this and send me the output when the webcam light stay one after close ffplay ?
sudo lsof /dev/video0
this will show us the program acceding /dev/video0
Do you use your webcam a lot before using it with luma ?
Yeah, I've been attending some online lectures and it always worked just fine. Specifically when I ran wluma as a systemd service it all went to shit. I also just booted into live cd of ubuntu 21.10 and behavior is exactly the same, indicating a hardware failure.
doing sudo lsof /dev/video0
while it's glitched with light stuck on the output is this:
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
lsof: WARNING: can't stat() fuse.portal file system /run/user/1000/doc
Output information may be incomplete.
Very sorry this has happened to you!
I'll honestly say that I have a very hard time imaging how a userspace app like wluma, even if executed via systemd, could damage a hardware device. We aren't gonna quickly dismiss this, and I've also been trying out webcam today (so far both of us were unable to reproduce), but we should also consider a possibility that this could also be an unfortunate coincidence, where the webcam would have died on that day anyway. Let's not jump to conclusions, I only say this to keep the mind open.
Do you also have a way to disable webcam in BIOS? Maybe it's worth to try that, disabling it there, booting up, and then rebooting again and enabling it back? Just wondering if this would somehow "reset" some internal failure...
I'll honestly say that I have a very hard time imaging how a userspace app like wluma, even if executed via systemd, could damage a hardware device
My best idea is that because wluma polled it too fast and in too little windows? And that was harmful to it in some way? I gutted my laptop and tried plugging webcam in and out. Behavior changed in a slight way:
I feel like I should get a sacrificial usb webcam and see if it dies too XD
My best idea is that because wluma polled it too fast and in too little windows? And that was harmful to it in some way?
At this moment I would not be surprised by anything 😅 For reference, what wluma does is takes a single camera frame in the lowest possible camera resolution once every 2 seconds... That doesn't seem like a lot to ask, compared to video chats that ask for lots of frames in highest possible resolution...? But who knows, you might be right 🤷♂️ Would love to get to the bottom of this!
I booted windows portable edition from a usb stick, to totally reassure myself it's not some crazy linux issue, and I can confirm, even windows experiences this issue
I have observed previously unnoticed behavior. If I "glitch" the webcam so the light is stuck on, then pull my laptop to C3 sleep - the webcam light goes off! It shows the same pattern with a full reboot, but instead of a complete reboot that's just a sleep.
I have a new theory - webcam is supposed to be powered down while not used, and something broke - now it doesn't turn off the power. Doing a reboot with a complete power down on USB rails (just reboot doesn't cut it) or doing sleep which also powers down USB power rails resets it to a normal state. Perhaps there could be done some piece of script trickery telling usb controller to stop supplying power to /dev/video0
when it's not in use? or perhaps it's missing some magic packet of powering down? The plot thickens!
This theory is easy to test, simply run watch -n 0.1 lsof /dev/video0
on a side and see if wluma shows up there.
In my tests it's not there, meaning that we release webcam resources as soon as frame is captured, so there isn't much we can do, I would guess it's up to the driver to power-off a device that is not used by anyone.
It dawned on me to check dmesg, and I found this being outputted when anything tries to access webcam when it's glitched:
Feb 03 00:45:17 dart kernel: uvcvideo 3-7:1.1: Failed to set UVC probe control : -110 (exp. 26).
This is quite google-able, with varying results - try perhaps some "quirks" as in this thread https://forums.linuxmint.com/viewtopic.php?p=1954908&sid=84b2937204ce2dcda89793bbc2acf2ab#p1954908
- try perhaps some "quirks"
no luck. I am substituting it with my phone right now, but in the long run I will be looking into replacing the camera. And also perhaps the screen, kinda want a glossy covering instead of matte one.
Hey @vega-d, have you ever had any further progress in this mysterious issue? I haven't heard any similar feedback from others, and to be honest, while I don't want to ignore an issue like this, to be honest I just don't know what to do about it, on wluma's side.
have you ever had any further progress
I seem to have encountered this problem as well, no time yet, maybe some ideas will come up over the weekend
Closing due to lack of activity, please leave a comment or open a new issue if still relevant.
Steps for reproducing the issue
What is the buggy behavior?
upon waking up webcam starts behaving weirdly, very.
outdoors
brightness mode, even if I cover the camera with my finger.ffplay /dev/video0
shows nothing but a 720p black screen.ffplay
returns NaN instead of a video stream.What is the expected behavior?
Well perhaps wluma should not murder my webcam.
Logs
Version
version 4.1.0, from the built artifact in releases folder
Environment