This is a generic oriental import USB microscope that identifies via USB as an Infoxelle VT1760 Digital Microscope but is often sold under a different brand name or no brand name at all. This is a 1280x1024 (1.3MP) USB microscope with adjustable zoom from infinite (telephoto) up to about 230X. This is not a high quality device but it is adequate for many purposes, produces a reasonable image, and costs little more than a comparable webcam and less than many retail webcams. At that price, many people can find a use for it. It works with Linux, is marketed for windows, and should work with many other operatin systems (see below).
Distinquishing features for this model, compared to similar products, are:
These characteristics will help recognize this particular unit when the brand name is not identified.
This review is oriented towards Linux users. It has detailed technical information, however, that can be of use to users of other operating systems.
This camera works with Linux. It should also work under other operating systems as it is USB Video Class compliant. Since USB video class is a relatively new USB spec, Older versions of these operating systems may require downloading a driver. UVC drivers are built in starting with Linux 2.6.26, Mac OS X 10.4.3/10.4.9, NetBSD 5.0, Open BSD 4.4, Sony PlayStation 3 firmware version 1.54, Solaris Build 56, Windows XP SP2, Windows Vista.
UVC is a USB device class that handles various types of streaming video devices including camcorders, television tuners, webcams, video digitizers, and still-image cameras. -- In general, you should avoid webcams and similar devices that are not USB Video Class (UVC) Compliant. Also avoid a few older models, such as the earlier Logitech cameras which are based on a defective SPCA chip and are unreliable.
Reportedly, UVC compliance is required for Windows Vista Logo program, so it looks like even Microsoft, the primary beneficiary of the proprietary driver mess, is getting fed up with proprietary drivers.
The uvcvideo driver does not appear to be backported to much older kernels. There is a lack of documentation on which kernel versions the uvcvideo driver will compile on. Apparently uvcvideo is included in ubuntu linux-backports-modules-2.6.24-*. Someone mentioned that uvcvideo supports kernels n 2.6.15+ as of Oct 2008. 2.6.15 was released on 2006-01-02 and 2.6.26 released on 2008-07-13.
This can be a problem if you are using something like EMC (CNC machine tool controller) which requires the real-time kernel extensions which don't tend to be ported to newer kernels and the EMC distributions may come with older kernels than are strictly necessary. The new EMC distribution is based on Ubuntu 8.04 which comes with the 2.6.24 kernel which is too old to have the UVC driver built in but new enough that it will probably compile. Reportedly, some unspecified version of the uvcvideo driver can be compiled on Ubuntu 6.06 which the older EMC distribution is based on. The older EMC distribution I am using (ubuntu 6.06?) has kernel version 2.6.15 so the driver should, in theory, compile.
Some UVC cameras come with drivers to use instead of the standard UVC drivers. These presumably are for extra "features" such as face tracking and inflated interpolated resolutions. Hint: if your camera says it supports 640x480 in driver-free mode but needs a driver to support 1280x1024, then it isn't a 1.3MP webcam. Some cameras also claim 1.3MP but only if you use their application software and in still picture mode - i.e. they are faking resolution at the application level rather than the driver level or hardware level.
Operation is very unreliable on a low speed ("full speed") USB 1.1 port but works on a USB 2.0 high speed port.
Snapshot button maps as input device in /dev/input/eventX and /sys/class/input/inputXXXX; as far as I know, no applications directly support this. It is easier to click a mouse button or hit a key than to hit the snapshot button without causing camera shake. Some utilities such as the gizmo daemon exist to run specific programs or send X events to applications in response to a linux input event. You could probably also use this program to use a gamepad as a camera remote control with the advantage that you don't introduce shake.
Since LEDs are under manual control and not turned on by software after USB power negotiation and don't turn off in standby mode, this device technically is likely non-compliant with USB power specifications.
Like resolution, specified frame rates are often fiction.
Bright is full LED intensity flush against a piece of white paper with the snout on. Dark is with the LED off and the snout covered with a black shirt and hand. Framerates measued with guvcview. Setting the camera to manual exposure mode doesn't change the reduced framerates due to insufficient light. The camera should allow more than one framerate at each exposure setting. You may want to set a lower framerate to reduce USB bandwidth used (to allow sharing bus with other high bandwidth devices or with multiple cameras), to avoid exciting bugs, to provide an approprate framerate for mpeg encoding, to avoid collecting more data than you need, etc. A small egg candling light was shone directly into the lens to see if this would result in higher frame rates (if the frame rates were limited by the LED intensity); it did not.
Works. Driver: uvcvideo. Make sure you use a USB 2.0 port not a slower USB 1.1 port as operation will be very unreliable on slow port.
usb 2-2: new high speed USB device using ehci_hcd and address 13
usb 2-2: configuration #1 chosen from 1 choice
uvcvideo: Found UVC 1.00 device Digital Microscope (eb1a:1760)
input: Digital Microscope as /class/input/input1381
usb 2-2: New USB device found, idVendor=eb1a, idProduct=1760
usb 2-2: New USB device strings: Mfr=2, Product=1, SerialNumber=3
usb 2-2: Product: Digital Microscope
usb 2-2: Manufacturer: Infoxelle
usb 2-2: SerialNumber: VT1760
Bus 002 Device 013: ID eb1a:1760 eMPIA Technology, Inc.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 239 Miscellaneous Device
bDeviceSubClass 2 ?
bDeviceProtocol 1 Interface Association
bMaxPacketSize0 64
idVendor 0xeb1a eMPIA Technology, Inc.
idProduct 0x1760
bcdDevice 6.08
iManufacturer 2 Infoxelle
iProduct 1 Digital Microscope
iSerial 3 VT1760
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 589
bNumInterfaces 2
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 500mA
Interface Association:
bLength 8
bDescriptorType 11
bFirstInterface 0
bInterfaceCount 2
bFunctionClass 14 Video
bFunctionSubClass 3 Video Interface Collection
bFunctionProtocol 0
iFunction 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 14 Video
bInterfaceSubClass 1 Video Control
bInterfaceProtocol 0
iInterface 0
VideoControl Interface Descriptor:
bLength 13
bDescriptorType 36
bDescriptorSubtype 1 (HEADER)
bcdUVC 1.00
wTotalLength 78
dwClockFrequency 6.000000MHz
bInCollection 1
baInterfaceNr( 0) 1
VideoControl Interface Descriptor:
bLength 18
bDescriptorType 36
bDescriptorSubtype 2 (INPUT_TERMINAL)
bTerminalID 1
wTerminalType 0x0201 Camera Sensor
bAssocTerminal 0
iTerminal 0
wObjectiveFocalLengthMin 0
wObjectiveFocalLengthMax 0
wOcularFocalLength 0
bControlSize 3
bmControls 0x00000012
Auto-Exposure Mode
Exposure Time (Relative)
VideoControl Interface Descriptor:
bLength 12
bDescriptorType 36
bDescriptorSubtype 5 (PROCESSING_UNIT)
Warning: Descriptor too short
bUnitID 3
bSourceID 1
wMaxMultiplier 0
bControlSize 3
bmControls 0x0000147b
Brightness
Contrast
Saturation
Sharpness
Gamma
White Balance Temperature
Power Line Frequency
White Balance Temperature, Auto
iProcessing 0
bmVideoStandards 0x1a
NTSC - 525/60
SECAM - 625/50
NTSC - 625/50
VideoControl Interface Descriptor:
bLength 26
bDescriptorType 36
bDescriptorSubtype 6 (EXTENSION_UNIT)
bUnitID 4
guidExtensionCode {2652215a-8932-5641-894a-5c557cdf9664}
bNumControl 4
bNrPins 1
baSourceID( 0) 3
bControlSize 1
bmControls( 0) 0x1f
iExtension 0
VideoControl Interface Descriptor:
bLength 9
bDescriptorType 36
bDescriptorSubtype 3 (OUTPUT_TERMINAL)
bTerminalID 2
wTerminalType 0x0101 USB Streaming
bAssocTerminal 0
bSourceID 4
iTerminal 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 9
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 14 Video
bInterfaceSubClass 2 Video Streaming
bInterfaceProtocol 0
iInterface 0
VideoStreaming Interface Descriptor:
bLength 15
bDescriptorType 36
bDescriptorSubtype 1 (INPUT_HEADER)
bNumFormats 2
wTotalLength 457
bEndPointAddress 130
bmInfo 0
bTerminalLink 2
bStillCaptureMethod 2
bTriggerSupport 1
bTriggerUsage 0
bControlSize 1
bmaControls( 0) 27
bmaControls( 1) 27
VideoStreaming Interface Descriptor:
bLength 27
bDescriptorType 36
bDescriptorSubtype 4 (FORMAT_UNCOMPRESSED)
bFormatIndex 1
bNumFrameDescriptors 6
guidFormat {59555932-0000-1000-8000-00aa00389b71}
bBitsPerPixel 16
bDefaultFrameIndex 1
bAspectRatioX 0
bAspectRatioY 0
bmInterlaceFlags 0x00
Interlaced stream or variable: No
Fields per frame: 1 fields
Field 1 first: No
Field pattern: Field 1 only
bCopyProtect 0
VideoStreaming Interface Descriptor:
bLength 30
bDescriptorType 36
bDescriptorSubtype 5 (FRAME_UNCOMPRESSED)
bFrameIndex 1
bmCapabilities 0x00
Still image unsupported
wWidth 640
wHeight 480
dwMinBitRate 3389521920
dwMaxBitRate 3389521920
dwMaxVideoFrameBufferSize 2752512
dwDefaultFrameInterval 333333
bFrameIntervalType 1
dwFrameInterval( 0) 333333
VideoStreaming Interface Descriptor:
bLength 30
bDescriptorType 36
bDescriptorSubtype 5 (FRAME_UNCOMPRESSED)
bFrameIndex 2
bmCapabilities 0x00
Still image unsupported
wWidth 160
wHeight 120
dwMinBitRate 2348810400
dwMaxBitRate 2348810400
dwMaxVideoFrameBufferSize 2752512
dwDefaultFrameInterval 333333
bFrameIntervalType 1
dwFrameInterval( 0) 333333
VideoStreaming Interface Descriptor:
bLength 30
bDescriptorType 36
bDescriptorSubtype 5 (FRAME_UNCOMPRESSED)
bFrameIndex 3
bmCapabilities 0x00
Still image unsupported
wWidth 320
wHeight 240
dwMinBitRate 838992000
dwMaxBitRate 838992000
dwMaxVideoFrameBufferSize 2752512
dwDefaultFrameInterval 333333
bFrameIntervalType 1
dwFrameInterval( 0) 333333
VideoStreaming Interface Descriptor:
bLength 30
bDescriptorType 36
bDescriptorSubtype 5 (FRAME_UNCOMPRESSED)
bFrameIndex 4
bmCapabilities 0x00
Still image unsupported
wWidth 176
wHeight 144
dwMinBitRate 3103785120
dwMaxBitRate 3103785120
dwMaxVideoFrameBufferSize 2752512
dwDefaultFrameInterval 333333
bFrameIntervalType 1
dwFrameInterval( 0) 333333
VideoStreaming Interface Descriptor:
bLength 30
bDescriptorType 36
bDescriptorSubtype 5 (FRAME_UNCOMPRESSED)
bFrameIndex 5
bmCapabilities 0x00
Still image unsupported
wWidth 352
wHeight 288
dwMinBitRate 3858890880
dwMaxBitRate 3858890880
dwMaxVideoFrameBufferSize 2752512
dwDefaultFrameInterval 333333
bFrameIntervalType 1
dwFrameInterval( 0) 333333
VideoStreaming Interface Descriptor:
bLength 30
bDescriptorType 36
bDescriptorSubtype 5 (FRAME_UNCOMPRESSED)
bFrameIndex 6
bmCapabilities 0x00
Still image unsupported
wWidth 1280
wHeight 1024
dwMinBitRate 3222405120
dwMaxBitRate 3222405120
dwMaxVideoFrameBufferSize 2752512
dwDefaultFrameInterval 666666
bFrameIntervalType 1
dwFrameInterval( 0) 666666
VideoStreaming Interface Descriptor:
bLength 11
bDescriptorType 36
bDescriptorSubtype 3 (STILL_IMAGE_FRAME)
bEndpointAddress 0
bNumImageSizePatterns 1
wWidth( 0) 1280
wHeight( 0) 1024
bNumCompressionPatterns 1
bCompression( 0) 0
VideoStreaming Interface Descriptor:
bLength 27
bDescriptorType 36
bDescriptorSubtype 4 (FORMAT_UNCOMPRESSED)
bFormatIndex 2
bNumFrameDescriptors 6
guidFormat {55595659-0000-1000-8000-00aa00389b71}
bBitsPerPixel 16
bDefaultFrameIndex 1
bAspectRatioX 0
bAspectRatioY 0
bmInterlaceFlags 0x00
Interlaced stream or variable: No
Fields per frame: 1 fields
Field 1 first: No
Field pattern: Field 1 only
bCopyProtect 0
VideoStreaming Interface Descriptor:
bLength 30
bDescriptorType 36
bDescriptorSubtype 5 (FRAME_UNCOMPRESSED)
bFrameIndex 1
bmCapabilities 0x00
Still image unsupported
wWidth 640
wHeight 480
dwMinBitRate 3389521920
dwMaxBitRate 3389521920
dwMaxVideoFrameBufferSize 2752512
dwDefaultFrameInterval 333333
bFrameIntervalType 1
dwFrameInterval( 0) 333333
VideoStreaming Interface Descriptor:
bLength 30
bDescriptorType 36
bDescriptorSubtype 5 (FRAME_UNCOMPRESSED)
bFrameIndex 2
bmCapabilities 0x00
Still image unsupported
wWidth 160
wHeight 120
dwMinBitRate 2348810400
dwMaxBitRate 2348810400
dwMaxVideoFrameBufferSize 2752512
dwDefaultFrameInterval 333333
bFrameIntervalType 1
dwFrameInterval( 0) 333333
VideoStreaming Interface Descriptor:
bLength 30
bDescriptorType 36
bDescriptorSubtype 5 (FRAME_UNCOMPRESSED)
bFrameIndex 3
bmCapabilities 0x00
Still image unsupported
wWidth 320
wHeight 240
dwMinBitRate 838992000
dwMaxBitRate 838992000
dwMaxVideoFrameBufferSize 2752512
dwDefaultFrameInterval 333333
bFrameIntervalType 1
dwFrameInterval( 0) 333333
VideoStreaming Interface Descriptor:
bLength 30
bDescriptorType 36
bDescriptorSubtype 5 (FRAME_UNCOMPRESSED)
bFrameIndex 4
bmCapabilities 0x00
Still image unsupported
wWidth 176
wHeight 144
dwMinBitRate 3103785120
dwMaxBitRate 3103785120
dwMaxVideoFrameBufferSize 2752512
dwDefaultFrameInterval 333333
bFrameIntervalType 1
dwFrameInterval( 0) 333333
VideoStreaming Interface Descriptor:
bLength 30
bDescriptorType 36
bDescriptorSubtype 5 (FRAME_UNCOMPRESSED)
bFrameIndex 5
bmCapabilities 0x00
Still image unsupported
wWidth 352
wHeight 288
dwMinBitRate 3858890880
dwMaxBitRate 3858890880
dwMaxVideoFrameBufferSize 2752512
dwDefaultFrameInterval 333333
bFrameIntervalType 1
dwFrameInterval( 0) 333333
VideoStreaming Interface Descriptor:
bLength 30
bDescriptorType 36
bDescriptorSubtype 5 (FRAME_UNCOMPRESSED)
bFrameIndex 6
bmCapabilities 0x00
Still image unsupported
wWidth 1280
wHeight 1024
dwMinBitRate 3222405120
dwMaxBitRate 3222405120
dwMaxVideoFrameBufferSize 2752512
dwDefaultFrameInterval 666666
bFrameIntervalType 1
dwFrameInterval( 0) 666666
VideoStreaming Interface Descriptor:
bLength 11
bDescriptorType 36
bDescriptorSubtype 3 (STILL_IMAGE_FRAME)
bEndpointAddress 0
bNumImageSizePatterns 1
wWidth( 0) 1280
wHeight( 0) 1024
bNumCompressionPatterns 1
bCompression( 0) 0
VideoStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 13 (COLORFORMAT)
bColorPrimaries 0 (Unspecified)
bTransferCharacteristics 0 (Unspecified)
bMatrixCoefficients 0 (Unspecified)
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 1
Device Qualifier (for other device speed):
bLength 10
bDescriptorType 6
bcdUSB 2.00
bDeviceClass 239 Miscellaneous Device
bDeviceSubClass 2 ?
bDeviceProtocol 1 Interface Association
bMaxPacketSize0 64
bNumConfigurations 1
Device Status: 0x0000
(Bus Powered)
T: Bus=02 Lev=02 Prnt=03 Port=01 Cnt=02 Dev#= 48 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=ef(unk. ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=eb1a ProdID=1760 Rev= 6.08
S: Manufacturer=Infoxelle
S: Product=Digital Microscope
S: SerialNumber=VT1760
C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=500mA
A: FirstIf#= 0 IfCount= 2 Cls=0e(video) Sub=03 Prot=00
I:* If#= 0 Alt= 0 #EPs= 1 Cls=0e(video) Sub=01 Prot=00 Driver=uvcvideo
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=32ms
I:* If#= 1 Alt= 0 #EPs= 1 Cls=0e(video) Sub=02 Prot=00 Driver=uvcvideo
E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
Note that I had trouble with all applications other than a patched version of tvtime (with good error recovery). Turns out, the front ports on my computer, which I thought were USB 2.0 were actually slow USB 1.0 ports. Then I spotted a message in syslog " [1085204.080403] usb 1-2: not running at top speed; connect to a high speed hub " about port speed which had not appeared earlier and switched ports.
Note that the UVC driver seems to support the mmap() method but not the read() method.
tvtime doesn't work with this device, unless you use a version I previously patched to work with one of the first UVC compliant (but buggy) quickcams. I started with the 1 line linux-uvc tvtime-1.0.2-videoinput.patch and apparently made some other changes to support 1280x960. For some reason, typing "s" will not produce a screenshot; however, typing tvtime-command SCREENSHOT "junk.png" on the command line will cause the running instance to generate a screenshot. Further, the screenshot is 1280x1024 even though tvtime is using a 640x480 window (I am using a patched version, though).
Not running on my system right now due to libnss library problems. Tested on a ubunto install on another machine and it does work although you are limited to very low resolution since this is a videophone application.
Works fine. On slow USB port: Runs for a short while, then crashes: "Unable to dequeue buffer: Input/output error"
Works fine. Has a select boxes to flip the image vertically and horizontally which are handy. Particularly since if you mount the camera vertically on a boom stand, milling machine, drill press stand, etc in the logical orientation with the zoom/focus knob and snapshot button facing you, the image is upside down (rotated 180 degrees) compared to what you might expect; by mirroring both X and Y you effectively rotate the displayed image back (saved files may be a different story). It also has controls to negate the image (swap white/black) and to convert from color to monochrome.
On low speed USB port: Runs for a short while, then crashes. "Unable to dequeue buffer (5) fd is 4. Error grabbing image"
Cheese is a Photobooth like webcam application. Version 2.24.2 (outdated) tested on Ubuntu 8.10. It works for live preview and taking photos but hangs on video. . Allows setting resolution but not other camera parameters.
works at 640x480 and 320x240 but 1280x1024 results in a 640x480 window. Do not background it with "&" as mplayer will suspend if it doesn't have a tty.
mplayer tv:// -tv driver=v4l2:width=640:height=480:device=/dev/video0:input=0:noaudio:outfmt=yuy2:fps=30
not installed, not tested.
Works fine. On low speed usb port: Works briefly, then craps out
ffmpeg -f video4linux2 -s 640x480 -r 30 -i /dev/video1 -f mpegts /tmp/out.mpg
FFmpeg version UNKNOWN, Copyright (c) 2000-2007 Fabrice Bellard, et al.
configuration: --prefix=/usr --libdir=${prefix}/lib --shlibdir=${prefix}/lib --incdir=${prefix}/include/ffmpeg --enable-shared --enable-libmp3lame --enable-gpl --enable-libfaad --mandir=${prefix}/share/man --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-pp --enable-libamr-nb --enable-libamr-wb --enable-x11grab --enable-libgsm --enable-libx264 --enable-liba52 --enable-libtheora --extra-cflags=-Wall -g -fPIC -DPIC --cc=ccache cc --enable-swscaler --disable-mmx
libavutil version: 49.5.0
libavcodec version: 51.48.0
libavformat version: 52.1.0
built on Dec 7 2007 10:05:03, gcc: 4.2.3 20071123 (prerelease) (Debian 4.2.2-4)
[video4linux2 @ 0xb7f8f240][3]Capabilities: 4000001
Input #0, video4linux2, from '/dev/video1':
Duration: N/A, start: 1239460070.062531, bitrate: 147456 kb/s
Stream #0.0: Video: rawvideo, yuyv422, 640x480 [PAR 0:1 DAR 0:1], 147456 kb/s, 30.00 tb(r)
Output #0, mpegts, to '/tmp/out.mpg':
Stream #0.0: Video: mpeg2video, yuv420p, 640x480 [PAR 0:1 DAR 0:1], q=2-31, 200 kb/s, 30.00 tb(c)
Stream mapping:
Stream #0.0 -> #0.0
Press [q] to stop encoding
[video4linux2 @ 0xb7f8f240]ioctl(VIDIOC_DQBUF): Input/output errorkbits/s
frame= 26 fps= 15 q=11.4 Lsize= 236kB time=0.8 bitrate=2324.6kbits/s
video:184kB audio:0kB global headers:0kB muxing overhead 28.534044%
Works fine. Note that it doesn't like spaces between parameter switches and values. Low speed USB port: Seems to fail silently.
Works but at low resolution. Low speed USB port: displays one frame
Doesn't work. Works with older V4L webcam.
Not installed.
Not installed. Not condoned.
This is a scanner program. It fails but works with an older V4L (vs V4L2) webcam.
v4lctl -c /dev/video1 list
ioctl: VIDIOC_G_STD(std=0xb7fd9300bfae0388 [PAL_H,PAL_K,PAL_M,PAL_N,SECAM_D,SECAM_G,SECAM_H,SECAM_K1,?ATSC_8_VSB,ATSC_16_VSB,(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null)]): Invalid argument
attribute | type | current | default | comment
-----------+--------+---------+---------+-------------------------------------
norm | choice | (null) | (null) |
input | choice | Camera | Camera | Camera 1
bright | int | 128 | 128 | range is 0 => 255
contrast | int | 16 | 16 | range is 0 => 31
color | int | 16 | 16 | range is 0 => 31
White Bala | bool | off | on |
Gamma | int | 32 | 32 | range is 0 => 63
Power Line | choice | 60 Hz | 60 Hz | Disabled 50 Hz 60 Hz
White Bala | int | 0 | 128 | range is 0 => 255
Sharpness | int | 4 | 4 | range is 0 => 15
Works. Doesn't seem to be able to grab the raw bayer image, though.
This program is intended for SPCA chip based webcams. It segfaults.
Complained that there was no plugin; I might be missing some packags.
Doesn't work. Seems v4l1/tv tuner card oriented. v4l demuxer error: cannot get channel infos (goes away if you set channel # to -1) and v4l demuxer error: cannot open audio device (Device or resource busy) even though audio device was set to blank.
"vlc -v v4l2:///dev/video0" doesn't work, but I have an old version of VLC.
vlc --v4l2-chroma YUY2 --v4l2-fps 30 --v4l2-width=640 --v4l2-height=480 v4l2:/dev/video0
doesn't work. Complains about unknoown option or missing mandatory argument --v4l2-chroma. May be due to old version.
VLC support would be useful for streaming over network.
Installed ubuntu package from sourceforge on debian. The documentation is so dreadful it doesn't even tell you where to point your web browser.
mjpg_streamer -i "/usr/lib/input_uvc.so -y -r 640x480"
mjpg_streamer -i "/usr/lib/input_uvc.so -y -r 640x480" -o "/usr/lib/output_file.so -d /tmp/junk/"
The first runs without error but when you point a web browser at http://localhost:8080/ you get a file not found error. But you can go to http://localhost:8080/?action=snapshot" to get a single image. http://localhost:8080/?action=stream will continuously reload the same image. The second creates a bunch of images from the camera in /tmp/ (not in /tmp/junk/ where they belong).
Doesn't acquire camera images directly though it can call an external program that does or you can work with saved images. Allows measurements on images and allows you to create overlays on top of images.
Doesnt acquire images from camera. This program is meant for digitzing points on a scan of an XY plot. Has some uses for coordinate measurement as well, since you calibrate the scale and rotation of an image by selecting three points and then you can measure or record coordinates of other points in real world coordinates. Only works on flat projections.
VACUM (Video Analysis and Comparison Utilities) apparently can do some image quality measurement.
Use ImageMagick or NETPBM to convert image formats or do batch processing. The GIMP is an interactive, non-scientific, image processing program (similar to photoshop). You can use the gimp, for example, to magnify an image into fatpix to study individual pixels or crop images. See also GraphicsMagick.
These panorama mosaicing tools can be used to combine multiple images in a mosaic. Can also do some lens distortion calculations.
Waveblend allows combining multiple images at different focus setings, chosing the value for each pixel from the image that is best in focus at that location. Helps with depth of field issues.
Video editing software
Bar code reading software from an image. There are other packages for the popular 2D barcode formats.
exiftool -Comment+='ISO-12233 target image foo.png
exiftool -Comment+="Lightsource: Internal 8 white LED top illumination"
exiftool -LightSource='255' foo.jpg
exiftool -DateTimeOiginal="2009:04:13 09:21:00-05:00" foo.jpg
exiftool -copyright "Copyright 2009 by Mark Whitis" foo.jpg
# Most programs that process images lose the tag information in the original image.
# Use exiftool to restore that information.
convert foo.png foo.jpg
exiftool -TagsFromFile foo.png foo.jpg
"Magnification" refers to the enlargment of the image when viewed on a typical computer monitor. In many cases, the image is actually optically reduced as the small size of the image sensor means that a 1:1 image on the sensor would qualify as microscopy.
| Mag Setting | Focus Distance Bottom of snout | Focus Distance snout removed | Field of View Width | Field of View Height | Pixel Size 1280x1024 | Pixel Size 640x512 | Magnification Fullscreen on 19" Monitor (16" wide) | Magnification 1280x1024 window on 19" 1600x1200 monitor |
|---|---|---|---|---|---|---|---|---|
| inches | inches | inches | inches | mils | mils | X | X | |
| Minimum | Infinity | n/a | ||||||
| 3 | 0.96 | 0.77 | 0.75 | 1.5 | 16.67 | 13.33 | ||
| 10 | 1.3 | 2 | 0.58 | 0.46 | 0.45 | 0.91 | 27.59 | 22.07 |
| 25 | 0.8 | 1.5 | 0.45 | 0.36 | 0.35 | 0.7 | 35.56 | 28.44 |
| 50 | 0 | 0.7 | 0.26 | 0.21 | 0.2 | 0.41 | 61.54 | 49.23 |
| 100 | -0.25 | 0.45 | 0.15 | 0.12 | 0.12 | 0.23 | 106.67 | 85.33 |
| 200 | -0.08 | 0.62 | 0.09 | 0.07 | 0.07 | 0.13 | 188.24 | 150.59 |
| max | 0 | 0.7 | 0.06 | 0.05 | 0.05 | 0.09 | 266.67 | 213.33 |
I did not measure depth of field, which is important when looking at objects that are significantly three dimensional. This will change depending on magnifcation/working distance. You can get an idea looking at the PCB pictures. At high magnifications, the depth of field is very small. At low magnifications it is significantly higher. At minimum magnification or telephoto (focus near infinity) depth of field seems to go from the opposite side of my street to the house on the opposite side of the next street.
Camera resolutions are often fictional. A 1280x1024 (1.3MP) bayer resolution sensor, which offers performance similar to a 640x512 true tristimulas sensor is marketed as 1.3MP or even 5MP or 10MP.
Any discussion of resolution of consumer color cameras must take into account the bayer filter pattern. V4L2_PIX_FMT_SGBGR8 produces bayer RGB format output. To convert a 640x480 resolution black and white sensor to color, you can use 3 sensor chips with difficult precision alignment (as is done for 3 chip CCDs) or you can divide each pixel into 3 sensor one each for red, green, and blue to produce a true 640x480 camera. If you look at the closeup of my video monitor, you see one example of that (for a screen rather than a camera). What is normally done for cheap consumer gear, however, is to divide each pixel into a 2x2 subpixel array containing one red, one blue, and two green (green being the closest to luminance of the three). Then you claim it is a 1280x1024 sensor. And if you aim that sensor at a pure black and white image, such as a page of printed text, you can reconstruct 1280x1024 spacial resolution. The human eye has about half the chromanence (hue/saturation) resolution as luminance (intensity) so there is some merit to that. Analog and digital television and image compression exploit this knowledge of the reduced resolution. If you used seven sensors - 4 for luminance and 3 for chrominance, this would be pretty good for human images (assuming you don't do closeups) - the missing information would be thrown away in most applications, anyway. But in scientific, machine vision, or image processing applications, you don't truly have the color information for each pixel. And even for human applications, we don't quite have the same thing as true 1X luminance resolution and 0.5X chrominance resolution with the bayer pattern. The camera demosaics the image by interpolating the missing values for each color at each pixel location. We have a sensor that can produce a true 640x480 RGB image (0.3MP) , a "would you believe" 1280x1024 image (1.3MP), or an outright fraudulent 2560x2048 (5MP) or higher "interpretted resolution" image. If you take your white printed text and illuminate it with pure red or blue light instead of white light the spacial resolution will be quartered and with green light halved. The same effect will be had if you machine a piece of red plastic instead of white plastic in a machine vision application. The higher "resolution" is an accident of pure black and white images. Further, the processing needed to demosaic the images and reduce aliasing can reduce the resolution to even lower (by half) than the number of sensor elements would imply. Some improvement in resolution in machine vision applications can be had by processing many pixels and by taking into effect the anti-aliasing effect of brightness; taking the centroid of a fiducial mark, for example, produces subpixel resolution.
4x4 Bayer Sensor (16 sensor elements)
BGBG B.B. .G.G ....
GRGR .... G.G. .R.R
BGBG B.B. .G.G ....
GRGR .... G.G. .R.R
4x4 True tristimuls (RGB) sensor (48 sensor elemenst)
3333 BBBB GGGG RRRR
3333 BBBB GGGG RRRR
3333 BBBB GGGG RRRR
3333 BBBB GGGG RRRR
4x4 Human perception justified resolution reduction: 16 luminunce, 4 blue, 4green, 4red, 28 total
LBLGLBLG
L.LRL.LR
LBLGLBLG
L.LRL.LR
This illustrates supixel resolution of the position of a 4x4 object on an 8x8 section of the image sensor. In this example, we ignore color. While we can measure the position of an object with subpixel resolution, we still can't resolve closely spaced objects. We can measure the position to 1/9th of a pixel in this example but we can't resolve two objects spaced by 1/9th of a pixel or really see an object a half pixel wide. By computing the position across all 4 columns instead of just 1, we reduce the considerable effect of noise on the result. Thus, the position of objects considerably larger than one pixel can be measured to considerably less than one pixel accuracy.
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00111100 00222200 00333300 00444400 00555500 00666600 00777700 00888800 00999900
00999900 00999900 00999900 00999900 00999900 00999900 00999900 00999900 00999900 00999900
00999900 00999900 00999900 00999900 00999900 00999900 00999900 00999900 00999900 00999900
00999900 00999900 00999900 00999900 00999900 00999900 00999900 00999900 00999900 00999900
00999900 00888800 00777700 00666600 00555500 00444400 00333300 00222200 00111100 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
An LCD monitor advertising 1280x1024 would have 3 emitters (or equvalent for CRT), one each for Red, Green, and Blue, at each pixel. Likewise, a flatbed scanner advertising 1200x600DPI would sense each color at each location (unless advertising an inflated interpolated resolution). But camera manufacturers get away with advertising the total number of sensor elements as if the bayer filter wasn't present; worse, some go even further advertise entirely fictional interpolated resolutions. The rare camera sensors that measure all three primary colors are advertised as having 3 times as many pixels as the image resolution to avoid being at a disadvantage when compared to bayer sensors.
It should be noted that the camera has a "sharpness" control that was in its default position of "4" (unless otherwise noted) while taking the sample images.
A high resolution sensor would be of limited value if the lens focus is too poor to take advantage of it.
The ultimate usable resolution is affect by many factors, many of which are measured in terms of modulation transfer function:
Some of these can be image processed out to an extent. Poor focus can be fixed to an extent with deconvolution with mathematically does the inverse of the spreading of the lens. But information about closely spaced features can still be lost. But if you have a low resolution sensor, no amount of image processing will fix that although in some cases you may be able to combine multiple similar images with a slight displacement between them.
The microscope has one adjustment knob which sets zoom (magnification); focus is accomplished by moving the microscope relative to the object. At a fixed spacing, you can use the zoom setting to focus but you are also changing magnification; but you will likely use this when the snout is flush against the object. Focus does not change in a consistent manner across all zoom settings as you would expect from a single lens assembly moving so there may be two lenses which move in a complex pattern based on two separate cam groves inside the focus wheel. This would explain why you can get either 60X or 230X at the same distance (snout flush). At the low magnification end of travel, the focus adjusts slightly beyond infinity so you have to back off slightly; the control is very touchy so it is hard to adjust. At the high magnification end, there is some stickyness as the lens assembly apparently starts to bind with the LED assembly. There are evenly spaced marks along the rotation of the control; however, magnification settings are not linear so you can't interpolate the zoom settings with the marks as you would, for example, with the minor divisions on a ruler. The 10X, 15X, and 25X labels are close together - but if they were in their correct locations the text would overlap. It can be hard to get back to an exact magnification (there are no detents at standard magnifications) so if you need to measure you need to recalibrate (spacing to object could also have an impact). Contrast this with the Intel Play QX3 / QX5 microscopes that have three fixed magnifications (but limited working distance).
The 8 LEDs provide adequate illumination at close distances. The illumination isn't uniform, but isn't too bad. You can get glare. On/off and brightness control are via manual controls and are not controlled by the computer. This is handy for use with software that doesn't support these controls. It is easy to accidently turn the microscope off when you only intended to turn the LEDs off. Software control would be more flexible, especially if it was sophisticated. It would be nice to be able to turn each LED on or off (or dim them) individually to change the angle of illumination to deal with things that are more visible under certain angles and to eliminate glare. LEDs could also be tricolor LEDs which you could change the illumination color with. There could also be a mix of diffuse and more direct LEDs. Unlike the QX3/QX5, there is no connector for external LEDs on a removable base (for back illumination).
There are a significant number of hot pixels that have a high dark current or noise. These can be seen in an example picture. These cause grainyness at low light levels. These are also of some use in determining sensor resolution since they bypass the optics. These are blured out with a one pixel radius by the demosaicing algorithm. If we had a lower resolution sensor that was being interpolated in hardware, we would see the blurring spread out even further.
Pictures shown reduced to 640x480 for web browser. Note that magnifications may be lower than stated due to your monitor size and the fact that they are displayed half size on the web page. Click to enlarge/open image. On firefox, click on the image again to magnify to full size.
![[Closeup view of monitor]](monitor.jpg)
![[Monitor, with text]]](monitor2.jpg)

