Webcam devices: Difference between revisions

From LinuxTVWiki
Jump to navigation Jump to search
(→‎gspca driver: minor edits)
(→‎UVC webcams: minor expansion of description)
Line 1: Line 1:
==UVC webcams==
==UVC webcams==


[[Wikipedia:USB_video_device_class|USB Video Class (UVC)]] is a USB specification which defines and standardizes video streaming functionality on the Universal Serial Bus. USB video streaming devices (which covers a broad spectrum of possible devices, such as webcams, digital camcorders, ... ) that are compliant to the UVC specification are referred to as UVC devices. A primary benefit brought about by the UVC specification is that UVC compliant peripherals can all be managed by a single generic driver. Under Linux, UVC compliant devices are supported by (brace for it) the [http://linux-uvc.berlios.de/ Linux UVC device driver] (which may also be referred to as linux-uvc or uvcvideo). Most modern webcams are UVC compliant, which is actually a good thing, because in the past webcam drivers and interfaces were often proprietary (meaning that Linux drivers needed the author to sign an NDA, or to decompile or monitor/sniff USB traffic).
[[Wikipedia:USB_video_device_class|USB Video Class (UVC)]] is a USB specification which defines and standardizes video streaming functionality on the Universal Serial Bus. USB video streaming devices (which covers a broad spectrum of possible devices, such as webcams, digital camcorders, ... ) that are compliant to the UVC specification are referred to as UVC devices. A primary benefit brought about by the UVC specification is that UVC compliant peripherals can all be managed by a single generic driver. Under Linux, UVC compliant devices are supported by (brace for it) the [http://linux-uvc.berlios.de/ Linux UVC device driver] (which may also be referred to as linux-uvc or uvcvideo). Most modern webcams are UVC compliant, which is actually a good thing because, in the past, webcam drivers and interfaces were often proprietary (meaning that, in order to provide device support under Linux, driver developers may have needed to sign an [[NDA]] for chipset information, or had to proceed through time-consuming reverse engineering efforts that required one to decompile or monitor/sniff USB traffic).


The Linux UVC device driver was included in the kernel as of 2.6.26. Some of the devices supported by this driver include:
The Linux UVC device driver was included in the kernel as of 2.6.26. Some of the devices supported by this driver include:

Revision as of 00:36, 17 January 2012

UVC webcams

USB Video Class (UVC) is a USB specification which defines and standardizes video streaming functionality on the Universal Serial Bus. USB video streaming devices (which covers a broad spectrum of possible devices, such as webcams, digital camcorders, ... ) that are compliant to the UVC specification are referred to as UVC devices. A primary benefit brought about by the UVC specification is that UVC compliant peripherals can all be managed by a single generic driver. Under Linux, UVC compliant devices are supported by (brace for it) the Linux UVC device driver (which may also be referred to as linux-uvc or uvcvideo). Most modern webcams are UVC compliant, which is actually a good thing because, in the past, webcam drivers and interfaces were often proprietary (meaning that, in order to provide device support under Linux, driver developers may have needed to sign an NDA for chipset information, or had to proceed through time-consuming reverse engineering efforts that required one to decompile or monitor/sniff USB traffic).

The Linux UVC device driver was included in the kernel as of 2.6.26. Some of the devices supported by this driver include:

  • several USB2.0 Logitech Quickcams, such as:
    • the Quickcam Orbit MP
    • the Quickam for Notebooks Pro (Note that the Quickcam for Notebooks Deluxe is not a UVC webcam; it's supported by the gspca driver described below)
    • the Quickcam Fusion
All those webcams are 1.3MP devices. They will also work in USB 1.1 mode, but are then limited to 640x480. In that case, you could go for the Quickcam Pro 5000, which is a 640x480 device
  • the Dell Notebook
  • and the Cisco VT Camera II

And while UVC webcams are well supported, you must be aware of a few issues:

  • The linux-uvc driver is V4L2-only. This means applications which support V4L1 only will not work. V4L1 is officially deprecated, and have been removed from the kernel recently, so most drivers have or will switch to V4L2 anyway.
  • The 4 Logitech UVC webcams mentioned above compress images in MJPEG for resolutions up to 960x720. This means that applications must be able to decompress MJPEG streams to use the webcam at lower resolutions. Ekiga and motion support MJPEG compression. UVC webcams like the OmniVision OV2640 (built into Dell M1530 and Inspiron laptops) actually *require* MJPEG compression for high resolutions up to 1600x1200, whereas using the standard YUV encoding limits resolution to standard 640x480.

gspca driver

This driver is a major effort to support all sorts of pre UVC webcams.

The gspca framework consists of a core module (gspca_main) and several sub-drivers: gspca_conex, gspca_etoms, gspca_finepix, gspca_m5602, gspca_mars, gspca_mr97310a, gspca_ov519, gspca_ov534, gspca_pac207, gspca_pac7311, gspca_sn9c20x, gspca_sonixb, gspca_sonixj, gspca_spca500, gspca_spca501, gspca_spca505, gspca_spca506, gspca_spca508, gspca_spca561, gspca_stk014, gspca_stv06xx, gspca_sunplus, gspca_t613, gspca_tv8532, gspca_vc032x, gspca_zc3xx.

Development History
Its development originally began as the spca5xx driver; which was the result of reverse engineering efforts to support webcams based upon the Sunplus spca5xx bridge chipset. This original driver used the old V4L 1 API spec. The driver was later expanded to also support other bridge chipsets (such as from Sonix, Transvision, Z-star/Vimicro, Conexant, Etoms), and was rebranded as gspca version 1 in mid 2006. [1]. The gspca framework was later reworked to support the V4L2 API, and the resultant version 2 of the driver became integrated into the 2.6.27 kernel. It remains actively developed [2].

For the list of the currently supported webcams, please see gspca.

Other webcam drivers

(alphabetize by driver)

Many of these are out-of-tree kernel drivers.

  • cpia -- first generation of STM's Color Processor Interface (ASIC) Cpia
    • Included in mainline kernel
    • Supports a large number of USB devices by Aiptek, Creative, Digicom, Dynalink, Ezonics, Intel, Microtek, Pace, SuperCam, TCE, Terracom, Trust, Utobia, ZoomCam
    • Supports some parallel port devices by Creative, CVideo, CU-SeeMe, Digicom, and ZoomCam
  • cpia2 -- second generation of STM's Color Processor Interface (ASIC)
    • Included in mainline kernel from 2.6.18
    • Supports the QX5 USB microscope, the Swann Versacam MINI webcam, and other devices using the second generation of STM's Color Processor Interface (ASIC)
  • em2880
    • Supports the Videology 20K14XUSB webcam and cameras using Micron mt9v011 and mt9m001 sensors.
    • Included in mainline kernel from 2.6.18 (em28xx)
  • et61x251
    • Supports Etoms ET61X151 or ET61X251-based USB cameras
    • Included in mainline kernel
  • icm532
  • m560x -- ALi M560(2/3) driver with various sensors attached
    • No properly working driver yet
  • meye -- the Sony Vaio PictureBook Motion Eye Camera Driver
    • Included in 2.4 and 2.6 kernels -- see documentation
    • Supports the second version of the MotionEye camera (PCI vendor/device 0x136b/0xff01)
    • A driver for the third version is being written, see r-engine below
  • nw802
  • ov511
    • setov511 -- a configuration utility for ov511 based webcams
  • pwc -- the new driver
  • qce-ga/qc-usb
    • Kernel module package available in
    • Supports Logitech Quickcam Express, LegoCam, Dexxa Webcam, Labtec Webcam (old model), Logitech QuickCam Notebook (some models)
  • quickcam
  • r-engine
    • Aims to support Sony Vaio Picturebooks (model PCG-C1M* and newer, PCI vendor/device 0x10cf/0x2011)
  • r5u870
    • Supports webcams of the Ricoh family, fails to control brightness, gamma and contrast
    • Maybe to be substituted by r5u87x
  • se401
  • sqcam
    • Supports webcams based on the sq905 chip, such as Volcano DG640E, Nexxtech Micro Digital Camera, Umax (Yamada) Astranugget; may work with Mito DG640E, Mitek CD10, Mitek 30P, GTW Electronics/ ShuoYing, Industrial(ShenZhen)Co.,Ltd SY-2102, Condord Eye-Q Easy / Eye Q Easy Too, Che-ez Snap, Hercules DualPix, Argus DC-1512, DC-1510, Gear to go, Magpix B350, Jenoptik JD 350, Concord Eye-Q Easy, PockCam
  • Sonix SN9C10x
    • Available in the latest kernels as sn9c102
    • Supports webcams based on the sn9c102 chip, such as the Genius VideoCam NB
    • Another driver was in development here sonix
    • sn9c101 -- patch for Trust Spacec@m
  • SN9C* open source Microdia drivers under development
    • Shall be equivalent to SN9CXXX below
  • SN9CXXX (non-open source)
    • Driver for SN9C101, SN9C102, SN9C102P, SN9C103, SN9C105, SN9C110, SN9C120, SN9C201, SN9C202
    • for example 0c45:624f from Microdia
  • stk11xx
    • Aims to support Syntek DC-1125/1135 cams
  • stv680 -- SANE backend
  • sty0680
  • tv8532
  • w9968cf -- included in the kernel
  • zr364xx
    • Supports the webcam mode of cameras based on the ZR364xx chips from wendors like Aiptek, Concord, Creative, Genius, Maxell, Fujifilm, Ricoh, Pentacon, Mustek, Konica, Umax etc.
  • zc0301 -- included in the kernel
    • Supports Z-Start/Vimicro ZC0301-based USB cameras
  • zc0302

Also See

External Links