GNU Linux-libre 4.14.290-gnu1
[releases.git] / Documentation / media / v4l-drivers / philips.rst
1 Philips webcams (pwc driver)
2 ============================
3
4 This file contains some additional information for the Philips and OEM webcams.
5 E-mail: webcam@smcc.demon.nl                        Last updated: 2004-01-19
6 Site: http://www.smcc.demon.nl/webcam/
7
8 As of this moment, the following cameras are supported:
9
10  * Philips PCA645
11  * Philips PCA646
12  * Philips PCVC675
13  * Philips PCVC680
14  * Philips PCVC690
15  * Philips PCVC720/40
16  * Philips PCVC730
17  * Philips PCVC740
18  * Philips PCVC750
19  * Askey VC010
20  * Creative Labs Webcam 5
21  * Creative Labs Webcam Pro Ex
22  * Logitech QuickCam 3000 Pro
23  * Logitech QuickCam 4000 Pro
24  * Logitech QuickCam Notebook Pro
25  * Logitech QuickCam Zoom
26  * Logitech QuickCam Orbit
27  * Logitech QuickCam Sphere
28  * Samsung MPC-C10
29  * Samsung MPC-C30
30  * Sotec Afina Eye
31  * AME CU-001
32  * Visionite VCS-UM100
33  * Visionite VCS-UC300
34
35 The main webpage for the Philips driver is at the address above. It contains
36 a lot of extra information, a FAQ, and the binary plugin 'PWCX'. This plugin
37 contains decompression routines that allow you to use higher image sizes and
38 framerates; in addition the webcam uses less bandwidth on the USB bus (handy
39 if you want to run more than 1 camera simultaneously). These routines fall
40 under a NDA, and may therefore not be distributed as source; however, its use
41 is completely optional.
42
43 You can build this code either into your kernel, or as a module. I recommend
44 the latter, since it makes troubleshooting a lot easier. The built-in
45 microphone is supported through the USB Audio class.
46
47 When you load the module you can set some default settings for the
48 camera; some programs depend on a particular image-size or -format and
49 don't know how to set it properly in the driver. The options are:
50
51 size
52    Can be one of 'sqcif', 'qsif', 'qcif', 'sif', 'cif' or
53    'vga', for an image size of resp. 128x96, 160x120, 176x144,
54    320x240, 352x288 and 640x480 (of course, only for those cameras that
55    support these resolutions).
56
57 fps
58    Specifies the desired framerate. Is an integer in the range of 4-30.
59
60 fbufs
61    This parameter specifies the number of internal buffers to use for storing
62    frames from the cam. This will help if the process that reads images from
63    the cam is a bit slow or momentarily busy. However, on slow machines it
64    only introduces lag, so choose carefully. The default is 3, which is
65    reasonable. You can set it between 2 and 5.
66
67 mbufs
68    This is an integer between 1 and 10. It will tell the module the number of
69    buffers to reserve for mmap(), VIDIOCCGMBUF, VIDIOCMCAPTURE and friends.
70    The default is 2, which is adequate for most applications (double
71    buffering).
72
73    Should you experience a lot of 'Dumping frame...' messages during
74    grabbing with a tool that uses mmap(), you might want to increase if.
75    However, it doesn't really buffer images, it just gives you a bit more
76    slack when your program is behind. But you need a multi-threaded or
77    forked program to really take advantage of these buffers.
78
79    The absolute maximum is 10, but don't set it too high!  Every buffer takes
80    up 460 KB of RAM, so unless you have a lot of memory setting this to
81    something more than 4 is an absolute waste.  This memory is only
82    allocated during open(), so nothing is wasted when the camera is not in
83    use.
84
85 power_save
86    When power_save is enabled (set to 1), the module will try to shut down
87    the cam on close() and re-activate on open(). This will save power and
88    turn off the LED. Not all cameras support this though (the 645 and 646
89    don't have power saving at all), and some models don't work either (they
90    will shut down, but never wake up). Consider this experimental. By
91    default this option is disabled.
92
93 compression (only useful with the plugin)
94    With this option you can control the compression factor that the camera
95    uses to squeeze the image through the USB bus. You can set the
96    parameter between 0 and 3::
97
98      0 = prefer uncompressed images; if the requested mode is not available
99          in an uncompressed format, the driver will silently switch to low
100          compression.
101      1 = low compression.
102      2 = medium compression.
103      3 = high compression.
104
105    High compression takes less bandwidth of course, but it could also
106    introduce some unwanted artefacts. The default is 2, medium compression.
107    See the FAQ on the website for an overview of which modes require
108    compression.
109
110    The compression parameter does not apply to the 645 and 646 cameras
111    and OEM models derived from those (only a few). Most cams honour this
112    parameter.
113
114 leds
115    This settings takes 2 integers, that define the on/off time for the LED
116    (in milliseconds). One of the interesting things that you can do with
117    this is let the LED blink while the camera is in use. This::
118
119      leds=500,500
120
121    will blink the LED once every second. But with::
122
123      leds=0,0
124
125    the LED never goes on, making it suitable for silent surveillance.
126
127    By default the camera's LED is on solid while in use, and turned off
128    when the camera is not used anymore.
129
130    This parameter works only with the ToUCam range of cameras (720, 730, 740,
131    750) and OEMs. For other cameras this command is silently ignored, and
132    the LED cannot be controlled.
133
134    Finally: this parameters does not take effect UNTIL the first time you
135    open the camera device. Until then, the LED remains on.
136
137 dev_hint
138    A long standing problem with USB devices is their dynamic nature: you
139    never know what device a camera gets assigned; it depends on module load
140    order, the hub configuration, the order in which devices are plugged in,
141    and the phase of the moon (i.e. it can be random). With this option you
142    can give the driver a hint as to what video device node (/dev/videoX) it
143    should use with a specific camera. This is also handy if you have two
144    cameras of the same model.
145
146    A camera is specified by its type (the number from the camera model,
147    like PCA645, PCVC750VC, etc) and optionally the serial number (visible
148    in /sys/kernel/debug/usb/devices). A hint consists of a string with the
149    following format::
150
151       [type[.serialnumber]:]node
152
153    The square brackets mean that both the type and the serialnumber are
154    optional, but a serialnumber cannot be specified without a type (which
155    would be rather pointless). The serialnumber is separated from the type
156    by a '.'; the node number by a ':'.
157
158    This somewhat cryptic syntax is best explained by a few examples::
159
160      dev_hint=3,5              The first detected cam gets assigned
161                                /dev/video3, the second /dev/video5. Any
162                                other cameras will get the first free
163                                available slot (see below).
164
165      dev_hint=645:1,680:2      The PCA645 camera will get /dev/video1,
166                                and a PCVC680 /dev/video2.
167
168      dev_hint=645.0123:3,645.4567:0     The PCA645 camera with serialnumber
169                                         0123 goes to /dev/video3, the same
170                                         camera model with the 4567 serial
171                                         gets /dev/video0.
172
173      dev_hint=750:1,4,5,6       The PCVC750 camera will get /dev/video1, the
174                                 next 3 Philips cams will use /dev/video4
175                                 through /dev/video6.
176
177    Some points worth knowing:
178
179    - Serialnumbers are case sensitive and must be written full, including
180      leading zeroes (it's treated as a string).
181    - If a device node is already occupied, registration will fail and
182      the webcam is not available.
183    - You can have up to 64 video devices; be sure to make enough device
184      nodes in /dev if you want to spread the numbers.
185      After /dev/video9 comes /dev/video10 (not /dev/videoA).
186    - If a camera does not match any dev_hint, it will simply get assigned
187      the first available device node, just as it used to be.
188
189 trace
190    In order to better detect problems, it is now possible to turn on a
191    'trace' of some of the calls the module makes; it logs all items in your
192    kernel log at debug level.
193
194    The trace variable is a bitmask; each bit represents a certain feature.
195    If you want to trace something, look up the bit value(s) in the table
196    below, add the values together and supply that to the trace variable.
197
198    ====== ======= ================================================ =======
199    Value  Value   Description                                      Default
200    (dec)  (hex)
201    ====== ======= ================================================ =======
202        1    0x1   Module initialization; this will log messages       On
203                   while loading and unloading the module
204
205        2    0x2   probe() and disconnect() traces                     On
206
207        4    0x4   Trace open() and close() calls                      Off
208
209        8    0x8   read(), mmap() and associated ioctl() calls         Off
210
211       16   0x10   Memory allocation of buffers, etc.                  Off
212
213       32   0x20   Showing underflow, overflow and Dumping frame       On
214                   messages
215
216       64   0x40   Show viewport and image sizes                       Off
217
218      128   0x80   PWCX debugging                                      Off
219    ====== ======= ================================================ =======
220
221    For example, to trace the open() & read() functions, sum 8 + 4 = 12,
222    so you would supply trace=12 during insmod or modprobe. If
223    you want to turn the initialization and probing tracing off, set trace=0.
224    The default value for trace is 35 (0x23).
225
226
227
228 Example::
229
230      # modprobe pwc size=cif fps=15 power_save=1
231
232 The fbufs, mbufs and trace parameters are global and apply to all connected
233 cameras. Each camera has its own set of buffers.
234
235 size and fps only specify defaults when you open() the device; this is to
236 accommodate some tools that don't set the size. You can change these
237 settings after open() with the Video4Linux ioctl() calls. The default of
238 defaults is QCIF size at 10 fps.
239
240 The compression parameter is semiglobal; it sets the initial compression
241 preference for all camera's, but this parameter can be set per camera with
242 the VIDIOCPWCSCQUAL ioctl() call.
243
244 All parameters are optional.
245