usb camera在linux的uvc驱动
找到一二十年前的一款山寨黑白usb接口相机,采用uvc驱动,也就是免装驱动,插上去试试看。
1、必要的话安装这个驱动
$ sudo apt-get install libv4l-0
2、以下驱动也是cheese所需要的
$ sudo apt-get install build-essential linux-headers-`uname -r` libsbigudrv2 libsbigudrv0
3、必要的话更新
$ sudo update-usbids
4、查看ID
$ lsusb
–Bus 001 Device 003: ID 1578:0076
–Bus 001 Device 004: ID 0547:4d35 Anchor Chips, Inc.
–Bus 001 Device 005: ID 04f2:b2ea Chicony Electronics Co., Ltd Integrated Camera [ThinkPad]
如果开发过usb设备的驱动程序,就很清楚04f2:b2ea是description里面的vendor和product,最常见的罗技c270是046d:0825,可以通过google这个ID,确定是否在uvc的
支持列表。也可以在本机上:
$ lsusb -d 04f2:b2ea -v | grep “14 Video”
bFunctionClass 14 Video
bInterfaceClass 14 Video
bInterfaceClass 14 Video
bInterfaceClass 14 Video
bInterfaceClass 14 Video
bInterfaceClass 14 Video
bInterfaceClass 14 Video
bInterfaceClass 14 Video
这些输出信息说明兼容UVC,否则就是non-UVC camera。
5、看下设备
$ ls /dev | grep video
–video0
6、再看
$ lsmod | grep uvcvideo
uvcvideo 72275 0
videobuf2_core 39510 1 uvcvideo
videodev 108952 2 uvcvideo,videobuf2_core
videobuf2_vmalloc 13048 1 uvcvideo
7 have confirmed that my webcam is using the UVC driver:
ls -ld /sys/class/video4linux/video0/device/driver
lrwxrwxrwx 1 /sys/class/video4linux/video0/device/driver -> ../…./bus/usb/drivers/uvcvideo
7、如果没出现可以显式的加载模块
sudo modprobe uvcvideo
modinfo uvcvideo
modinfo: ERROR: Module uvcvideo not found.
rmmod uvcvideo
rmmod: ERROR: Module uvcvideo is builtin.
sudo modprobe uvcvideo quirks=640
/usr/lib/modules/3.6.11/kernel/drivers/media/video/uvc/uvcvideo.ko: Invalid module
insmod /lib/modules/3.10.17-poky-edison+/kernel/drivers/media/usb/uvc/uvcvideo.ko
/lib/modules/3.10.40-grinch-21.3.4/kernel/drivers/media
8、验证
$ lshal | grep video
system.hardware.primary_video.product = 1029 (0x405) (int)
system.hardware.primary_video.vendor = 5549 (0x15ad) (int)
info.linux.driver = ‘uvcvideo’ (string)
info.linux.driver = ‘uvcvideo’ (string)
info.capabilities = {‘video4linux’, ‘video4linux.video_capture’} (string list)
info.category = ‘video4linux’ (string)
info.subsystem = ‘video4linux’ (string)
info.udi = ‘/org/freedesktop/Hal/devices/usb_device_4f2_b2ea_noserial_if0_video4linux’ (string)
linux.device_file = ‘/dev/video0’ (string)
linux.subsystem = ‘video4linux’ (string)
linux.sysfs_path = ‘/sys/devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-2/1-2:1.0/video4linux/video0’ (string)
video4linux.device = ‘/dev/video0’ (string)
video4linux.version = ‘2’ (string)
$ lshal | grep Cam
info.product = ‘Integrated Camera [ThinkPad]’ (string)
usb_device.product = ‘Integrated Camera [ThinkPad]’ (string)
usb.interface.description = ‘Integrated Camera’ (string)
info.product = ‘Integrated Camera’ (string)
info.product = ‘Integrated Camera’ (string)
input.product = ‘Integrated Camera’ (string)
info.product = ‘5.0M USB2.0 Camera’ (string)
usb_device.product = ‘5.0M USB2.0 Camera’ (string)
9、说明ok
$ dmesg | grep video
[ 409.572621] Linux video capture interface: v2.00
[ 409.663484] usbcore: registered new interface driver uvcvideo
[ 4822.404813] uvcvideo: Found UVC 1.00 device Integrated Camera (04f2:b2ea)
$ dmesg | grep Cam
[ 168.027246] usb 1-1: Product: USB2-Camera
[ 267.368271] usb 1-1: Product: USB2-Camera
[ 3700.024321] usb 1-1: Product: 5.0M USB2.0 Camera
[ 4822.259972] usb 1-2: Product: Integrated Camera
[ 4822.404813] uvcvideo: Found UVC 1.00 device Integrated Camera (04f2:b2ea)
[ 4822.530930] input: Integrated Camera as /devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-2/1-2:1.0/input/input5
$ dmesg | tail -n20
10、lshw、hsinfo、cheese。