![[image of barcode]](barcode.jpg)
![[grid from 3 inch working distance]](grid_3inch_working_distance.jpg)
![[grid at maximum magnification]](grid_max_mag.jpg)
![[Picture of Cockatiel cage]](cockatiel2.jpg)
![[ISO12233 test chart]](ISO12233-1.png)
![[PCB closeup]](PCB1.jpg)
![[Simulated soldering of PCB]](PCB2.jpg)
![[IC number on ES9552 IC]](IC_number.jpg)
![[View through window]](street_view.jpg)
![[Damaged parrotlet beak]](parrotlet_beak.jpg)
![[skin and facial hair]](skin_hair.jpg)
![[blade of grass 60X]](grass_60X.jpg)
![[blade of grass 230X]](grass_230X.jpg)
![[twenty dollar bill 60X]](twenty_60X.jpg)

![[millet spray]](millet.jpg)
![[M27256 EPROM 60X]](M27256-60X.jpg)
![[M27256 EPROM 230X]](M27256-230X.jpg)
Checking color calibration requires a color target. You can do a comparison to monitor colors by displaying color patches and aiming the microscope (out of focus, LEDs turned off) at the color patch and compare the colors. This depends on your monitor calibration, however. Argyll software is used to handle color calibration. You need a colorimeter or spectrophotometer device to check the monitor colors. Since color on my LCD monitor seems to be fairly good, I used the "dispwin" program from the argyll package to sequence through some color patches. Color matching on the camera was pretty bad. Poor saturation. Setting the saturation control to full (31) helped. Yellow was still a trainwreck. Lack of manual exposure didn't help, either. It responded to dark greys by pumping up the exposure times. Color calibration targets can be ordered from Wolfgang Faust.
Here are color patches: White, Black, Red, Green, Blue, Cyan, Magenta, Yellow. Camera color saturation was set to maximum. Other settings at default values. Color temperature setting didn't seem to make a difference. The patches were created using the argyll dispwin utility. The color patch was displayed in the middle of the camera window. The camera was pointed at the patch in the center with the focus set to infinite (out of focus) to minimize any striping due to the RGB emitter pattern on the monitor (Samsung SyncMaster 204T). The monitor was set to "normal" color temperature. Screenshots were taken with ksnapshot. Monitor gamma was set to Mode 2; this page suggests mode 1 would be better. The color of the inner square and outer rectangle should roughly match. Black and white were affected by auto exposure.
Now the test was repeated with Magic Brite set to Movie mode for maximum brightness and the color set to "Cool" (highest color temperature, closest to daylight).
I tried to "calibrate" my monitor per the instructions linked above and then use argyll per same instructions to generate a color calibration profile but argyll crashed (bug report filed). That target, after adjusting for perspective and cropping, looks like this:
I took a picture of Wolfgang Faust's jpg image of one of his IT8.7 targets as displayed on his web page with the monitor calibrated per the color calibration web page above, displayed 2x magnified using imagemagic display command. Compare it to the original on his website. Of course, it depends on monitor calibration, etc. Colors look better here than above, but saturation is still an issue. But it shows that part of the problem above is likely the camera's auto white balance and autoexposure, which can't be disabled. You can see it in the photos of a blade of grass, too; looks like every image needs to have a little white in it or the camera will try to make its own white.
Camera R,G,B Target R,G,B
Cyan: 63,255,255 (75% saturation) 12,254,255 (95% saturation)
Magenta: 255,88,229 (65% saturation) 255, 4, 255 (98% saturation)
Yellow: 255,238,145 (43% saturation) 254,255,13 (95% saturation)
Red: 255,60,44 (83% saturation) 253,5,19 (98% saturation)
Green: 76, 240, 125 (68% saturation) 9,255,10 (96% saturation)
Blue: 43, 82, 248 (83% saturation) 9,255,8 (97% saturation)
Black: 82,36,46 (32% saturation) 13,6,14 (57% saturation)
White: 239,234,228 (5% saturation) 254,254,255 (0% saturation)
Yet another problem with autoexposure and white balance that can't be manually controlled or locked would be seen if you tried to take panaroma or other mosaic images. When stitching the images together, the exposure changes are visable. Mosaic images are a real possibility with a microscope as they can be used to image a larger area, such as a printed circuit board, at high magnification.
A note on calibration targets: For colorimetric calibration, you need to illuminate the target with a calibrated light source ($9000+). More practical, however, is to image the target under the same light you use to take the pictures. In this case, it would be desirable to have a tiny target that can be put under the microscope and illuminated with the LEDs. Non-uniformity in the LED illumination, however, could have an impact on the results. The argyll style targets, with a very large number of randomly distributed small patches might be better for averaging out led illumination. Brightness calibration with a sheet of white paper might also help. Masking off room light from entering the snout would also help elliminate effects of ambiant light.
The clear plastic snout is glued in. With significant man-handling, you can break the glue so it can be removed. Once you have done so, you can reinsert the snout and it will stay in place. Removing the snout gives additional working distance. Also, at zooms somewhere between 60X and 220X, the focus is actual inside the snout so these zooms are not generally useful without removing the snout.
The zoom lens assembly occupies two separate adjacent white sections. These are thouroghly glued and cannot be easily split apart.
The last compartment provides access to the electronics and is made up of two pieces that split where the power switch and dimmer knob are located. There is a screw recessed inside a hole that can be removed with a jewelers screwdriver that holds the two halves together. This two piece assembly is lightly glued into the zoom assembly. You can break these loose with some man-handling. Once the glue is broken, this section will press fit into the other section and stay together through most handling but might come apart during rough handling which would stress the wires connecting the two sections.
When trying to break glue, bear in mind that where the snout and the electronics section connect to the zoom assembly, there is an alignment key that does not permit significant rotation. On mine, the snout was glued on the side near the zoom ring. The electronic section is also glued only on one side, specifically the side with the snapshot button. Use a pulling and rocking back and forth motion to break glue.
There are two printed circuit boards. One holds the image sensor. The other terminates the USB cable and has the on/off/led switch and dimmer and the snapshot switch and power LED and apparently the 3.3V regulator. The USB D+ and D- signals are passed through to the image sensor board. Signals that pass between the two boards are D+, D-, GND, 3.3V logic supply, 5V (variable for LEDs?), and snapshot. Note that it is not clear which of the two cables goes on which of the two identical connectors; mark them or refer to the pictures. If you get it wrong, you will probably damage the camera. The LED illuminator connects to the image sensor board via two loose wires with lugs which screw down to the board using the two screws that retain the board (labeled ground and +5V) these two wires are not marked regarding polarity so if you install the image sensor board rotated 180 degrees not only will you get an upside down image but the LEDs won't work.
The 1/4" camera screw mount is on a seprate piece of plastic which slides into a little groove on the side of the camera and can be swapped for a totally useless shirt pocket clip. This is a bad design and will break.
The tripod is a small cheap tripod with telescoping legs. It is a poor substitute for a stand with a focussing rack though you can press down and the camera legs will splay to lower the camera and squeeze the legs together to raise the camera. You can also arange the legs assymetrically with one of the legs vertical and use the telescoping portion of that leg as your adjustment (you may need to elevate the work). Or mount two of the legs vertically (drill a couple holes in a block of wood. and hold in place and use the third leg as a handle to raise and lower.
I used a craftsman drill press stand (the sort used with a hand held power drill) as a temporary stand and focusing slide, using cable ties to hold it. Since it has its own chuck built in, I turned the headstock assembly upside down. Some other options to consider for holding or mounting the microscope include a vacuum base minivise, V-blocks, dial indicator stands (machinsts), CNC milling machine (X,Y,Z stage), chemist's ring stands, and photographer's copy stands. You may want to consider throat depth on any stand option you consider. This $62 camera X/Y slide rail assembly with rack and pinion slides has some serious potential as a Z stage if you mount the base to a vertical surface and another one would provide an X/Y stage. Similarly, an old XY machinists vice mounted on a vertical surface could be useful as a focusing mount. Optics translation stages could be used. There is a boom stand made for the dino-lite. Boom stands for larger microscopes could be used. The Z axis for a sherline mill can be purchased separately. Camera macro slides could be used. A standard tripot can be reassembled with the telscoping portion aimed downward, though it will probably flop around a lot when trying to fine focus. A $16 digital caliper could be modified, and provide a nice readout; the thumb knob could provide for find focus. The slide friction on a Skilltech plastic dial caliper is enough to support the weight of the microscope head (tested by attaching microscope with a cable tie) and the plastic can easily be cut for modification. The head slide from a floppy disc drive or cdrom can be canibalized. A panapress could be adapted. Some of these options have other uses as well. Most cost more than the microscope. U-bolts could be used to securely mount the camera; with a block of wood and a threaded insert, you could replace the camera screw adapter when it breaks. Little machine shop $63 #1956 Taig milling attachment or $70 #3092 dial height gage are possible candidates for stages. nstead of moving the microscope, you can move the object up and down with a lab jack. But the cheapest option may be to gut a suitable toy microscope.
Lens quality seems to be fairly good. For example, the rectangular border on the ISO12233 target is actually imaged as a rectangle with a few pixels. Some cameras have a noticable fisheye effect that rounds the shape a little.
While one cannot expect to get the same frame rates possible with USB high speed, cameras should degrade gracefully on USB full speed (USB 1.1). This is not the case, here. Also, this suggests there may be bandwidth problems if using multiple cameras or using other high bandwidth devices on the same bus. This camera also appears to only support uncompressed video (no MJPEG compression) which means higher bandwidth and the computer will have to do the compression when saving to disk or streaming over the net. Firewire is likely more reliable for multiple cameras and one user reports streaming 3 VGA firewire cameras simultaneously on firewire
If we assume YUYV encoding results in 16 bits per pixel, then 1280x1024 is 20971520 bits per frame (plus overhead) and 15fps would be 314 megabits per second. 640x480 would be 4915200 bits per frame and 73.7Mbps at 15fps and 147.5Mbps at 30fps.
Applications for multiple simultaneous camera use include: 3D reconstruction, filmaking, Machining (headstock camera plus side camera for remote monitoring, or 3D reconstruction), laser position measurement, using a microscope and webcam at same time, stereo microscope imaging, etc.
On a "full speed" USB 1.1 port only: Every two or three seconds the message "uvcvideo: Non-zero status (-71) in video completion handler." (or -75) appears in syslog. Every ten seconds or so, at random, the video is totally corrupted suggesting that raster data is being read out of sync. The image shows evidince of loss of horizontal and vertical alignment and the colors are frequently off (typically green) suggesting YUV byte misalignment.
uvcvideo: uvc_v4l2_ioctl
Apr 11 14:32:43 cervantes kernel: [1007663.842401] VIDIOC_ENUM_FMT<7>uvcvideo: uvc_v4l2_ioctl
Apr 11 14:32:43 cervantes kernel: [1007663.842482] VIDIOC_ENUM_FMT<7>uvcvideo: uvc_v4l2_ioctl
Apr 11 14:32:43 cervantes kernel: [1007663.842576] VIDIOC_ENUM_FMT<7>uvcvideo: uvc_v4l2_ioctl
Apr 11 14:32:43 cervantes kernel: [1007663.850969] VIDIOC_S_FMT<7>uvcvideo: Trying format 0x56595559 (YUYV): 640x480.
Apr 11 14:32:43 cervantes kernel: [1007663.856915] VIDIOC_S_PARM<7>uvcvideo: Setting frame interval to 1/30 (333333).
Apr 11 14:32:44 cervantes kernel: [1007664.169754] VIDIOC_G_PARM<7>uvcvideo: uvc_v4l2_ioctl
Apr 11 14:32:44 cervantes kernel: [1007664.169850] VIDIOC_REQBUFS<7>uvcvideo: uvc_v4l2_ioctl
Apr 11 14:32:44 cervantes kernel: [1007664.170046] VIDIOC_QUERYBUF<7>uvcvideo: uvc_v4l2_mmap
Apr 11 14:32:44 cervantes kernel: [1007664.170103] VIDIOC_QUERYBUF<7>uvcvideo: uvc_v4l2_mmap
Apr 11 14:32:44 cervantes kernel: [1007664.170142] VIDIOC_QUERYBUF<7>uvcvideo: uvc_v4l2_mmap
Apr 11 14:32:44 cervantes kernel: [1007664.170182] VIDIOC_QUERYBUF<7>uvcvideo: uvc_v4l2_mmap
Apr 11 14:32:44 cervantes kernel: [1007664.170224] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 0.
Apr 11 14:32:44 cervantes kernel: [1007664.170230] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 1.
Apr 11 14:32:44 cervantes kernel: [1007664.170235] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 2.
Apr 11 14:32:44 cervantes kernel: [1007664.170240] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 3.
Apr 11 14:32:44 cervantes kernel: [1007664.338137] VIDIOC_STREAMON<7>uvcvideo: uvc_v4l2_ioctl
Apr 11 14:32:44 cervantes kernel: [1007664.338389] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:44 cervantes kernel: [1007664.537451] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 0.
Apr 11 14:32:44 cervantes kernel: [1007664.558475] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:44 cervantes kernel: [1007664.577095] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 1.
Apr 11 14:32:44 cervantes kernel: [1007664.589280] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:44 cervantes kernel: [1007664.617056] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 2.
Apr 11 14:32:44 cervantes kernel: [1007664.629413] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:44 cervantes kernel: [1007664.657225] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 3.
Apr 11 14:32:44 cervantes kernel: [1007664.669517] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:44 cervantes kernel: [1007664.697066] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 0.
Apr 11 14:32:44 cervantes kernel: [1007664.727266] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:44 cervantes kernel: [1007664.737056] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 1.
Apr 11 14:32:44 cervantes kernel: [1007664.836575] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 2 (3, 614400 bytes).
Apr 11 14:32:44 cervantes kernel: [1007664.837174] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 2.
Apr 11 14:32:44 cervantes kernel: [1007664.858645] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 3 (3, 614400 bytes).
Apr 11 14:32:44 cervantes kernel: [1007664.859301] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 3.
Apr 11 14:32:44 cervantes kernel: [1007664.933781] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 0 (3, 614400 bytes).
Apr 11 14:32:44 cervantes kernel: [1007664.934405] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 0.
Apr 11 14:32:44 cervantes kernel: [1007665.013382] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 1 (3, 614400 bytes).
Apr 11 14:32:44 cervantes kernel: [1007665.013958] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 1.
Apr 11 14:32:44 cervantes kernel: [1007665.095762] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 2 (3, 614400 bytes).
Apr 11 14:32:44 cervantes kernel: [1007665.096323] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 2.
Apr 11 14:32:45 cervantes kernel: [1007665.172479] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 3 (3, 614400 bytes).
Apr 11 14:32:45 cervantes kernel: [1007665.173080] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 3.
Apr 11 14:32:45 cervantes kernel: [1007665.238251] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 0 (3, 614400 bytes).
Apr 11 14:32:45 cervantes kernel: [1007665.238806] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 0.
Apr 11 14:32:45 cervantes kernel: [1007665.278695] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 1 (3, 614400 bytes).
Apr 11 14:32:45 cervantes kernel: [1007665.279282] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 1.
Apr 11 14:32:45 cervantes kernel: [1007665.304958] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 2 (3, 614400 bytes).
Apr 11 14:32:45 cervantes kernel: [1007665.305502] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 2.
Apr 11 14:32:45 cervantes kernel: [1007665.322588] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 3 (3, 614400 bytes).
Apr 11 14:32:45 cervantes kernel: [1007665.323422] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 3.
Apr 11 14:32:45 cervantes kernel: [1007665.400331] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 0 (3, 614400 bytes).
Apr 11 14:32:45 cervantes kernel: [1007665.400896] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 0.
Apr 11 14:32:45 cervantes kernel: [1007665.481674] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 1 (3, 614400 bytes).
Apr 11 14:32:45 cervantes kernel: [1007665.482576] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 1.
Apr 11 14:32:45 cervantes kernel: [1007665.550309] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 2 (3, 614400 bytes).
Apr 11 14:32:45 cervantes kernel: [1007665.550882] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 2.
Apr 11 14:32:45 cervantes kernel: [1007665.626826] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 3 (3, 614400 bytes).
Apr 11 14:32:45 cervantes kernel: [1007665.627596] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 3.
Apr 11 14:32:45 cervantes kernel: [1007665.651988] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 0 (3, 614400 bytes).
Apr 11 14:32:45 cervantes kernel: [1007665.652955] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 0.
Apr 11 14:32:45 cervantes kernel: [1007665.676344] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 1 (3, 614400 bytes).
Apr 11 14:32:45 cervantes kernel: [1007665.676957] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 1.
Apr 11 14:32:45 cervantes kernel: [1007665.755325] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 2 (3, 614400 bytes).
Apr 11 14:32:45 cervantes kernel: [1007665.755872] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 2.
Apr 11 14:32:45 cervantes kernel: [1007665.828749] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 3 (3, 614400 bytes).
Apr 11 14:32:45 cervantes kernel: [1007665.829305] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 3.
Apr 11 14:32:45 cervantes kernel: [1007665.905576] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 0 (3, 614400 bytes).
Apr 11 14:32:45 cervantes kernel: [1007665.906148] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 0.
Apr 11 14:32:45 cervantes kernel: [1007665.978545] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 1 (3, 614400 bytes).
Apr 11 14:32:45 cervantes kernel: [1007665.979407] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 1.
Apr 11 14:32:45 cervantes kernel: [1007666.060061] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 2 (3, 614400 bytes).
Apr 11 14:32:45 cervantes kernel: [1007666.060599] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 2.
Apr 11 14:32:45 cervantes kernel: [1007666.076447] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 3 (3, 614400 bytes).
Apr 11 14:32:45 cervantes kernel: [1007666.077062] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 3.
Apr 11 14:32:45 cervantes kernel: [1007666.102871] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 0 (3, 614400 bytes).
Apr 11 14:32:45 cervantes kernel: [1007666.103503] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 0.
Apr 11 14:32:45 cervantes kernel: [1007666.133004] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 1 (3, 614400 bytes).
Apr 11 14:32:45 cervantes kernel: [1007666.133602] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 1.
Apr 11 14:32:46 cervantes kernel: [1007666.200365] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 2 (3, 614400 bytes).
Apr 11 14:32:46 cervantes kernel: [1007666.200922] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 2.
Apr 11 14:32:46 cervantes kernel: [1007666.276107] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 3 (3, 614400 bytes).
Apr 11 14:32:46 cervantes kernel: [1007666.276674] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 3.
Apr 11 14:32:46 cervantes kernel: [1007666.314718] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 0 (3, 614400 bytes).
Apr 11 14:32:46 cervantes kernel: [1007666.315314] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 0.
Apr 11 14:32:46 cervantes kernel: [1007666.371693] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 1 (3, 614400 bytes).
Apr 11 14:32:46 cervantes kernel: [1007666.372334] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 1.
Apr 11 14:32:46 cervantes kernel: [1007666.446451] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 2 (3, 614400 bytes).
Apr 11 14:32:46 cervantes kernel: [1007666.447000] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 2.
Apr 11 14:32:46 cervantes kernel: [1007666.470476] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 3 (3, 614400 bytes).
Apr 11 14:32:46 cervantes kernel: [1007666.471071] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 3.
Apr 11 14:32:46 cervantes kernel: [1007666.495005] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 0 (3, 614400 bytes).
Apr 11 14:32:46 cervantes kernel: [1007666.495586] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 0.
Apr 11 14:32:46 cervantes kernel: [1007666.517382] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 1 (3, 614400 bytes).
Apr 11 14:32:46 cervantes kernel: [1007666.518082] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 1.
Apr 11 14:32:46 cervantes kernel: [1007666.539831] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:46 cervantes kernel: [1007666.576871] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 2.
Apr 11 14:32:46 cervantes kernel: [1007666.592956] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:46 cervantes kernel: [1007666.616875] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 3.
Apr 11 14:32:46 cervantes kernel: [1007666.643494] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:46 cervantes kernel: [1007666.656981] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 0.
Apr 11 14:32:46 cervantes kernel: [1007666.674808] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:46 cervantes kernel: [1007666.696861] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 1.
Apr 11 14:32:46 cervantes kernel: [1007666.718655] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:46 cervantes kernel: [1007666.736850] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 2.
Apr 11 14:32:46 cervantes kernel: [1007666.760574] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:46 cervantes kernel: [1007666.776846] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 3.
Apr 11 14:32:46 cervantes kernel: [1007666.790507] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:46 cervantes kernel: [1007666.816937] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 0.
Apr 11 14:32:46 cervantes kernel: [1007666.839187] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:46 cervantes kernel: [1007666.856864] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 1.
Apr 11 14:32:46 cervantes kernel: [1007666.882447] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:46 cervantes kernel: [1007666.896861] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 2.
Apr 11 14:32:46 cervantes kernel: [1007666.909567] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:46 cervantes kernel: [1007666.936873] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 3.
Apr 11 14:32:46 cervantes kernel: [1007666.956917] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:46 cervantes kernel: [1007666.976984] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 0.
Apr 11 14:32:46 cervantes kernel: [1007666.999209] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:46 cervantes kernel: [1007667.016840] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 1.
Apr 11 14:32:46 cervantes kernel: [1007667.029425] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:46 cervantes kernel: [1007667.056823] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 2.
Apr 11 14:32:46 cervantes kernel: [1007667.077451] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:46 cervantes kernel: [1007667.096858] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 3.
Apr 11 14:32:46 cervantes kernel: [1007667.123857] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:46 cervantes kernel: [1007667.136834] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 0.
Apr 11 14:32:47 cervantes kernel: [1007667.150769] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:47 cervantes kernel: [1007667.177472] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 1.
Apr 11 14:32:47 cervantes kernel: [1007667.196029] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:47 cervantes kernel: [1007667.216999] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 2.
Apr 11 14:32:47 cervantes kernel: [1007667.230505] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:47 cervantes kernel: [1007667.256833] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 3.
Apr 11 14:32:47 cervantes kernel: [1007667.269761] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:47 cervantes kernel: [1007667.296830] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 0.
Apr 11 14:32:47 cervantes kernel: [1007667.323243] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:47 cervantes kernel: [1007667.336844] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 1.
Apr 11 14:32:47 cervantes kernel: [1007667.361554] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:47 cervantes kernel: [1007667.377833] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 2.
Apr 11 14:32:47 cervantes kernel: [1007667.390113] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:47 cervantes kernel: [1007667.416848] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 3.
Apr 11 14:32:47 cervantes kernel: [1007667.437111] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:47 cervantes kernel: [1007667.456826] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 0.
Apr 11 14:32:47 cervantes kernel: [1007667.484071] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:47 cervantes kernel: [1007667.496828] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 1.
Apr 11 14:32:47 cervantes kernel: [1007667.511441] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:47 cervantes kernel: [1007667.536895] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 2.
Apr 11 14:32:47 cervantes kernel: [1007667.562519] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:47 cervantes kernel: [1007667.576837] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 3.
Apr 11 14:32:47 cervantes kernel: [1007667.607523] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:47 cervantes kernel: [1007667.616801] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 0.
Apr 11 14:32:47 cervantes kernel: [1007667.629275] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:47 cervantes kernel: [1007667.656986] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 1.
Apr 11 14:32:47 cervantes kernel: [1007667.680789] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:47 cervantes kernel: [1007667.696863] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 2.
Apr 11 14:32:47 cervantes kernel: [1007667.725254] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:47 cervantes kernel: [1007667.736825] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 3.
Apr 11 14:32:47 cervantes kernel: [1007667.756726] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:47 cervantes kernel: [1007667.776823] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 0.
Apr 11 14:32:47 cervantes kernel: [1007667.807358] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:47 cervantes kernel: [1007667.816807] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 1.
Apr 11 14:32:47 cervantes kernel: [1007667.830217] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:47 cervantes kernel: [1007667.856819] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 2.
Apr 11 14:32:47 cervantes kernel: [1007667.875909] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:47 cervantes kernel: [1007667.896825] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 3.
Apr 11 14:32:47 cervantes kernel: [1007667.909250] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:47 cervantes kernel: [1007667.937665] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 0.
Apr 11 14:32:47 cervantes kernel: [1007667.956121] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:47 cervantes kernel: [1007667.976805] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 1.
Apr 11 14:32:47 cervantes kernel: [1007667.989848] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:47 cervantes kernel: [1007668.016801] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 2.
Apr 11 14:32:47 cervantes kernel: [1007668.030995] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:47 cervantes kernel: [1007668.056823] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 3.
Apr 11 14:32:47 cervantes kernel: [1007668.084056] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:47 cervantes kernel: [1007668.096791] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 0.
Apr 11 14:32:47 cervantes kernel: [1007668.109090] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:47 cervantes kernel: [1007668.136970] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 1.
Apr 11 14:32:48 cervantes kernel: [1007668.152103] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:48 cervantes kernel: [1007668.176791] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 2.
Apr 11 14:32:48 cervantes kernel: [1007668.205063] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:48 cervantes kernel: [1007668.216805] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 3.
Apr 11 14:32:48 cervantes kernel: [1007668.229916] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:48 cervantes kernel: [1007668.256797] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 0.
Apr 11 14:32:48 cervantes kernel: [1007668.279461] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:48 cervantes kernel: [1007668.296807] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 1.
Apr 11 14:32:48 cervantes kernel: [1007668.309053] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:48 cervantes kernel: [1007668.336789] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 2.
Apr 11 14:32:48 cervantes kernel: [1007668.352748] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:48 cervantes kernel: [1007668.376867] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 3.
Apr 11 14:32:48 cervantes kernel: [1007668.398428] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:48 cervantes kernel: [1007668.416820] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 0.
Apr 11 14:32:48 cervantes kernel: [1007668.430013] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:48 cervantes kernel: [1007668.456796] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 1.
Apr 11 14:32:48 cervantes kernel: [1007668.484209] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:48 cervantes kernel: [1007668.496787] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 2.
Apr 11 14:32:48 cervantes kernel: [1007668.527801] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:48 cervantes kernel: [1007668.536784] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 3.
Apr 11 14:32:48 cervantes kernel: [1007668.549017] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:48 cervantes kernel: [1007668.576784] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 0.
Apr 11 14:32:48 cervantes kernel: [1007668.603460] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:48 cervantes kernel: [1007668.616782] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 1.
Apr 11 14:32:48 cervantes kernel: [1007668.629318] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:48 cervantes kernel: [1007668.656886] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 2.
Apr 11 14:32:48 cervantes kernel: [1007668.674588] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:48 cervantes kernel: [1007668.696813] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 3.
Apr 11 14:32:48 cervantes kernel: [1007668.709091] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:48 cervantes kernel: [1007668.736773] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 0.
Apr 11 14:32:48 cervantes kernel: [1007668.756313] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:48 cervantes kernel: [1007668.776767] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 1.
Apr 11 14:32:48 cervantes kernel: [1007668.804297] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:48 cervantes kernel: [1007668.817097] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 2.
Apr 11 14:32:48 cervantes kernel: [1007668.839386] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:48 cervantes kernel: [1007668.856779] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 3.
Apr 11 14:32:48 cervantes kernel: [1007668.880085] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:48 cervantes kernel: [1007668.896770] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 0.
Apr 11 14:32:48 cervantes kernel: [1007668.924676] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:48 cervantes kernel: [1007668.936767] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 1.
Apr 11 14:32:48 cervantes kernel: [1007668.948963] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:48 cervantes kernel: [1007668.976763] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 2.
Apr 11 14:32:48 cervantes kernel: [1007669.004067] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:48 cervantes kernel: [1007669.016778] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 3.
Apr 11 14:32:48 cervantes kernel: [1007669.041644] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:48 cervantes kernel: [1007669.056747] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 0.
Apr 11 14:32:48 cervantes kernel: [1007669.071122] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:48 cervantes kernel: [1007669.096762] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 1.
Apr 11 14:32:49 cervantes kernel: [1007669.267414] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 2 (3, 614400 bytes).
Apr 11 14:32:49 cervantes kernel: [1007669.267952] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 2.
Apr 11 14:32:49 cervantes kernel: [1007669.286186] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 3 (3, 614400 bytes).
Apr 11 14:32:49 cervantes kernel: [1007669.286757] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 3.
Apr 11 14:32:49 cervantes kernel: [1007669.306194] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 0 (3, 614400 bytes).
Apr 11 14:32:49 cervantes kernel: [1007669.306818] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 0.
Apr 11 14:32:49 cervantes kernel: [1007669.323946] VIDIOC_DQBUF<7>uvcvideo: Dequeuing buffer 1 (3, 614400 bytes).
Apr 11 14:32:49 cervantes kernel: [1007669.324528] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 1.
Apr 11 14:32:49 cervantes kernel: [1007669.343577] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:49 cervantes kernel: [1007669.376738] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 2.
Apr 11 14:32:49 cervantes kernel: [1007669.390496] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:49 cervantes kernel: [1007669.416755] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 3.
Apr 11 14:32:49 cervantes kernel: [1007669.448260] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:49 cervantes kernel: [1007669.457825] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 0.
Apr 11 14:32:49 cervantes kernel: [1007669.489984] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:49 cervantes kernel: [1007669.496761] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 1.
Apr 11 14:32:49 cervantes kernel: [1007669.509380] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:49 cervantes kernel: [1007669.536761] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 2.
Apr 11 14:32:49 cervantes kernel: [1007669.565530] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:49 cervantes kernel: [1007669.576754] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 3.
Apr 11 14:32:49 cervantes kernel: [1007669.589075] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:49 cervantes kernel: [1007669.616754] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 0.
Apr 11 14:32:49 cervantes kernel: [1007669.635725] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:49 cervantes kernel: [1007669.657012] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 1.
Apr 11 14:32:49 cervantes kernel: [1007669.684422] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:49 cervantes kernel: [1007669.696732] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 2.
Apr 11 14:32:49 cervantes kernel: [1007669.712695] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:49 cervantes kernel: [1007669.736765] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 3.
Apr 11 14:32:49 cervantes kernel: [1007669.761195] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:49 cervantes kernel: [1007669.776648] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 0.
Apr 11 14:32:49 cervantes kernel: [1007669.801053] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:49 cervantes kernel: [1007669.816843] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 1.
Apr 11 14:32:49 cervantes kernel: [1007669.834561] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:49 cervantes kernel: [1007669.856599] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 2.
Apr 11 14:32:49 cervantes kernel: [1007669.882600] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:49 cervantes kernel: [1007669.896731] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 3.
Apr 11 14:32:49 cervantes kernel: [1007669.919214] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:49 cervantes kernel: [1007669.936619] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 0.
Apr 11 14:32:49 cervantes kernel: [1007669.950271] VIDIOC_DQBUF<7>uvcvideo: Frame complete (EOF found).
Apr 11 14:32:49 cervantes kernel: [1007669.976626] VIDIOC_QBUF<7>uvcvideo: Queuing buffer 1.
Apr 11 14:32:49 cervantes kernel: [1007669.990258] VIDIOC_DQBUF<4>uvcvideo: Non-zero status (-75) in video completion handler.
Apr 11 14:32:49 cervantes kernel: [1007670.040798] VIDIOC_STREAMOFF<7>uvcvideo: uvc_v4l2_release
]]>
usbmon output for a similar (but not the same) run, can be found in usbmon.log
Camera took 23 days to arrive from Hong Kong; I suspect two weeks of that was a delay in shipping which seller tried to pass off as due to a "long holiday" in their country.
Listing for infoxelle.com domain (empty website):
Name : cai hailin
Organization : Infoxelle Co. Ltd.
Address : hongkong
City : hongkong
Province/State : hongkong
Country : cn
Postal Code : 518028
Phone Number : 86-0755-83745619
Fax : 86-0755-83755307
Email : postmaster@infoxelle.com
They are listed in a compliance certificate as "Infoxelle Co., Ltd., RM. 20C Caixiage Caihongxindou, Gangxia village
Many webcams use a small standard (for webcams) M12x0.5 thread .In some cases, you can unscrew the lens from outside; in others, you must disassemble the webcam. There are adapters which fit into these threads and fit into standard microscope eyepiece tubes (likewise for telescope eyepieces with different size adapters) in place of the eyepiece; at least, someone used to sell these on ebay. Thus it is possible to turn many webcams into eyepiece cameras. Note that the thread is often on a small plastic piece mounted to the printed circuit board and these are structurally weak compared to ones where they lens thread is part of the case. DealExtreme also has an assortment of lenses that fit standard webcam threads. CCTV vendors also may have lenses as the small TV cameras use the same thread. Mogg sells a variety of adapters that allow the use of standard film camera lenses with webcams. There are some other sizesin use.
There are a number of microsoft eyepiece cameras.
In general a webcam or digital camera can look through an eyepiece in place of a human eye. This frequently results in a round image within the larger rectangular frame.. Holding or mounting the camera
Since the microscope will focus to infinity, there is nothing preventing you from pointing it at the sky. Magnification would be low, like a binocular or spotting scope. There is no exposure control, no long integrations (except for software digital integration), and the chip is not cooled.
This microscope can be used to view skin; indeed, that is one of the purposes it is marketed for.
This will take an image of the iris of the eye but not the retina.
The remainder of this section not suited for immature/squemish adults.
This is camera is not well suited to internal anatomy photos (oral, rectal, vaginal, nasal, ear). It is not optically isolated, though you could use a laptop on battery power. It has a fairly large diameter. It has multiple segments which could come apart inside. The part where the 1/4" tripod attachment goes protrudes. There are a variety of personal healthcare applications for devices which can inspect inside orifices.
You can view a limited amount inside the mouth, ear, nose, etc.
There are versions of another USB microscope with an otoscope (ear/nose) speculum snout. DealExtreme sells a dental camera that looks like an electric toothbrush. On ebay, you will find some USB endoscope cameras. An unexpanded soda bottle could be used as a fully enclosed speculum for use with such a device, protecting against fluids, electrical shock, and attachments becoming VFOs (Vaginal Foreign Object) or RFOs (Rectal Foreign Object).
A seperate page describes How to find USB VID/PID on various operating systems. Information about USB standard device classes is also found there.
.For a considerably more expensive and more professional handheld product with interchangable lenses, check out the Proscope family. The ProScope HR (1280x1024) is a UVC device that is reported to work with the uvcvideo driver. Used on the CSI TV series and spinoffs. Made in USA. C-mount lens adapter. Up to 400X depending on lens. But you are looking at over $200 for the microscope itself and potentially over $1000 with lots of accessories.
The veho VMS-001 USB:0c45:62e0 is a Sonix chip based UVC device that works with Linux; it claims 200X magnification and is very similar in physical design to the microscope described here though there are some stylistic differences. This is a very familiar looking style of microscope if you have looked on ebay. Bear in mind that other microscopes that are similar or identical in appearance may not have the same sensor resolution or controller chip. Some other usb microscopes are reported to use the Sonix SN9C255 chip which is not UVC compliant and may work with the sn9x driver.
These fit into one of the standard size eyepiece tubes used on student/professional microscopes. Find one that is UVC/linux compatible. When used with a trinocular microscope, you can look through the normal pair of eyepieces while taking pictures/video through the trinocular port. Eyepiece tube adapters are available for some standard digital cameras, many of which are linux compatible, as well, which may offer higher resolution.
Object-space telecentric lenses are quite expensive but good for machine vision/inspection/CNC uses as the size of the image is independed ot the distance. Use with a C-mount camera.
Some webcams sold on ebay which mention USB video class compliance are:
Ebay, Dynex 1.3MP Webcam (DX-WEB1C) , 1280x1024 Works, $15, built in mic, 1 axis (vertical) swivel, LCD monitor mount, no tripod mount?
MACALLY ICECAM2, 640x480, ???
Ebay, Creative Live! Cam Optia, works
Ebay, Creative Live! Cam Optia Pro, works
Ebay,Creative Live! CAM Video IM Pro, works
Ebay, Creative Live! Cam Notebook Ultra, works
Ebay,"USB 5M WEBCAM Camera + Mic + 6 Infrared LED PC/Mac UVC", 1280x1024, ???
Ebay, JVC GR-D290u MiniDV DigitalVideo Camcorder,
Ebay, Logitech QuickCam Ultra Vision HD/MP, 1.3MP sensor, 960x720 "HD" video, ???, $50
Ebay, SPC1300NC, 1.3MP , claims 90fps and <5lux
"works" means that the camera is listed as working on linux-uvc page.
With import cameras, be aware that different cameras may have the same case and electronics but different resolution sensors installed or even different electronics in the same case.
While this digital microscope doesn't have separable lens and imager, I did have occasion to lament the lack of an open standard for lens control. I would suggest something along these lines:
For patent prior art purposes, this section was written and published on 2009-04-14.
Although this tangent addresses the general issue of lens control and camera interfacing, it has direct relevence to future microscopes. The image sensor and zoom lens portions of this device could be seperable and such an interface would allow power and control for the USB illumination, future digital control over the zoom/focus functions, and control of seperate backlights and other illumination options for biologic use, etc. A seperable lens could also be replaced with a microscope lens tube adapter for use with existing microscopes.