视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Linux下安装摄像头驱动详解
2025-09-29 22:23:42 责编:小OO
文档
Linux下安装摄像头驱动详解

来源: wxiu.com 时间: 2009-05-08 作者: fox

        在windows下安装摄像头驱动相当简单,通常主程序直接setup就OK,在linux下安装摄像头驱动就不那么容易了。我们都知道每个linux版本官方都有相应的驱动程序提供下载,linux下安装摄像头驱动的方法如下:

        1、摄像头(Webcam)驱动说明; 

  摄像头在Windows的驱动极为容易,最多是点几下鼠标,没有什么太大的难度。但在Linux中,驱动起来是有点困难,这并不是说Linux多高雅。只能说开发商唯利是图,没有好处的事,他们的确不怎么积极。Linux 的用户比较少,所以他们也不把用户当回事。 

  目前看来摄像头(Webcam)在 Linux 中驱动基本成熟,缺少的是应用程序的支持,比如即时通讯工具支持视频的好程序比较少。有些芯片组是没有任何问题,在国内,大多摄像头的芯片组是Z-Star,也有显示为Vimmicro(和Z-Star是同样的芯片)的。在Fedora 5.0或SuSE 10.x中,已经支持了很多摄像头,应该说即插即用。对于我们来说,是不是即插即用,那是另一回事,只有幸运儿才有这个的福气。如果您的摄像头接上还是用不了,那您就有必要看一下我写的这个文档了。 

  本文操作环境: Fedora Core 5.0 。由于大部份是用源码包编译 ,所以还是有通用性的; 

  1.1 摄像头在Linux中是如何支持的; 

  在 Linux中,硬件的驱动程序,都是由内核支持的;目前比较新内核版本也集成了一些的摄像头驱动。就是Fedora、SuSE最新版本所支持的内核也是来自由 kernel.org 。所以支持也是极为正常的。内核对硬件的支持分为内置于和外挂模块两种方便。对于摄像头来说,大多是模块支持的; 

  1.2 摄像头(Webcam)驱动网址; 

  替换mxhaard.free.fr 

  目前最新版本的摄像头驱动,已经到了 spca5xx-20060501.tar.gz 版本;您可以在上面的地址下载; 

  2、驱动摄像头详细过程; 

  2.1 查看摄像头型号; 

  我们用用到 lshal 工具,在老版本的Linux是没有这个工具的。在最新版本的Linux都有这个工具; 

  [root@localhost ~]# lshal |grep WebCam 

  info.product = 'ZC0303 WebCam' (string) 

  usb_device.product = 'ZC0303 WebCam' (string) 

  上面这个命令是列出系统硬件设备,然后从输出中,提取WebCam字样的信息。这说明这个摄像头是ZC0303芯片组的;如果想更详细的,就用下面的命令,找到带有ZC0303 WebCam设备的详细信息,就把所有USB设备都列出来; 

  [root@localhost ~]# lshal |grep usb 

  然后就找 ZC0303字样的设备 ,那一大段都要仔细的看; 

  也可以这样的方法; 

  [root@localhost ~]# lshal -s |grep usbusb_device_0_0_0000_00_1d_0usb_device_0_0_0000_00_1d_0_if0usb_device_4fc_3_noserialusb_device_4fc_3_noserial_if0usb_ 

device_4fc_3_noserial_if0_logicaldev_inputusb_device_4fc_3_noserial_usbrawusb_device_0_0_0000_00_1d_0_usbrawusb_device_ 

0_0_0000_00_1d_1usb_device_0_0_0000_00_1d_1_if0usb_device_ac8_303b_noserialusb_device_ac8_303b_noserial_if0usb_ 

device_ac8_303b_noserial_usbrawusb_device_ac8_303b_noserial_video4Linuxusb_device_0_0_0000_00_1d_1_usbrawusb_ 

device_0_0_0000_00_1d_2usb_device_0_0_0000_00_1d_2_if0usb_device_0_0_0000_00_1d_2_usbrawusb_device_0_0_ 

