Blame view

Documentation/video4linux/ov511.txt 10.7 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
6
7
8
9
10
11
  -------------------------------------------------------------------------------
  Readme for Linux device driver for the OmniVision OV511 USB to camera bridge IC
  -------------------------------------------------------------------------------
  
  Author: Mark McClelland
  Homepage: http://alpha.dyndns.org/ov511
  
  INTRODUCTION:
  
  This is a driver for the OV511, a USB-only chip used in many "webcam" devices.
  Any camera using the OV511/OV511+ and the OV6620/OV7610/20/20AE should work.
1864cfb15   Michael Krufky   V4L/DVB (3653h): ...
12
  Video capture devices that use the Philips SAA7111A decoder also work. It
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
13
14
15
16
17
18
19
20
21
22
23
24
  supports streaming and capture of color or monochrome video via the Video4Linux
  API. Most V4L apps are compatible with it. Most resolutions with a width and
  height that are a multiple of 8 are supported.
  
  If you need more information, please visit the OV511 homepage at the above URL.
  
  WHAT YOU NEED:
  
  - If you want to help with the development, get the chip's specification docs at
    http://www.ovt.com/omniusbp.html
  
  - A Video4Linux compatible frame grabber program (I recommend vidcat and xawtv)
98766fbe6   Randy Dunlap   [PATCH] kernel Do...
25
26
      vidcat is part of the w3cam package:  http://mpx.freeshell.net/
      xawtv is available at:  http://linux.bytesex.org/xawtv/
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
  
  HOW TO USE IT:
  
  Note: These are simplified instructions. For complete instructions see:
  	http://alpha.dyndns.org/ov511/install.html
  
  You must have first compiled USB support, support for your specific USB host
  controller (UHCI or OHCI), and Video4Linux support for your kernel (I recommend
  making them modules.) Make sure "Enforce bandwidth allocation" is NOT enabled.
  
  Next, (as root):
  
  	modprobe usbcore
  	modprobe usb-uhci  <OR>  modprobe usb-ohci
  	modprobe videodev
  	modprobe ov511
  
  If it is not already there (it usually is), create the video device:
  
  	mknod /dev/video0 c 81 0
  
  Optionally, symlink /dev/video to /dev/video0
  
  You will have to set permissions on this device to allow you to read/write
  from it:
  
  	chmod 666 /dev/video
  	chmod 666 /dev/video0 (if necessary)
1864cfb15   Michael Krufky   V4L/DVB (3653h): ...
55

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
56
57
  Now you are ready to run a video app! Both vidcat and xawtv work well for me
  at 640x480.
1864cfb15   Michael Krufky   V4L/DVB (3653h): ...
58

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
59
60
61
62
  [Using vidcat:]
  
  	vidcat -s 640x480 -p c > test.jpg
  	xview test.jpg
1864cfb15   Michael Krufky   V4L/DVB (3653h): ...
63

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
64
65
66
67
68
69
70
71
  [Using xawtv:]
  
  From the main xawtv directory:
  
  	make clean
  	./configure
  	make
  	make install
1864cfb15   Michael Krufky   V4L/DVB (3653h): ...
72
  Now you should be able to run xawtv. Right click for the options dialog.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
73
74
75
76
77
78
79
80
81
82
  
  MODULE PARAMETERS:
  
    You can set these with:  insmod ov511 NAME=VALUE
    There is currently no way to set these on a per-camera basis.
  
    NAME: autobright
    TYPE: integer (Boolean)
    DEFAULT: 1
    DESC: Brightness is normally under automatic control and can't be set
6e2040900   Michael Krufky   V4L/DVB (4042): D...
83
  	manually by the video app. Set to 0 for manual control.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
  
    NAME: autogain
    TYPE: integer (Boolean)
    DEFAULT: 1
    DESC: Auto Gain Control enable. This feature is not yet implemented.
  
    NAME: autoexp
    TYPE: integer (Boolean)
    DEFAULT: 1
    DESC: Auto Exposure Control enable. This feature is not yet implemented.
  
    NAME: debug
    TYPE: integer (0-6)
    DEFAULT: 3
    DESC: Sets the threshold for printing debug messages. The higher the value,
