OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [Documentation/] [usb/] [philips.txt] - Blame information for rev 1774

Go to most recent revision | Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.