無線網路網路攝影機Linux 下網路攝影機驅動支援情況__Linux

來源:互聯網
上載者:User

本文所說的網路攝影機(Webcam),特指USB網路攝影機。

  在Windows下,網路攝影機驅動由廠商開發並提供。但在Linux下,因商業利益有限 ,只有極少廠商願意提供網路攝影機驅動支援。這並不妨礙Linux下網路攝影機的使用——廣大第三方誌願者維護著大大小小的驅動。之前做過一個嵌入式皮毛項目,雖然網路攝影機驅動不關我的事,在好奇心驅使下簡要探索了一番。結果是有些胸悶,它們像蜘蛛絲一樣雜亂。寫本文的動機是想理清一下主線,給後來者提供一點有限的參考,但無法保證下面的文字完全正確。

  常見的網路攝影機驅動有以下幾個系列: OVCam drivers(ov5xx)

  該系列驅動是針對OmniVision OV5xx系列晶片,此類晶片被廣泛運用於各種USB網路攝影機中,在嵌入式開發板上尤其常見。凡是使用了OV511/OV511+/OV518/OV6620/OV6630/OV7610/OV7620/OV7 620AE等映像感應器的網路攝影機都可以在該驅動下工作。

  項目首頁:http://alpha.dyndns.org/ov511/

  Philips USB Webcam Driver(pwc) 該驅動主要用於Philips及pwc晶片相容網路攝影機。由於原開發人員與Philips公司簽有保密協定,該驅動以二進位形式提供,後來被踢出核心,引起一場口水戰:是使用者需求重要還是保持核心純潔重要。所幸後續開發人員從原項目上建立了一個新的分支,使得該項目繼續存活。

  項目首頁:http://www.saillard.org/linux/pwc/

  QuickCam USB camera driver (qc-usb) 該驅動主要用於Logitech公司的QuickCam Express系列和其它相容型號網路攝影機。最初由Georg Acher開發,當時命名為qce-ga。Jean-Frederic Clere參考該驅動建立出了第一個Video4Linux相容驅動。從那開始,不斷有開發人員加入,使得該驅動逐漸能夠支援新的網路攝影機和晶片。在此期間,該驅動更名為qc-usb,更為廣泛地支援其它QuickCam USB網路攝影機,而不再是局限於Express系列。

  項目首頁:http://qce-ga.sourceforge.net/

  QuickCam Messenger & Communicate driver(quickcam) 這是另一個針對QuickCam網路攝影機的驅動,它僅支援某一些型號,並且與qc-usb驅動不相容。 項目首頁:http://home.mag.cx/messenger/

  SPCA webcam driver(gspca/spca5xx) 該系列驅動適用於Sunplus晶片網路攝影機,也適用於其它晶片,如目前國內山寨網路攝影機一哥“中星微”(Z-Star)晶片。Michel Xhaard是該項目的維護者,他在60歲左右的時候(大約是2003年)從一種普通常見的驅動入手,進而不斷修改開發成一個支援250種以上網路攝影機的通用驅動。他還寫了流媒體伺服器spcaserv與用戶端spcaview。不少高校所謂的嵌入式無線網路視頻傳輸項目,就是從這兩個東西來的。

  項目首頁:http://mxhaard.free.fr/spca5xx.html

  Linux UVC driver(uvc) 該驅動適用於符合USB視頻類(USB Video Class)規範的網路攝影機裝置,它包括V4L2核心裝置驅動和使用者空間工具補丁。大多數大量存放區裝置(如優盤)都遵循USB規範,因而僅用一個單一驅動就可以操作它們。與此類似,UVC相容外設只需要一個通用驅動即可。

  USB網路攝影機大體上可以二分為UVC cameras和non-UVC cameras。推薦購買UVC cameras。UVC是一個開放的標準,擁有維護良好的驅動,它屬於核心代碼的一部分。插入網路攝影機後就可以工作,而無須編譯或安裝額外的驅動。non-UVC cameras通常情況下不比UVC cameras工作出色,前者的驅動並不遵循通用的協議,需要針對每種網路攝影機做出單獨的處理,這往往需要一個逆向工程的探索過程。

  判斷一個網路攝影機是否屬於UVC規範可以使用下面方法:

  1.使用lsusb命令或其它硬體資訊查看工具找出網路攝影機的裝置號(Vendor ID)和產品號(Product ID)。如Logitech Quickcam for Notebooks Pro網路攝影機是046d:08cb;

  2.尋找是否有視頻類介面資訊

  lsusb -d 046d:08cb -v | grep "14 Video"

  如果該網路攝影機相容UVC,則會輸出類似資訊

  bFunctionClass 14 Video

  bInterfaceClass 14 Video

  bInterfaceClass 14 Video

  bInterfaceClass 14 Video

  若無以上資訊,則是non-UVC裝置。

  項目首頁:http://linux-uvc.berlios.de/

  在Linux下網路攝影機驅動有三種存在形式,內建於核心(within the kernel),做為一個外掛的模組(module),或者是先行編譯的二進位程式(pre-compiled binary)。

  Linux核心樹會不斷合并優秀的驅動。從2.4核心起,ov5xx驅動就已經是核心代碼的一部分。從2.6.26開始,Linux核心原生包含uvc驅動。2.6.27核心又吸收進了gspca/spca5xx系列驅動。常見的Linux發行版所配置的核心,一般都已將這些驅動選項開啟,而無需使用者另外編譯。核心的.config檔案中有許多組態變數等式,用來說明核心配置的結果。y表示本編譯選項對應的核心代碼被靜態編譯進 Linux核心;m表示本編譯選項對應的核心代碼被編譯成模組;n表示不選擇此編譯選項。

  以Fedora12/boot下的config檔案為例

  cat /boot/config-2.6.31.12-174.2.3.fc12.i686 | grep CONFIG_USB_GSPCA

  CONFIG_USB_GSPCA=m

  CONFIG_USB_GSPCA_CONEX=m

  CONFIG_USB_GSPCA_ETOMS=m

  CONFIG_USB_GSPCA_FINEPIX=m

  CONFIG_USB_GSPCA_MARS=m

  CONFIG_USB_GSPCA_MR97310A=m

  CONFIG_USB_GSPCA_OV519=m

  CONFIG_USB_GSPCA_OV534=m

  CONFIG_USB_GSPCA_PAC207=m

  CONFIG_USB_GSPCA_PAC7311=m

  CONFIG_USB_GSPCA_SN9C20X=m

  CONFIG_USB_GSPCA_SN9C20X_EVDEV=y

  CONFIG_USB_GSPCA_SONIXB=m

  CONFIG_USB_GSPCA_SONIXJ=m

  CONFIG_USB_GSPCA_SPCA500=m

  CONFIG_USB_GSPCA_SPCA501=m

  CONFIG_USB_GSPCA_SPCA505=m

  CONFIG_USB_GSPCA_SPCA506=m

  CONFIG_USB_GSPCA_SPCA508=m

  CONFIG_USB_GSPCA_SPCA561=m

  CONFIG_USB_GSPCA_SQ905=m

  CONFIG_USB_GSPCA_SQ905C=m

  CONFIG_USB_GSPCA_STK014=m

  CONFIG_USB_GSPCA_SUNPLUS=m

  CONFIG_USB_GSPCA_T613=m

  CONFIG_USB_GSPCA_TV8532=m

  CONFIG_USB_GSPCA_VC032X=m

  CONFIG_USB_GSPCA_ZC3XX=m

  可以看到gspca系列驅動被編譯為模組。當插入網路攝影機後,使用dmesg命令可以列印出以下資訊:

  usb 1-1.2: new full speed USB device using ehci_hcd and address 6

  usb 1-1.2: New USB device found, idVendor=046d, idProduct=08af

  usb 1-1.2: New USB device strings: Mfr=0, Product=0, SerialNumber=0

  usb 1-1.2: configuration #1 chosen from 1 choice

  gspca: probing 046d:08af

  zc3xx: probe 2wr ov vga 0x0000

  zc3xx: probe sensor -> 0011

  zc3xx: Find Sensor HV7131R(c)

  gspca: probe ok

  這說明該網路攝影機被識別,且自動掛載了gspca系列下的zc3xx驅動。

  如果由於某種原因,已配置的核心中沒有包括網路攝影機驅動,可以重新設定核心選項,用新編譯的核心替換原有的舊核心。或者是依據裝置號及產品號,直接到對應驅動的項目首頁,下載源碼進行編譯。

  最後總結一下

  如果你想買一個網路攝影機,推薦買Logitech的,買符合UVC驅動的,可以到這裡挑一款。

  如果你已經有了一個網路攝影機,先插進去看看,Linux對它有沒有反應。記錄dmesg輸出資訊,記錄lsusb輸出裝置號,以裝置號為關鍵字上Google搜尋。

  參考資源 http://www.tldp.org/HOWTO/Webcam-HOWTO/

  http://www.chineselinuxuniversity.net/courses/kern el/articles/19988.shtml

  http://www.quickcamteam.net/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.