6e2040900   Michael Krufky   V4L/DVB (4042): D...
99
100
101
102
103
104
105
  	the more is printed. The levels are cumulative, and are as follows:
  	  0=no debug messages
  	  1=init/detection/unload and other significant messages
  	  2=some warning messages
  	  3=config/control function calls
  	  4=most function calls and data parsing messages
  	  5=highly repetitive mesgs
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
106
107
108
109
110
111
112
113
114
115
116
117
  
    NAME: snapshot
    TYPE: integer (Boolean)
    DEFAULT: 0
    DESC: Set to 1 to enable snapshot mode. read()/VIDIOCSYNC will block until
  	the snapshot button is pressed. Note: enabling this mode disables
  	/proc/video/ov511/<minor#>/button
  
    NAME: cams
    TYPE: integer (1-4 for OV511, 1-31 for OV511+)
    DEFAULT: 1
    DESC: Number of cameras allowed to stream simultaneously on a single bus.
6e2040900   Michael Krufky   V4L/DVB (4042): D...
118
119
120
121
  	Values higher than 1 reduce the data rate of each camera, allowing two
  	or more to be used at once. If you have a complicated setup involving
  	both OV511 and OV511+ cameras, trial-and-error may be necessary for
  	finding the optimum setting.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
122
123
124
125
126
  
    NAME: compress
    TYPE: integer (Boolean)
    DEFAULT: 0
    DESC: Set this to 1 to turn on the camera's compression engine. This can
6e2040900   Michael Krufky   V4L/DVB (4042): D...
127
128
129
  	potentially increase the frame rate at the expense of quality, if you
  	have a fast CPU. You must load the proper compression module for your
  	camera before starting your application (ov511_decomp or ov518_decomp).
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
130
131
132
133
134
  
    NAME: testpat
    TYPE: integer (Boolean)
    DEFAULT: 0
    DESC: This configures the camera's sensor to transmit a colored test-pattern
6e2040900   Michael Krufky   V4L/DVB (4042): D...
135
  	instead of an image. This does not work correctly yet.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
  
    NAME: dumppix
    TYPE: integer (0-2)
    DEFAULT: 0
    DESC: Dumps raw pixel data and skips post-processing and format conversion.
  	It is for debugging purposes only. Options are:
  		0: Disable (default)
  		1: Dump raw data from camera, excluding headers and trailers
  		2: Dumps data exactly as received from camera
  
    NAME: led
    TYPE: integer (0-2)
    DEFAULT: 1 (Always on)
    DESC: Controls whether the LED (the little light) on the front of the camera
  	is always off (0), always on (1), or only on when driver is open (2).
  	This is not supported with the OV511, and might only work with certain
  	cameras (ones that actually have the LED wired to the control pin, and
  	not just hard-wired to be on all the time).
  
    NAME: dump_bridge
    TYPE: integer (Boolean)
    DEFAULT: 0
    DESC: Dumps the bridge (OV511[+] or OV518[+]) register values to the system
  	log. Only useful for serious debugging/development purposes.
  
    NAME: dump_sensor
    TYPE: integer (Boolean)
    DEFAULT: 0
    DESC: Dumps the sensor register values to the system log. Only useful for
  	serious debugging/development purposes.
  
    NAME: printph
    TYPE: integer (Boolean)
    DEFAULT: 0
    DESC: Setting this to 1 will dump the first 12 bytes of each isoc frame. This
  	is only useful if you are trying to debug problems with the isoc data
  	stream (i.e.: camera initializes, but vidcat hangs until Ctrl-C). Be
  	warned that this dumps a large number of messages to your kernel log.
  
    NAME: phy, phuv, pvy, pvuv, qhy, qhuv, qvy, qvuv
    TYPE: integer (0-63 for phy and phuv, 0-255 for rest)
    DEFAULT: OV511 default values
    DESC: These are registers 70h - 77h of the OV511, which control the
  	prediction ranges and quantization thresholds of the compressor, for
  	the Y and UV channels in the horizontal and vertical directions. See
  	the OV511 or OV511+ data sheet for more detailed descriptions. These
  	normally do not need to be changed.
  
    NAME: lightfreq
    TYPE: integer (0, 50, or 60)
    DEFAULT: 0 (use sensor default)
    DESC: Sets the sensor to match your lighting frequency. This can reduce the
  	appearance of "banding", i.e. horizontal lines or waves of light and
  	dark that are often caused by artificial lighting. Valid values are:
  		0 - Use default (depends on sensor, most likely 60 Hz)
  		50 - For European and Asian 50 Hz power
  		60 - For American 60 Hz power
  
    NAME: bandingfilter
    TYPE: integer (Boolean)
    DEFAULT: 0 (off)
