v4l2loopback 模块在 Ubuntu 20.04 上失败

v4l2loopback 模块在 Ubuntu 20.04 上失败

我正在尝试在一台之前没有连接视频捕获设备的工作站上使用新的网络摄像头。它应该是即插即用的,但连接后没有一个程序能够找到摄像头。

首先我检查内核本身是否识别了相机:

$ lsusb
[...]
Bus 001 Device 007: ID 046d:082d Logitech, Inc. HD Pro Webcam C920
[...]

所以有一个摄像头,它一定是软件的东西。检查 Linux 上连接的视频设备给出了另一个线索:

$ v4l2-ctl --list-devices
Cannot open device /dev/video0, exiting.

看起来内核模块已被禁用,因此我尝试启动它:

$ sudo modprobe v4l2loopback
modprobe: FATAL: Module v4l2loopback not found in directory /lib/modules/5.4.0-81-generic

奇怪的是,模块甚至没有安装。然后我从包中取出它并再次尝试:

$ sudo aptitude install v4l2loopback-dkms
[...]

$ sudo modprobe v4l2loopback
modprobe: ERROR: could not insert 'v4l2loopback': Unknown symbol in module, or unknown parameter (see dmesg)

这是我在信息中发现的内容:

$ dmesg
[...]
[1271004.074955] v4l2loopback: Unknown symbol video_ioctl2 (err -2)
[1271004.075027] v4l2loopback: Unknown symbol v4l2_ctrl_handler_init_class (err -2)
[1271004.075105] v4l2loopback: Unknown symbol video_devdata (err -2)
[1271004.075167] v4l2loopback: Unknown symbol v4l2_ctrl_new_custom (err -2)
[1271004.075221] v4l2loopback: Unknown symbol video_unregister_device (err -2)
[1271004.075276] v4l2loopback: Unknown symbol video_device_alloc (err -2)
[1271004.075336] v4l2loopback: Unknown symbol v4l2_device_register (err -2)
[1271004.075410] v4l2loopback: Unknown symbol __video_register_device (err -2)
[1271004.075463] v4l2loopback: Unknown symbol v4l2_ctrl_handler_free (err -2)
[1271004.075513] v4l2loopback: Unknown symbol v4l2_device_unregister (err -2)
[1271004.075562] v4l2loopback: Unknown symbol video_device_release (err -2)

我认为这意味着缺少一些软件依赖项。但是是哪些呢?GitHub 上关于云的讨论,但解决方案太笼统(安装所有可用的额外包模块)。

答案1

经过进一步搜索后,我发现了一些奇怪的事情,这个系统上实际上没有安装任何额外的内核模块:

$ aptitude search linux-modules-extra*
[...]
p   linux-modules-extra-5.4.0-70-generic                                                              - Linux kernel extra modules for version 5.4.0 on 64 bit x86 SMP
p   linux-modules-extra-5.4.0-71-generic                                                              - Linux kernel extra modules for version 5.4.0 on 64 bit x86 SMP
p   linux-modules-extra-5.4.0-72-generic                                                              - Linux kernel extra modules for version 5.4.0 on 64 bit x86 SMP
p   linux-modules-extra-5.4.0-73-generic                                                              - Linux kernel extra modules for version 5.4.0 on 64 bit x86 SMP
p   linux-modules-extra-5.4.0-74-generic                                                              - Linux kernel extra modules for version 5.4.0 on 64 bit x86 SMP
p   linux-modules-extra-5.4.0-77-generic                                                              - Linux kernel extra modules for version 5.4.0 on 64 bit x86 SMP
p   linux-modules-extra-5.4.0-80-generic                                                              - Linux kernel extra modules for version 5.4.0 on 64 bit x86 SMP
c   linux-modules-extra-5.4.0-81-generic                                                              - Linux kernel extra modules for version 5.4.0 on 64 bit x86 SMP 

这是一个明显的罪魁祸首,我安装了该软件包并再次尝试:

$ sudo aptitude install linux-modules-extra-5.4.0-81-generic
[...]

$ sudo modprobe v4l2loopback

$ v4l2-ctl --list-devices
Dummy video device (0x0000) (platform:v4l2loopback-000):
    /dev/video0

尽管这让模块恢复了功能,但网络摄像头对于软件来说仍然是不可见的。但这是另一个问题。

相关内容