萬盛學電腦網

 萬盛學電腦網 >> Linux教程 >> Linux系統中如何正確安裝攝像頭驅動

Linux系統中如何正確安裝攝像頭驅動

class="21561">

  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)驅動網址;

  http://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 根據攝像頭信息到驅動網站對號入座;

  請參見: http://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的源;

  http://mirrors.ircam.fr/pub/atrpms/fc5-i386/atrpms/RPMS.testing

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

  http://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/

copyright © 萬盛學電腦網 all rights reserved