为什么有些设备在 udevadm 信息中生成 DRIVER=="" ?

为什么有些设备在 udevadm 信息中生成 DRIVER=="" ?

目标其实很简单,就是想让 USB 摄像头在 Linux 上工作。安装uvc、uv4l(我猜是bcm2835内核模块)后,仍然不起作用。

目前,我在安装和调试过程中创建了以下字符文件:

crw-rw-rw-  1 root video   240,   0 Jul  4 20:24 video0
crw-rw-rw-+ 1 root video    81,   0 Jul  4 20:24 video10
crw-rw-rw-+ 1 root video    81,   1 Jul  4 20:24 video11
crw-rw-rw-+ 1 root video    81,   2 Jul  4 20:24 video12
crw-rw-rw-  1 root video   239,   0 Jul  4 23:01 uv4l

最后一个 uv4l 仅在我运行uv4l命令后出现,并在重新启动后消失。

当我使用 dd 或其他程序调用 char 文件时,它会输出一个Input/output error.所以我开始检查内核模块或驱动程序。我在想也许 char 文件没有正确注册到内核模块。

这是以下的输出udevadm info -a -n /dev/uv4l

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/virtual/cuse/uv4l':
    KERNEL=="uv4l"
    SUBSYSTEM=="cuse"
    DRIVER==""

uv4l char文件关联的驱动什么都没有,根据下也没有device文件夹/sys/dev/char/major#:minor#/这个答案。同样的情况也适用于 char 文件videoX

这是否意味着我的猜测是正确的?是不是uvc驱动没安装好?

以下是一些相关输出lsmod

bcm2835_codec          36864  0
bcm2835_v4l2           45056  0
v4l2_mem2mem           24576  1 bcm2835_codec
v4l2_common            16384  1 bcm2835_v4l2
videobuf2_vmalloc      16384  1 bcm2835_v4l2
bcm2835_mmal_vchiq     32768  2 bcm2835_codec,bcm2835_v4l2
videobuf2_dma_contig    20480  1 bcm2835_codec
videobuf2_memops       16384  2 videobuf2_dma_contig,videobuf2_vmalloc
videobuf2_v4l2         24576  3 bcm2835_codec,bcm2835_v4l2,v4l2_mem2mem
videobuf2_common       45056  4 bcm2835_codec,bcm2835_v4l2,v4l2_mem2mem,videobuf2_v4l2
snd_bcm2835            24576  1
videodev              200704  6 bcm2835_codec,v4l2_common,videobuf2_common,bcm2835_v4l2,v4l2_mem2mem,videobuf2_v4l2
snd_pcm               102400  2 snd_usb_audio,snd_bcm2835
media                  36864  2 videodev,v4l2_mem2mem

cat /proc/devices显示以下内容(简短):

81 video4linux
239 uv4l
240 video0

似乎所有必需的内核模块都已安装,为什么字符文件没有与这些驱动程序关联?或者我在这里误解了一些基本概念?谢谢。

相关内容