0000_00_1d_7usb_device_0_0_0000_00_1d_7_if0usb_device_0_0_0000_00_1d_7_usbraw 

  我们看到带有video4linux字样的,他的设备号是 usb_device_ac8_303b_noserial_video4linux字样的,在其前面还有几个差不多的编号的设备。比如 usb_device_ac8_303b_noserial。我们就先查这个设备,大多数这样的一组相似的设备号,查第一个就能知道是什么设备。于是用。 

  [root@localhost ~]# lshal -l -u usb_device_ac8_303b_noserial 

  udi = '/org/freedesktop/Hal/devices/usb_device_ac8_303b_noserial' 

  info.udi = '/org/freedesktop/Hal/devices/usb_device_ac8_303b_noserial' (string) 

  linux.subsystem = 'usb' (string) 

        linux.hotplug_type = 1 (0x1) (int) 

  usb_device.bus_number = 3 (0x3) (int) 

  usb_device.can_wake_up = false (bool) 

  usb_device.is_self_powered = false (bool) 

  usb_device.version_bcd = 272 (0x110) (int) 

  usb_device.speed_bcd = 4608 (0x1200) (int) 

  usb_device.linux.device_number = 2 (0x2) (int) 

  usb_device.num_ports = 0 (0x0) (int) 

  usb_device.max_power = 160 (0xa0) (int) 

  usb_device.device_revision_bcd = 256 (0x100) (int) 

  info.product = 'ZC0303 WebCam' (string) 

  usb_device.product = 'ZC0303 WebCam' (string) 

  info.vendor = 'Z-Star Microelectronics Corp.' (string) 

  usb_device.vendor = 'Z-Star Microelectronics Corp.' (string) 

  usb_device.product_id = 12347 (0x303b) (int) 

  usb_device.vendor_id = 2760 (0xac8) (int) 

  usb_device.device_protocol = 0 (0x0) (int) 

  usb_device.device_subclass = 0 (0x0) (int) 

  usb_device.device_class = 255 (0xff) (int) 

  usb_device.num_interfaces = 1 (0x1) (int) 

  usb_device.num_configurations = 1 (0x1) (int) 

  usb_device.configuration_value = 1 (0x1) (int) 

  usb_device.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1d.1/usb3/3-1' (string) 

  info.linux.driver = 'usb' (string) 

  info.bus = 'usb_device' (string) 

  info.parent = '/org/freedesktop/Hal/devices/usb_device_0_0_0000_00_1d_1' (string) 

  linux.sysfs_path_device = '/sys/devices/pci0000:00/0000:00:1d.1/usb3/3-1' (string) 

  linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1d.1/usb3/3-1' (string) 

  这回应该详细了吧。看上面的设备是哪个厂出品的? 

  usb_device.vendor_id = 2760 (0xac8) (int) 

  usb_device.product_id = 12347 (0x303b) (int) 

  info.product = 'ZC0303 WebCam' (string) 

  info.vendor = 'Z-Star Microelectronics Corp.' (string) 

  usb_device.product_id = 12347 (0x303b) (int) 

  在Gnome桌面环境下,还用hal-gnome软件包工具可用;您可以通过下面的方式来安装此软件包 

  [root@localhost ~]# yum install hal-gnome 

  然后运行hal-device-manager工具; 

  [root@localhost ~]# hal-device-manager 

  点鼠标查看摄像头的详细信息还是没有问题吧。 

  2.2 根据摄像头信息到驱动网站对号入座; 

  请参见: 替换mxhaard.free.fr/spca5xx.html 

  请注意:这两个最重要的信息,也驱动网址摄像头芯片所对应地址对号入座,如果这张列表上没有摄像头,可能您得等一等了。不过也不是绝对的,给开发者捐赠一个不被支持的摄像头,肯定能解决。驱动开发者有捐赠主页,不妨捐一个看看。 

  usb_device.vendor_id = 2760 (0xac8) (int) 

  usb_device.product_id = 12347 (0x303b) (int) 

  比如我的这款摄像头,在其网站上,显示为支持。 

  2.3 摄像头驱动的选择; 

  spca5xx-20060501.tar.gz 

  对于Fedora Core 5.0 4.0 摄像头驱动RPM包: 

  其实在Fedora Core 5.0 中已经有这款驱动的RPM包了,但我尝试后发现根本不能用。如果您也想尝试RPM包,请到下面的网址去下载;或用YUM在线安装也行,不过得设置YUM的源; 

  替换mirrors.ircam.fr/pub/atrpms/fc5-i386/atrpms/RPMS.testing 

  如果是Fedora 4.0的,就到下面的地址去下载; 

  替换mirrors.ircam.fr/pub/atrpms/fc4-i386/atrpms/RPMS.testing/ 

  首先:要看自己的内核版本,然后再下载; 

      [root@localhost ~]# uname -r -i 

  其次:下载软件包选择; 

  下载spca5xx开头的,要安装两个包左右,一个是 spca5xx-kmdl,另一个是 video4linux-kmdl,还有一个是 video4linux-kernheaders。根据软件包的时间、版本、内核版本对照下载安装。这方面不能说的太多。自己试试看,我是没有成功。 

  2.4 下载并编译内核; 

  由于RPM包安装上也不可用,所以我采用的是源码包安装的方法,当然因为我用的是比较新的内核,2.6.16.19。所以这个文档就是通用性了。源码包安装大多都差不多。所以其它发行版本也可以做为参考。 

  2.41 下载内核; 

  我测试摄像头所用的内的内核版本是 2.6.16.19; 

  linux-2.6.16.19.tar.bz2 

  下载内核配置文件: 

  我从Slackware的FTP上,找到了2.6.16.19的配置文件。请到这里下载;kernel261619.txt 

  2.42 编译内核; 

  第一步:解压内核软件包; 

  [root@localhost ~]# tar jxvf linux-2.6.16.19.tar.bz2 

  [root@localhost ~]# mv linux-2.6.16.19 /usr/src 

  把下载下来的内核配置文件改名复制到 /usr/src/linux-2.6.16.19 

  [root@localhost ~]# cp kernel261619.txt /usr/src/linux-2.6.16.19/.config 

  第二步:编译内核; 

  [root@localhost ~]# cd /usr/src/linux-2.6.16.19/ 

  [root@localhost linux-2.6.16.19]# make 

  [root@localhost linux-2.6.16.19]# make modules_install 

