Oasis UMO19 MCU003 USB microscope
The Oasis UMO19 MCU003 USB microscope is a cheap (ca. 50 Euros from various eBay vendors), portable, USB-based digital microscope. It can be focused on a 20x or 400x magnification. The device basically is a "webcam" when attached to USB and you can use it for live viewing of the magnified area, and also create screen captures (still photos), see below for a few sample images.
Note: See also my blogpost Using the Oasis UMO19 MCU003 400x USB microscope on Linux via luvcview for additional info.
Contents |
Specification
This is what the box says:
- Image sensor: 1.3 Megapixels (interpolated to 2M)
- Still capture resolution: 1600x1200, 1280x960, 800x600, 352x288, 320x240, 160x120
- Video capture resolution: 1600x1200, 1280x960, 800x600, 352x288, 320x240, 160x120
- Color: 24 bit RGB
- Flicker frequency: 50Hz / 60Hz
- Frame rate: max. 30 frames per second under 600 Lux brightness
- Magnification ratio: 20x to 400x
- Shutter speed: 1 sec. to 1/1000 sec.
- Video format: AVI
- Photo format: JPEG or BMP
- White balance: auto
- Exposure: auto
- Light source: 8 LEDs (switchable by software)
- PC interface: USB 2.0
- Power source: 5V DC from USB port
- OS: Windows 2000/XP/Vista, Mac OS X 10.5 or above
- OSD language: English, German, Spanish, Korean, French, Russian
- Bundled software: MicroCapture
- Size: 125mm (L) x 33mm (R)
Usage on Linux
The device works out of the box on Linux using the uvcvideo kernel module and any application that can work with UVC / V4L2 devices, e.g. luvcview, guvcview, cheese, or uvccapture.
$ lsusb Bus 001 Device 013: ID 0ac8:3610 Z-Star Microelectronics Corp.
$ luvcview luvcview 0.2.6 SDL information: Video driver: x11 A window manager is available Device information: Device path: /dev/video1 Stream settings: Frame format: YUYV (MJPG is not supported by device) Frame size: 640x480 Frame rate: 30 fps
$ guvcview
guvcview 1.3.1
video device: /dev/video0
/dev/video0 - device 1
Init. Vimicro USB2.0 UVC PC Camera (location: usb-0000:00:13.2-3)
{ pixelformat = 'YUYV', description = 'YUV 4:2:2 (YUYV)' }
{ discrete: width = 640, height = 480 }
Time interval between frame: 1/30, 1/15, 2/15,
{ discrete: width = 352, height = 288 }
[...]
{ discrete: width = 160, height = 120 }
Time interval between frame: 1/30, 1/15, 2/15,
vid:0ac8
pid:3610
driver:uvcvideo
checking format: 1448695129
fps is set to 1/30
V4L2_CTRL_FLAG_NEXT_CTRL supported
fps is set to 1/30
[...]
$ cheese (works fine too)
$ uvccapture -v -m Using videodevice: /dev/video0 Saving images to: snap.jpg Image size: 320x240 Taking snapshot every 0 seconds Taking images using mmap Resetting camera settings ioctl querycontrol error 22 Camera brightness level is 0 Camera contrast level is 18 Camera saturation level is 8 ioctl querycontrol error 22 Camera gain level is -1 Saving image to: snap.jpg
Photos
Fabrics
Various pieces of clothes, jeans, curtains, carpets, jackets, etc.
LEDs
PCB
Chips
Paper
Screens, displays
Misc
Details
lsusb
$ lsusb -vvv
Bus 001 Device 097: ID 0ac8:3610 Z-Star Microelectronics Corp.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 239 Miscellaneous Device
bDeviceSubClass 2 ?
bDeviceProtocol 1 Interface Association
bMaxPacketSize0 64
idVendor 0x0ac8 Z-Star Microelectronics Corp.
idProduct 0x3610
bcdDevice 1.00
iManufacturer 1 Vimicro Co.,ltd
iProduct 2 Vimicro USB2.0 UVC PC Camera
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 501
bNumInterfaces 2
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 320mA
Interface Association:
bLength 8
bDescriptorType 11
bFirstInterface 0
bInterfaceCount 2
bFunctionClass 14 Video
bFunctionSubClass 3 Video Interface Collection
bFunctionProtocol 0
iFunction 2 Vimicro USB2.0 UVC PC Camera
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 14 Video
bInterfaceSubClass 1 Video Control
bInterfaceProtocol 0
iInterface 2 Vimicro USB2.0 UVC PC Camera
VideoControl Interface Descriptor:
bLength 13
bDescriptorType 36
bDescriptorSubtype 1 (HEADER)
bcdUVC 1.00
wTotalLength 79
dwClockFrequency 30.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 0x00040a0e
Auto-Exposure Mode
Auto-Exposure Priority
Exposure Time (Absolute)
Zoom (Absolute)
PanTilt (Absolute)
Privacy
VideoControl Interface Descriptor:
bLength 11
bDescriptorType 36
bDescriptorSubtype 5 (PROCESSING_UNIT)
Warning: Descriptor too short
bUnitID 2
bSourceID 1
wMaxMultiplier 0
bControlSize 2
bmControls 0x0000547f
Brightness
Contrast
Hue
Saturation
Sharpness
Gamma
White Balance Temperature
Power Line Frequency
White Balance Temperature, Auto
Digital Multiplier
iProcessing 0
bmVideoStandards 0x 9
None
SECAM - 625/50
VideoControl Interface Descriptor:
bLength 9
bDescriptorType 36
bDescriptorSubtype 3 (OUTPUT_TERMINAL)
bTerminalID 3
wTerminalType 0x0101 USB Streaming
bAssocTerminal 0
bSourceID 2
iTerminal 0
VideoControl Interface Descriptor:
bLength 28
bDescriptorType 36
bDescriptorSubtype 6 (EXTENSION_UNIT)
bUnitID 4
guidExtensionCode {5dc717a9-1941-da11-ae0e-000d56ac7b4c}
bNumControl 9
bNrPins 1
baSourceID( 0) 1
bControlSize 3
bmControls( 0) 0xf9
bmControls( 1) 0x81
bmControls( 2) 0x80
iExtension 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x000a 1x 10 bytes
bInterval 5
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 14 Video
bInterfaceSubClass 2 Video Streaming
bInterfaceProtocol 0
iInterface 0
VideoStreaming Interface Descriptor:
bLength 14
bDescriptorType 36
bDescriptorSubtype 1 (INPUT_HEADER)
bNumFormats 1
wTotalLength 263
bEndPointAddress 130
bmInfo 0
bTerminalLink 3
bStillCaptureMethod 2
bTriggerSupport 1
bTriggerUsage 1
bControlSize 1
bmaControls( 0) 27
VideoStreaming Interface Descriptor:
bLength 27
bDescriptorType 36
bDescriptorSubtype 4 (FORMAT_UNCOMPRESSED)
bFormatIndex 1
bNumFrameDescriptors 5
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 38
bDescriptorType 36
bDescriptorSubtype 5 (FRAME_UNCOMPRESSED)
bFrameIndex 1
bmCapabilities 0x00
Still image unsupported
wWidth 640
wHeight 480
dwMinBitRate 36864000
dwMaxBitRate 147456000
dwMaxVideoFrameBufferSize 614400
dwDefaultFrameInterval 333333
bFrameIntervalType 3
dwFrameInterval( 0) 333333
dwFrameInterval( 1) 666667
dwFrameInterval( 2) 1333333
VideoStreaming Interface Descriptor:
bLength 38
bDescriptorType 36
bDescriptorSubtype 5 (FRAME_UNCOMPRESSED)
bFrameIndex 2
bmCapabilities 0x00
Still image unsupported
wWidth 352
wHeight 288
dwMinBitRate 12126720
dwMaxBitRate 48660480
dwMaxVideoFrameBufferSize 202752
dwDefaultFrameInterval 333333
bFrameIntervalType 3
dwFrameInterval( 0) 333333
dwFrameInterval( 1) 666667
dwFrameInterval( 2) 1333333
VideoStreaming Interface Descriptor:
bLength 38
bDescriptorType 36
bDescriptorSubtype 5 (FRAME_UNCOMPRESSED)
bFrameIndex 3
bmCapabilities 0x00
Still image unsupported
wWidth 320
wHeight 240
dwMinBitRate 9216000
dwMaxBitRate 36864000
dwMaxVideoFrameBufferSize 153600
dwDefaultFrameInterval 333333
bFrameIntervalType 3
dwFrameInterval( 0) 333333
dwFrameInterval( 1) 666667
dwFrameInterval( 2) 1333333
VideoStreaming Interface Descriptor:
bLength 38
bDescriptorType 36
bDescriptorSubtype 5 (FRAME_UNCOMPRESSED)
bFrameIndex 4
bmCapabilities 0x00
Still image unsupported
wWidth 176
wHeight 144
dwMinBitRate 3041280
dwMaxBitRate 12165120
dwMaxVideoFrameBufferSize 50688
dwDefaultFrameInterval 333333
bFrameIntervalType 3
dwFrameInterval( 0) 333333
dwFrameInterval( 1) 666667
dwFrameInterval( 2) 1333333
VideoStreaming Interface Descriptor:
bLength 38
bDescriptorType 36
bDescriptorSubtype 5 (FRAME_UNCOMPRESSED)
bFrameIndex 5
bmCapabilities 0x00
Still image unsupported
wWidth 160
wHeight 120
dwMinBitRate 2304000
dwMaxBitRate 9216000
dwMaxVideoFrameBufferSize 38400
dwDefaultFrameInterval 333333
bFrameIntervalType 3
dwFrameInterval( 0) 333333
dwFrameInterval( 1) 666667
dwFrameInterval( 2) 1333333
VideoStreaming Interface Descriptor:
bLength 26
bDescriptorType 36
bDescriptorSubtype 3 (STILL_IMAGE_FRAME)
bEndpointAddress 0
bNumImageSizePatterns 5
wWidth( 0) 640
wHeight( 0) 480
wWidth( 1) 352
wHeight( 1) 288
wWidth( 2) 320
wHeight( 2) 240
wWidth( 3) 176
wHeight( 3) 144
wWidth( 4) 160
wHeight( 4) 120
bNumCompressionPatterns 5
VideoStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 13 (COLORFORMAT)
bColorPrimaries 0 (Unspecified)
bTransferCharacteristics 0 (Unspecified)
bMatrixCoefficients 0 (Unspecified)
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 1
bNumEndpoints 1
bInterfaceClass 14 Video
bInterfaceSubClass 2 Video Streaming
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x0080 1x 128 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 2
bNumEndpoints 1
bInterfaceClass 14 Video
bInterfaceSubClass 2 Video Streaming
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 3
bNumEndpoints 1
bInterfaceClass 14 Video
bInterfaceSubClass 2 Video Streaming
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x0400 1x 1024 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 4
bNumEndpoints 1
bInterfaceClass 14 Video
bInterfaceSubClass 2 Video Streaming
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x0b00 2x 768 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 5
bNumEndpoints 1
bInterfaceClass 14 Video
bInterfaceSubClass 2 Video Streaming
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x0c00 2x 1024 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 6
bNumEndpoints 1
bInterfaceClass 14 Video
bInterfaceSubClass 2 Video Streaming
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x1380 3x 896 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 7
bNumEndpoints 1
bInterfaceClass 14 Video
bInterfaceSubClass 2 Video Streaming
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x1400 3x 1024 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)
luvcview info
$ luvcview -l luvcview 0.2.6 SDL information: Video driver: x11 A window manager is available Device information: Device path: /dev/video0 Stream settings: Frame format: YUYV (MJPG is not supported by device) Frame size: 640x480 Frame rate: 30 fps Available controls of device 'Camera 1' (Type 1=Integer 2=Boolean 3=Menu 4=Button) V4L2_CID_BASE (predefined controls): index:9963776 name:Brightness type:1 min:-16 max:16 step:1 def:0 now:0 index:9963777 name:Contrast type:1 min:1 max:32 step:1 def:18 now:18 index:9963778 name:Saturation type:1 min:0 max:30 step:1 def:8 now:8 index:9963779 name:Hue type:1 min:-45 max:45 step:1 def:0 now:0 index:9963788 name:White Balance Temperature, Auto type:2 min:0 max:1 step:1 def:1 now:1 index:9963792 name:Gamma type:1 min:100 max:190 step:10 def:150 now:142 index:9963800 name:Power Line Frequency type:3 min:0 max:2 step:1 def:1 now:1 Menu items: index:0 name:Disabled index:1 name:50 Hz index:2 name:60 Hz index:9963802 name:White Balance Temperature type:1 min:2800 max:8350 step:1 def:4650 now:4650 index:9963803 name:Sharpness type:1 min:0 max:15 step:1 def:3 now:3 V4L2_CID_PRIVATE_BASE (driver specific controls):
$ luvcview -L
luvcview 0.2.6
SDL information:
Video driver: x11
A window manager is available
Device information:
Device path: /dev/video0
{ pixelformat = 'YUYV', description = 'YUV 4:2:2 (YUYV)' }
{ discrete: width = 640, height = 480 }
Time interval between frame: 1/30, 1/15, 2/15,
{ discrete: width = 352, height = 288 }
Time interval between frame: 1/30, 1/15, 2/15,
{ discrete: width = 320, height = 240 }
Time interval between frame: 1/30, 1/15, 2/15,
{ discrete: width = 176, height = 144 }
Time interval between frame: 1/30, 1/15, 2/15,
{ discrete: width = 160, height = 120 }
Time interval between frame: 1/30, 1/15, 2/15,
{ pixelformat = 'RGB3', description = 'RGB3' }
{ discrete: width = 640, height = 480 }
Time interval between frame: 1/30, 1/15, 2/15,
{ discrete: width = 352, height = 288 }
Time interval between frame: 1/30, 1/15, 2/15,
{ discrete: width = 320, height = 240 }
Time interval between frame: 1/30, 1/15, 2/15,
{ discrete: width = 176, height = 144 }
Time interval between frame: 1/30, 1/15, 2/15,
{ discrete: width = 160, height = 120 }
Time interval between frame: 1/30, 1/15, 2/15,
{ pixelformat = 'BGR3', description = 'BGR3' }
{ discrete: width = 640, height = 480 }
Time interval between frame: 1/30, 1/15, 2/15,
{ discrete: width = 352, height = 288 }
Time interval between frame: 1/30, 1/15, 2/15,
{ discrete: width = 320, height = 240 }
Time interval between frame: 1/30, 1/15, 2/15,
{ discrete: width = 176, height = 144 }
Time interval between frame: 1/30, 1/15, 2/15,
{ discrete: width = 160, height = 120 }
Time interval between frame: 1/30, 1/15, 2/15,
{ pixelformat = 'YU12', description = 'YU12' }
{ discrete: width = 640, height = 480 }
Time interval between frame: 1/30, 1/15, 2/15,
{ discrete: width = 352, height = 288 }
Time interval between frame: 1/30, 1/15, 2/15,
{ discrete: width = 320, height = 240 }
Time interval between frame: 1/30, 1/15, 2/15,
{ discrete: width = 176, height = 144 }
Time interval between frame: 1/30, 1/15, 2/15,
{ discrete: width = 160, height = 120 }
Time interval between frame: 1/30, 1/15, 2/15,
{ pixelformat = 'YV12', description = 'YV12' }
{ discrete: width = 640, height = 480 }
Time interval between frame: 1/30, 1/15, 2/15,
{ discrete: width = 352, height = 288 }
Time interval between frame: 1/30, 1/15, 2/15,
{ discrete: width = 320, height = 240 }
Time interval between frame: 1/30, 1/15, 2/15,
{ discrete: width = 176, height = 144 }
Time interval between frame: 1/30, 1/15, 2/15,
{ discrete: width = 160, height = 120 }
Time interval between frame: 1/30, 1/15, 2/15,