be2a608bd   John Anthony Kazos Jr   documentation: co...
197
    DESC: Enables the sensorĀ“s banding filter exposure algorithm. This reduces
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
198
199
200
  	or stabilizes the "banding" caused by some artificial light sources
  	(especially fluorescent). You might have to set lightfreq correctly for
  	this to work right. As an added bonus, this sometimes makes it
be2a608bd   John Anthony Kazos Jr   documentation: co...
201
  	possible to capture your monitorĀ“s output.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
  
    NAME: fastset
    TYPE: integer (Boolean)
    DEFAULT: 0 (off)
    DESC: Allows picture settings (brightness, contrast, color, and hue) to take
  	effect immediately, even in the middle of a frame. This reduces the
  	time to change settings, but can ruin frames during the change. Only
  	affects OmniVision sensors.
  
    NAME: force_palette
    TYPE: integer (Boolean)
    DEFAULT: 0 (off)
    DESC: Forces the palette (color format) to a specific value. If an
  	application requests a different palette, it will be rejected, thereby
  	forcing it to try others until it succeeds. This is useful for forcing
  	greyscale mode with a color camera, for example. Supported modes are:
  		0                           (Allows all the following formats)
  		1   VIDEO_PALETTE_GREY      (Linear greyscale)
  		10  VIDEO_PALETTE_YUV420    (YUV 4:2:0 Planar)
  		15  VIDEO_PALETTE_YUV420P   (YUV 4:2:0 Planar, same as 10)
  
    NAME: backlight
    TYPE: integer (Boolean)
    DEFAULT: 0 (off)
    DESC: Setting this flag changes the exposure algorithm for OmniVision sensors
  	such that objects in the camera's view (i.e. your head) can be clearly
  	seen when they are illuminated from behind. It reduces or eliminates
  	the sensor's auto-exposure function, so it should only be used when
  	needed. Additionally, it is only supported with the OV6620 and OV7620.
  
    NAME: unit_video
    TYPE: Up to 16 comma-separated integers
    DEFAULT: 0,0,0... (automatically assign the next available minor(s))
    DESC: You can specify up to 16 minor numbers to be assigned to ov511 devices.
  	For example, "unit_video=1,3" will make the driver use /dev/video1 and
  	/dev/video3 for the first two devices it detects. Additional devices
  	will be assigned automatically starting at the first available device
  	node (/dev/video0 in this case). Note that you cannot specify 0 as a
  	minor number. This feature requires kernel version 2.4.5 or higher.
  
    NAME: remove_zeros
    TYPE: integer (Boolean)
    DEFAULT: 0 (do not skip any incoming data)
    DESC: Setting this to 1 will remove zero-padding from incoming data. This
  	will compensate for the blocks of corruption that can appear when the
  	camera cannot keep up with the speed of the USB bus (eg. at low frame
  	resolutions). This feature is always enabled when compression is on.
  
    NAME: mirror
    TYPE: integer (Boolean)
    DEFAULT: 0 (off)
    DESC: Setting this to 1 will reverse ("mirror") the image horizontally. This
  	might be necessary if your camera has a custom lens assembly. This has
  	no effect with video capture devices.
  
    NAME: ov518_color
    TYPE: integer (Boolean)
    DEFAULT: 0 (off)
    DESC: Enable OV518 color support. This is off by default since it doesn't
  	work most of the time. If you want to try it, you must also load
  	ov518_decomp with the "nouv=0" parameter. If you get improper colors or
  	diagonal lines through the image, restart your video app and try again.
  	Repeat as necessary.
  
  WORKING FEATURES:
   o Color streaming/capture at most widths and heights that are multiples of 8.
   o Monochrome (use force_palette=1 to enable)
   o Setting/getting of saturation, contrast, brightness, and hue (only some of
     them work the OV7620 and OV7620AE)
   o /proc status reporting
   o SAA7111A video capture support at 320x240 and 640x480
   o Compression support
   o SMP compatibility
  
  HOW TO CONTACT ME:
  
  You can email me at mark@alpha.dyndns.org . Please prefix the subject line
  with "OV511: " so that I am certain to notice your message.
  
  CREDITS:
  
  The code is based in no small part on the CPiA driver by Johannes Erdfelt,
  Randy Dunlap, and others. Big thanks to them for their pioneering work on that
  and the USB stack. Thanks to Bret Wallach for getting camera reg IO, ISOC, and
  image capture working. Thanks to Orion Sky Lawlor, Kevin Moore, and Claudio
  Matsuoka for their work as well.