我有一个 USB 摄像头,它的行为真的很奇怪。我在网络摄像头测试网站上对其进行了测试,在向该网站授予权限后一切顺利,相机工作正常。但我发现,在多次刷新网站后,我的相机停止工作(我在屏幕上看不到输出,之前它就在那里)。我设法找到的唯一解决方案是再次拔出并插入 USB,然后整个过程重复 - 相机在几次网站刷新后工作,然后再次停止。有人知道发生了什么事吗?我觉得真的很奇怪
编辑:如果有帮助,我的相机型号是“A4Tech Co., Ltd. A4tech FHD 1080P PC Camera”。
编辑2:journalctl
输出:
当相机工作时:
apr 25 14:59:37 my-desktop-name firefox[2787]: gtk_widget_get_window: assertion 'GTK_IS_WIDGET (widget)' failed apr 25 14:59:37 my-desktop-name firefox[2787]: gtk_widget_get_window: assertion 'GTK_IS_WIDGET (widget)'
当相机停止工作时:
apr 25 14:56:38 my-desktop-name kernel: xhci_hcd 0000:02:00.0: WARN Set TR Deq Ptr cmd failed due to incorrect slot or ep state.
ls -l /dev/video;id
也从(在我的例子中/dev/video0)输出
crw-rw----+ 1 root video 81, 0 04-29 17:39 /dev/video0
答案1
许多设备访问问题可以通过组成员身份更改来解决。
具体来说,如果ls -l
显示组权限(第二个“ rwx
”三元组)为“ rw
”(例如“ -rw-rw----
”),则将自己添加到拥有该设备的组中将授予rw
访问权限。
就是这样:
device="/dev/video0"
sudo adduser $USER $(stat -c "%G" $device)
这允许您成为可以使用该设备的组的成员资格rw
,但还有一个步骤。
要使所有进程成为新组的成员,请注销并登录。小组成员资格是按时间设立的login
。
您可以使用 检查当前的组id
。读man id
。
要在新组中创建单个进程(用于测试,在注销/登录之前):
newgrp $(stat -c "%G" $device)
或者,只需键入组名称。看man newgrp
。
答案2
尝试在用户和组管理中检查硬件用户权限