[root@localhost linux-2.6.16.19]# make install 

  第三步:查看/boot/grub/menu.lst文件; 

  一般的情况下,make install 安装内核后,系统会把启动写入GRUB的配置文件。/boot/grub/menu.lst。您可以看到有类似如下的一段; 

  title Fedora Core (2.6.16.19) 

  root (hd0,6) 

  kernel /boot/vmlinuz-2.6.16.19 ro root=LABEL=/1 rhgb quiet 

  initrd /boot/initrd-2.6.16.19.img 

  对于其它发行版本,您可以修改menu.lst文件。 

  2.5 编译摄像头驱动程序; 

  在编译摄像头驱动的前题是,我们要用2.6.16.19这个内核来启动系统,然后在 2.6.16.19内核系统环境下编译摄像头驱动; 

  2.51 下载摄像头驱动; 

  http://mxhaard.free.fr 

  spca5xx-20060501.tar.gz 

  2.52 解压编译; 

  再说一点,可能在编译的过程中需要各种开发库和或开发工具之类的,比如gcc、make、automake等,您要懂得自己把这些东西安装上;少什么就安装什么吧。 

  [root@localhost ~]# tar zxvf spca5xx-20060501.tar.gz 

  [root@localhost ~]# cd spca5xx-20060501 

  [root@localhost spca5xx-20060501]# make 

  [root@localhost spca5xx-20060501]# make install 

  [root@localhost spca5xx-20060501]# depmod -a 

  [root@localhost spca5xx-20060501]# modprobe spca5xx 

  看看驱动模块挂载好了没有? 

  [root@localhost spca5xx-20060501]# lsmod |grep spca5xx 

  spca5xx 659920 0 

  videodev 7040 1 spca5xx 

  我们再查看一下设备/dev/video0是否存在? 

  [root@localhost spca5xx-20060501]# ls -lh /dev/video0 

  crw------- 1 beinan root 81, 0 06-08 09:33 /dev/video0 

  3、摄像头应用程序 SpcaView; 

  3.1 SpcaView 软件包,包括一组工具; 

  spcaview工具是用来纪录数据流,也能用来播放数据; 

  spcaserv 是流媒体服务器; 

  spcacat 简单图片的抓取工具; 

  SpcaView 下载和安装; 

  下载地址: 

  http://mxhaard.free.fr/spca50x/Download ,我下载的是目前这个版本:spcaview-20051212.tar.gz 

  依赖关系; 

  此软件依赖 libsdl,要先安装它才行,下载地址:http://www.libsdl.org ,我下载的是:SDL-1.2.10.tar.gz 

  http://www.libsdl.org/download-1.2.php 

  [root@localhost ~]# tar zxvf SDL-1.2.10.tar.gz 

  [root@localhost ~]# cd SDL-1.2.10 

  [root@localhost SDL-1.2.10]# ./configure ; make ;make install 

  安装SpcaView: 

  [root@localhost ~]# tar zxvf spcaview-20051212.tar.gz 

  [root@localhost ~]# cd spcaview-20051212 

  [root@localhost spcaview-20051212]# make ; make install 

  配置可执行程序的路径: 

  可执行的工具被安装到 /usr/local/bin目录中,所以我们还要配置一下用户的环境变量PATH 。配置命令执行路径,在当前用户家目录下的.bashrc文件中加入下面的一行; 

  export PATH=".:/bin:/sbin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/X11R6/bin" 

  然后运行如下命令; 

  [root@localhost ~]# source .bashrc 

  3.2 通用spcaview来测试摄像头; 

  [root@localhost ~]# spcaview -d /dev/video0 -f jpg -s 320x240 

  如果您想看的图像分辨率,可以调整 -s后面的参数,比如 0x480 

  如果抓取数据流,尝试用下面的命令,比如我们把抓取的数据流存在一个linuxsir.org.avi文件中;如果想播放,就用mplayer就行,xine也可以。 

  [root@localhost ~]# spcaview -f yuv -o linuxsir.org.avi 

  看一下图吧: 

 

        Linux下安装摄像头驱动的方法就是这样了,希望对大家有所帮助。

 

        不妨关注以下文章:Linux下配置nVIDIA显卡驱动方法        U盘安装Linux详解(Debian/Ubuntu)下载本文

显示全文
专题