我有一台联想 Miix 510。那台机器有一个 ov2680 CMOS 传感器其中一个摄像头。Linux 内核中的 ov2680.c一段时间后,这肯定会转化为我可以找到的驱动程序:
djrscally@valhalla:/lib/modules/5.4.0-37-generic$ find . -name *2680*
./kernel/drivers/media/i2c/ov2680.ko
甚至 modprobe 和 lsmod 也成功:
djrscally@valhalla:/lib/modules/5.4.0-37-generic$ sudo modprobe ov2680
djrscally@valhalla:/lib/modules/5.4.0-37-generic$ lsmod | grep ov2680
ov2680 24576 0
videodev 184320 1 ov2680
mc 40960 2 videodev,ov2680
这会转换为/sys/bus/i2c/devices/i2c-OVTI2680:00
目录。所以它至少部分工作正常……但据我所知,它从未真正抓取设备。例如,dmesg | grep ov2680
它什么都不返回,启动 Cheese 只会告诉我“播放网络摄像头的视频时出错”。
发生了什么事?设备有驱动程序,但为什么无法运行?
答案1
您是否有“访问权限”(文件权限类型的“访问权限”)/dev/video
?
ls -l /dev/video
将向您展示。
sudo adduser $USER $(stat -G /dev/video)
然后按注销/登录将为您提供“组”访问权限/dev/video
。
答案2
答案:现有的驱动程序不是为 x86 平台设计的,并且旨在通过 i2c 匹配来发现,因此该设备从未与驱动程序配对。设备的 sysfs 目录不是由驱动程序创建的;只是由子系统按照 ACPI 的指令创建的。
更改驱动程序以执行 ACPI 匹配可以找到它,但它目前还不能作为驱动程序发挥作用。