The cheapest available USB microscope on eBay was purchased, to test its properties on linux, namely on a Raspberry Pi computer.
See also tool_3dPrinterMicroscope, attachment for the 3d printer, where photographs from this device are shown.
The camera enumerated without significant problems after connecting to USB, as a standard UVC camera, with /dev/video0 device created. The LED ring for sample illumination lit up immediately and stayed lit; probably fed directly from power. A keyboard connected to the neighbouring port reenumerated; probably due to a voltage dip.
The maximum image size is 640x480 pixels. Rather low, but good enough for basic work. There is no onboard compression, only raw YUV output. This limits achievable framerate on low-power boards, as the compression for streaming has to be done in CPU.
This could be sidestepped if the compression could be performed on the GPU. The Broadcom chip on the Raspberry Pi can support GPU video compression, via OMX.broadcom.image_encode, but this is used usually by the raspicam camera, not by USB ones.
The total length without the transparent plastic cover is 94mm, or 114mm with the cover. The outer diameter is 33.0mm, it narrows towards the top to about 25mm and towards the bottom where the "business end" is to 29.7mm. The inner diameter there is 26.4mm, wall thickness about 1.6mm.
Microscope itself | Microscope itself | Microscope itself |
There is a groove at about the middle, with outer diameter of 33.0mm, inner diameter 28.4mm, and width 4.0mm (the plastic holder's matching ring is 3.1mm high).
The light is provided with a ring of eight white LEDs. The outer diameter of the ring is about 25mm, inner diameter is 14.7mm, and the diameter of the circle intersecting the centers of the LEDs is 18mm.
LED lights ring, lens retracted | LED lights ring, lens extended | LED lights ring, lens extended | LED lights ring, lens extended |
LED lights ring, lens retracted | LED lights ring, lens retracted |
The lens is moving in and out by the focus/magnification ring, sliding by a simple mechanism. The lens holder is a brass part with standard M12x0.5 thread, the objective is a compact metal module with lenses inside, small but apparently glass. The sensor, fairly small, is located on a fixed-mount circuitboard at the back side of the assembly.
Lens thread | Lens itself | Lens itself | Lens itself |
The microscope comes with a transparent plastic cover, apparently to facilitate constant distance by pressing it against the sample.
microscope with lid | lid | lid | lid |
The assembly itself is apparently glued together, and made from two sections separated with a thin metal ring. This ring possibly serves to hold the parts together and hold the circuitboard and lens carriage.
The device has somewhat crappy plastic stand, which can be excused due to its low low price.
stand | microscope on stand | microscope on stand | microscope and cable |
The casing was cracked open, using large pliers or a vise, carefully compressing the assembly just below the metal ring. The casing consists of two segments of plastic tube, with a metal spacer ring in between, joined together with weakly glued pads. This exposes the circuitboard, with the camera chip (U2, a 28-pin SMD), a 24C64 serial EEPROM (U6, 8 kilobytes, probably with some calibrations and USB parameters), and the camera sensor itself (U4, probably a BGA CMOS sensor with the sensing array as the rainbowy rectangle and some preprocessing electronics as the dark part along its edges).
Casing cracked open | Casing cracked open | Circuitboard bottom | Circuitboard bottom |
Circuitboard bottom | Circuitboard top | Circuitboard top | Circuitboard top |
The LED light is attached to the circuitboard using a pair of thin brass standoff tubes, using a pair of screws. The standoffs also function as power wiring and vertical slides that prevent the lens holder rotation and maintain its position in axis with the sensor. It is powered via a separate connector on the board.
Lens holder in tube, with guides | LED light with guides | LED light | LED light |
LED light | LED light, threads on guides |
The bottom tube contains the zoom assembly. This consists of three parts - the zoom tube, the lens holder, and the lens itself. The zoom tube has a spiral groove on its inner side, to which pads on the lens holder are mated. The LED standoff tubes are also led through the lens holder, holding it against axial rotation while allowing its axial movement, and aligning it with the sensor. This translates to longitudal movement of the lens holder when the zoom tube is rotated. All the mutually moving surfaces are richly covered with grease, probably silicone.
The lens holder is a plastic part with the pads for the zoom tube grooves, holes for the LED standoffs/guides, and a brass inset with a M12x0.5 thread for the lens itself. The lens is a fairly high quality all-glass optical assembly in a metal tube.
The device comes with a calibration card, with several patterns.
calibration card | calibration card | calibration card | calibration card |
calibration card | calibration card | calibration card |
The mjpg-streamer can be used for streaming the image. On Raspberry Pi v1 and v2 the performance is rather low, due to unaccelerated CPU-based compression. GPU-accelerated compression would be desired.
./mjpg_streamer --input "./input_uvc.so" --output "./output_http.so -w ./www"
Note: after a while, the little kernel errors filled the disk, via the overgrowth of /var/log/uvcdynctrl-udev.log. This can be erased, and the owner process killed by killall uvcdynctrl.
ioctl: VIDIOC_ENUM_FMT Index : 0 Type : Video Capture Pixel Format: 'YUYV' Name : YUV 4:2:2 (YUYV)
ioctl: VIDIOC_ENUM_FMT Index : 0 Type : Video Capture Pixel Format: 'YUYV' Name : YUV 4:2:2 (YUYV) Size: Discrete 640x480 Interval: Discrete 0.040s (25.000 fps) Size: Discrete 160x120 Interval: Discrete 0.040s (25.000 fps) Size: Discrete 176x144 Interval: Discrete 0.040s (25.000 fps) Size: Discrete 320x240 Interval: Discrete 0.040s (25.000 fps) Size: Discrete 352x288 Interval: Discrete 0.040s (25.000 fps) Size: Discrete 640x480 Interval: Discrete 0.040s (25.000 fps)
[313092.994085] usb 1-1.3: new high-speed USB device number 13 using dwc_otg [313093.129771] usb 1-1.3: New USB device found, idVendor=1871, idProduct=7670 [313093.137258] usb 1-1.3: New USB device strings: Mfr=2, Product=3, SerialNumber=0 [313093.146635] usb 1-1.3: Product: USB2.0 UVC PC Camera [313093.151867] usb 1-1.3: Manufacturer: GenesysLogic Technology Co., Ltd. [313093.267339] media: Linux media interface: v0.10 [313093.304924] Linux video capture interface: v2.00 [313093.357670] uvcvideo: Found UVC 1.00 device USB2.0 UVC PC Camera (1871:7670) [313093.412672] input: USB2.0 UVC PC Camera as /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3:1.0/input/input8 [313093.428480] usbcore: registered new interface driver uvcvideo [313093.434797] USB Video Class driver (1.1.1) [313093.704665] uvcvideo: Failed to query (GET_DEF) UVC control 11 on unit 3: -32 (exp. 1). [313093.715035] uvcvideo: Failed to query (GET_DEF) UVC control 11 on unit 3: -32 (exp. 1). [313093.724883] uvcvideo: Failed to query (GET_DEF) UVC control 11 on unit 3: -32 (exp. 1). [313093.734933] uvcvideo: Failed to query (GET_DEF) UVC control 11 on unit 3: -32 (exp. 1). [313093.768585] uvcvideo: Failed to query (GET_DEF) UVC control 11 on unit 3: -32 (exp. 1). [313093.803320] uvcvideo: Failed to query (GET_DEF) UVC control 11 on unit 3: -32 (exp. 1). [313093.837311] uvcvideo: Failed to query (GET_DEF) UVC control 11 on unit 3: -32 (exp. 1). [313093.871420] uvcvideo: Failed to query (GET_DEF) UVC control 11 on unit 3: -32 (exp. 1). [313093.904754] uvcvideo: Failed to query (GET_DEF) UVC control 11 on unit 3: -32 (exp. 1). [313093.937536] uvcvideo: Failed to query (GET_DEF) UVC control 11 on unit 3: -32 (exp. 1). [313093.970898] uvcvideo: Failed to query (GET_DEF) UVC control 11 on unit 3: -32 (exp. 1). [313094.002695] uvcvideo: Failed to query (GET_DEF) UVC control 11 on unit 3: -32 (exp. 1). [313094.035853] uvcvideo: Failed to query (GET_DEF) UVC control 11 on unit 3: -32 (exp. 1). [313094.067355] uvcvideo: Failed to query (GET_DEF) UVC control 11 on unit 3: -32 (exp. 1). [313094.100041] uvcvideo: Failed to query (GET_DEF) UVC control 11 on unit 3: -32 (exp. 1). [313094.133816] uvcvideo: Failed to query (GET_DEF) UVC control 11 on unit 3: -32 (exp. 1). [313094.165624] uvcvideo: Failed to query (GET_DEF) UVC control 11 on unit 3: -32 (exp. 1). [313094.197377] uvcvideo: Failed to query (GET_DEF) UVC control 11 on unit 3: -32 (exp. 1). [313094.228065] uvcvideo: Failed to query (GET_DEF) UVC control 11 on unit 3: -32 (exp. 1). [313094.259133] uvcvideo: Failed to query (GET_DEF) UVC control 11 on unit 3: -32 (exp. 1). [313094.288753] uvcvideo: Failed to query (GET_DEF) UVC control 11 on unit 3: -32 (exp. 1). [313094.320317] uvcvideo: Failed to query (GET_DEF) UVC control 11 on unit 3: -32 (exp. 1). [313094.349573] uvcvideo: Failed to query (GET_DEF) UVC control 11 on unit 3: -32 (exp. 1). [313094.379885] uvcvideo: Failed to query (GET_DEF) UVC control 11 on unit 3: -32 (exp. 1). [313094.408707] uvcvideo: Failed to query (GET_DEF) UVC control 11 on unit 3: -32 (exp. 1). [313094.437521] uvcvideo: Failed to query (GET_DEF) UVC control 11 on unit 3: -32 (exp. 1). [313094.464960] uvcvideo: Failed to query (GET_DEF) UVC control 11 on unit 3: -32 (exp. 1). [313094.491775] uvcvideo: Failed to query (GET_DEF) UVC control 11 on unit 3: -32 (exp. 1). [313094.518835] uvcvideo: Failed to query (GET_DEF) UVC control 11 on unit 3: -32 (exp. 1). [313094.544935] uvcvideo: Failed to query (GET_DEF) UVC control 11 on unit 3: -32 (exp. 1). [313094.570291] uvcvideo: Failed to query (GET_DEF) UVC control 11 on unit 3: -32 (exp. 1). [313094.648813] uvcvideo: Failed to query (GET_CUR) UVC control 11 on unit 3: -32 (exp. 1). [313094.673605] uvcvideo: Failed to query (GET_CUR) UVC control 11 on unit 3: -32 (exp. 1). [313094.699550] uvcvideo: Failed to query (GET_CUR) UVC control 11 on unit 3: -32 (exp. 1). [313094.723209] uvcvideo: Failed to query (GET_CUR) UVC control 11 on unit 3: -32 (exp. 1). [313094.747387] uvcvideo: Failed to query (GET_CUR) UVC control 11 on unit 3: -32 (exp. 1). [313094.769915] uvcvideo: Failed to query (GET_CUR) UVC control 11 on unit 3: -32 (exp. 1). [313094.793292] uvcvideo: Failed to query (GET_CUR) UVC control 11 on unit 3: -32 (exp. 1). [313094.814955] uvcvideo: Failed to query (GET_CUR) UVC control 11 on unit 3: -32 (exp. 1). [313094.835987] uvcvideo: Failed to query (GET_CUR) UVC control 11 on unit 3: -32 (exp. 1). [313094.857984] uvcvideo: Failed to query (GET_CUR) UVC control 11 on unit 3: -32 (exp. 1).
Bus 001 Device 013: ID 1871:7670 Aveo Technology Corp. Bus 001 Device 013: ID 1871:7670 Aveo Technology Corp. Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 239 Miscellaneous Device bDeviceSubClass 2 ? bDeviceProtocol 1 Interface Association bMaxPacketSize0 64 idVendor 0x1871 Aveo Technology Corp. idProduct 0x7670 bcdDevice 6.20 iManufacturer 2 GenesysLogic Technology Co., Ltd. iProduct 3 USB2.0 UVC PC Camera iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 425 bNumInterfaces 2 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 (Bus Powered) MaxPower 200mA Interface Association: bLength 8 bDescriptorType 11 bFirstInterface 0 bInterfaceCount 2 bFunctionClass 14 Video bFunctionSubClass 3 Video Interface Collection bFunctionProtocol 0 iFunction 1 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 1 USB2.0 UVC PC Camera VideoControl Interface Descriptor: bLength 13 bDescriptorType 36 bDescriptorSubtype 1 (HEADER) bcdUVC 1.00 wTotalLength 105 dwClockFrequency 60.000000MHz bInCollection 1 baInterfaceNr( 0) 1 VideoControl Interface Descriptor: bLength 9 bDescriptorType 36 bDescriptorSubtype 3 (OUTPUT_TERMINAL) bTerminalID 4 wTerminalType 0x0101 USB Streaming bAssocTerminal 0 bSourceID 2 iTerminal 0 VideoControl Interface Descriptor: bLength 27 bDescriptorType 36 bDescriptorSubtype 6 (EXTENSION_UNIT) bUnitID 2 guidExtensionCode {0b365d5e-5fe4-8145-9b0b-374669ba05d4} bNumControl 16 bNrPins 1 baSourceID( 0) 5 bControlSize 2 bmControls( 0) 0xff bmControls( 1) 0x00 iExtension 0 VideoControl Interface Descriptor: bLength 27 bDescriptorType 36 bDescriptorSubtype 6 (EXTENSION_UNIT) bUnitID 5 guidExtensionCode {03dfdaec-e38f-274d-893b-a18d25aeee09} bNumControl 16 bNrPins 1 baSourceID( 0) 3 bControlSize 2 bmControls( 0) 0xff bmControls( 1) 0x03 iExtension 0 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 0x00000000 VideoControl Interface Descriptor: bLength 11 bDescriptorType 36 bDescriptorSubtype 5 (PROCESSING_UNIT) Warning: Descriptor too short bUnitID 3 bSourceID 1 wMaxMultiplier 0 bControlSize 2 bmControls 0x0000177f Brightness Contrast Hue Saturation Sharpness Gamma White Balance Temperature Backlight Compensation Gain Power Line Frequency White Balance Temperature, Auto iProcessing 0 bmVideoStandards 0x 2 NTSC - 525/60 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0017 1x 23 bytes bInterval 6 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 257 bEndPointAddress 129 bmInfo 0 bTerminalLink 4 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 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: 2 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 15360000 dwMaxBitRate 15360000 dwMaxVideoFrameBufferSize 614400 dwDefaultFrameInterval 400000 bFrameIntervalType 1 dwFrameInterval( 0) 400000 VideoStreaming Interface Descriptor: bLength 30 bDescriptorType 36 bDescriptorSubtype 5 (FRAME_UNCOMPRESSED) bFrameIndex 2 bmCapabilities 0x00 Still image unsupported wWidth 160 wHeight 120 dwMinBitRate 960000 dwMaxBitRate 960000 dwMaxVideoFrameBufferSize 38400 dwDefaultFrameInterval 400000 bFrameIntervalType 1 dwFrameInterval( 0) 400000 VideoStreaming Interface Descriptor: bLength 30 bDescriptorType 36 bDescriptorSubtype 5 (FRAME_UNCOMPRESSED) bFrameIndex 3 bmCapabilities 0x00 Still image unsupported wWidth 176 wHeight 144 dwMinBitRate 1267200 dwMaxBitRate 1267200 dwMaxVideoFrameBufferSize 50688 dwDefaultFrameInterval 400000 bFrameIntervalType 1 dwFrameInterval( 0) 400000 VideoStreaming Interface Descriptor: bLength 30 bDescriptorType 36 bDescriptorSubtype 5 (FRAME_UNCOMPRESSED) bFrameIndex 4 bmCapabilities 0x00 Still image unsupported wWidth 320 wHeight 240 dwMinBitRate 3840000 dwMaxBitRate 3840000 dwMaxVideoFrameBufferSize 153600 dwDefaultFrameInterval 400000 bFrameIntervalType 1 dwFrameInterval( 0) 400000 VideoStreaming Interface Descriptor: bLength 30 bDescriptorType 36 bDescriptorSubtype 5 (FRAME_UNCOMPRESSED) bFrameIndex 5 bmCapabilities 0x00 Still image unsupported wWidth 352 wHeight 288 dwMinBitRate 5068800 dwMaxBitRate 5068800 dwMaxVideoFrameBufferSize 202752 dwDefaultFrameInterval 400000 bFrameIntervalType 1 dwFrameInterval( 0) 400000 VideoStreaming Interface Descriptor: bLength 30 bDescriptorType 36 bDescriptorSubtype 5 (FRAME_UNCOMPRESSED) bFrameIndex 6 bmCapabilities 0x00 Still image unsupported wWidth 640 wHeight 480 dwMinBitRate 15360000 dwMaxBitRate 15360000 dwMaxVideoFrameBufferSize 614400 dwDefaultFrameInterval 400000 bFrameIntervalType 1 dwFrameInterval( 0) 400000 VideoStreaming Interface Descriptor: bLength 30 bDescriptorType 36 bDescriptorSubtype 3 (STILL_IMAGE_FRAME) bEndpointAddress 0 bNumImageSizePatterns 6 wWidth( 0) 640 wHeight( 0) 480 wWidth( 1) 160 wHeight( 1) 120 wWidth( 2) 176 wHeight( 2) 144 wWidth( 3) 320 wHeight( 3) 240 wWidth( 4) 352 wHeight( 4) 288 wWidth( 5) 640 wHeight( 5) 480 bNumCompressionPatterns 6 VideoStreaming Interface Descriptor: bLength 6 bDescriptorType 36 bDescriptorSubtype 13 (COLORFORMAT) bColorPrimaries 1 (BT.709,sRGB) bTransferCharacteristics 1 (BT.709) bMatrixCoefficients 4 (SMPTE 170M (BT.601)) 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 0x81 EP 1 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)
[libwebcam] Warning: The driver behind device video0 has a slightly buggy implementation of the V4L2_CTRL_FLAG_NEXT_CTRL flag. It does not return the next higher control ID if a control query fails. A workaround has been enabled. [libwebcam] Warning: The driver behind device video0 has a slightly buggy implementation of the V4L2_CTRL_FLAG_NEXT_CTRL flag. It does not return the next higher control ID if a control query fails. A workaround has been enabled. [libwebcam] Warning: The driver behind device video0 has a slightly buggy implementation of the V4L2_CTRL_FLAG_NEXT_CTRL flag. It does not return the next higher control ID if a control query fails. A workaround has been enabled. [libwebcam] Warning: The driver behind device video0 has a slightly buggy implementation of the V4L2_CTRL_FLAG_NEXT_CTRL flag. It does not return the next higher control ID if a control query fails. A workaround has been enabled. [libwebcam] Warning: The driver behind device video0 has a slightly buggy implementation of the V4L2_CTRL_FLAG_NEXT_CTRL flag. It does not return the next higher control ID if a control query fails. A workaround has been enabled. [libwebcam] Warning: The driver behind device video0 has a slightly buggy implementation of the V4L2_CTRL_FLAG_NEXT_CTRL flag. It does not return the next higher control ID if a control query fails. A workaround has been enabled. [libwebcam] Warning: The driver behind device video0 has a slightly buggy implementation of the V4L2_CTRL_FLAG_NEXT_CTRL flag. It does not return the next higher control ID if a control query fails. A workaround has been enabled. [libwebcam] Warning: The driver behind device video0 has a slightly buggy implementation of the V4L2_CTRL_FLAG_NEXT_CTRL flag. It does not return the next higher control ID if a control query fails. A workaround has been enabled. [libwebcam] Warning: The driver behind device video0 has a slightly buggy implementation of the V4L2_CTRL_FLAG_NEXT_CTRL flag. It does not return the next higher control ID if a control query fails. A workaround has been enabled. [libwebcam] Warning: The driver behind device video0 has a slightly buggy implementation of the V4L2_CTRL_FLAG_NEXT_CTRL flag. It does not return the next higher control ID if a control query fails. A workaround has been enabled. [libwebcam] Warning: The driver behind device video0 has a slightly buggy implementation of the V4L2_CTRL_FLAG_NEXT_CTRL flag. It does not return the next higher control ID if a control query fails. A workaround has been enabled. Listing available controls for device video0: Brightness ID : 0x00000001, Type : Dword, Flags : { CAN_READ, CAN_WRITE }, Values : [ 0 .. 96, step size: 1 ], Default : -8193 Contrast ID : 0x00000002, Type : Dword, Flags : { CAN_READ, CAN_WRITE }, Values : [ 0 .. 64, step size: 1 ], Default : 57343 Saturation ID : 0x00000004, Type : Dword, Flags : { CAN_READ, CAN_WRITE }, Values : [ 0 .. 128, step size: 1 ], Default : 57343 Hue ID : 0x00000005, Type : Dword, Flags : { CAN_READ, CAN_WRITE }, Values : [ 0 .. 8, step size: 1 ], Default : -8193 Gamma ID : 0x00000006, Type : Dword, Flags : { CAN_READ, CAN_WRITE }, Values : [ 1 .. 5, step size: 1 ], Default : 57343 Gain ID : 0x00000003, Type : Dword, Flags : { CAN_READ, CAN_WRITE }, Values : [ 0 .. 100, step size: 1 ], Default : 57343 Power Line Frequency ID : 0x0000000d, Type : Choice, Flags : { CAN_READ, CAN_WRITE }, Values : { 'Disabled'[0], '50 Hz'[1], '60 Hz'[2] }, Default : 1 Sharpness ID : 0x00000007, Type : Dword, Flags : { CAN_READ, CAN_WRITE }, Values : [ 1 .. 15, step size: 1 ], Default : 57343 Backlight Compensation ID : 0x0000000c, Type : Dword, Flags : { CAN_READ, CAN_WRITE }, Values : [ 0 .. 2, step size: 1 ], Default : 57343
[libwebcam] Warning: The driver behind device video0 has a slightly buggy implementation of the V4L2_CTRL_FLAG_NEXT_CTRL flag. It does not return the next higher control ID if a control query fails. A workaround has been enabled. [libwebcam] Warning: The driver behind device video0 has a slightly buggy implementation of the V4L2_CTRL_FLAG_NEXT_CTRL flag. It does not return the next higher control ID if a control query fails. A workaround has been enabled. [libwebcam] Warning: The driver behind device video0 has a slightly buggy implementation of the V4L2_CTRL_FLAG_NEXT_CTRL flag. It does not return the next higher control ID if a control query fails. A workaround has been enabled. [libwebcam] Warning: The driver behind device video0 has a slightly buggy implementation of the V4L2_CTRL_FLAG_NEXT_CTRL flag. It does not return the next higher control ID if a control query fails. A workaround has been enabled. [libwebcam] Warning: The driver behind device video0 has a slightly buggy implementation of the V4L2_CTRL_FLAG_NEXT_CTRL flag. It does not return the next higher control ID if a control query fails. A workaround has been enabled. [libwebcam] Warning: The driver behind device video0 has a slightly buggy implementation of the V4L2_CTRL_FLAG_NEXT_CTRL flag. It does not return the next higher control ID if a control query fails. A workaround has been enabled. [libwebcam] Warning: The driver behind device video0 has a slightly buggy implementation of the V4L2_CTRL_FLAG_NEXT_CTRL flag. It does not return the next higher control ID if a control query fails. A workaround has been enabled. [libwebcam] Warning: The driver behind device video0 has a slightly buggy implementation of the V4L2_CTRL_FLAG_NEXT_CTRL flag. It does not return the next higher control ID if a control query fails. A workaround has been enabled. [libwebcam] Warning: The driver behind device video0 has a slightly buggy implementation of the V4L2_CTRL_FLAG_NEXT_CTRL flag. It does not return the next higher control ID if a control query fails. A workaround has been enabled. [libwebcam] Warning: The driver behind device video0 has a slightly buggy implementation of the V4L2_CTRL_FLAG_NEXT_CTRL flag. It does not return the next higher control ID if a control query fails. A workaround has been enabled. [libwebcam] Warning: The driver behind device video0 has a slightly buggy implementation of the V4L2_CTRL_FLAG_NEXT_CTRL flag. It does not return the next higher control ID if a control query fails. A workaround has been enabled. Listing available devices: video0 USB2.0 UVC PC Camera [uvcvideo, usb-bcm2708_usb-1.3] Media controller device: /dev/media0 Entity 1: USB2.0 UVC PC Camera. Type: 65537, Revision: 0, Flags: 1, Group-id: 0, Pads: 1, Links: 0 Device node Entity: 1, Pad 0, Flags: 1 Entity 2: Extension 2. Type: 131072, Revision: 0, Flags: 0, Group-id: 0, Pads: 2, Links: 1 Subdevice: Entity: 2, Pad 0, Flags: 1 Entity: 2, Pad 1, Flags: 2 Out link: Source pad { Entity: 2, Index: 1, Flags: 2 } => Sink pad { Entity: 1, Index: 0, Flags: 1 } Entity 3: Extension 5. Type: 131072, Revision: 0, Flags: 0, Group-id: 0, Pads: 2, Links: 1 Subdevice: Entity: 3, Pad 0, Flags: 1 Entity: 3, Pad 1, Flags: 2 Out link: Source pad { Entity: 3, Index: 1, Flags: 2 } => Sink pad { Entity: 2, Index: 0, Flags: 1 } Entity 4: Processing 3. Type: 131072, Revision: 0, Flags: 0, Group-id: 0, Pads: 2, Links: 1 Subdevice: Entity: 4, Pad 0, Flags: 1 Entity: 4, Pad 1, Flags: 2 Out link: Source pad { Entity: 4, Index: 1, Flags: 2 } => Sink pad { Entity: 3, Index: 0, Flags: 1 } Entity 5: Camera 1. Type: 131072, Revision: 0, Flags: 0, Group-id: 0, Pads: 1, Links: 1 Subdevice: Entity: 5, Pad 0, Flags: 2 Out link: Source pad { Entity: 5, Index: 0, Flags: 2 } => Sink pad { Entity: 4, Index: 0, Flags: 1 }
### v4l2 device info [/dev/video0] ### general info VIDIOC_QUERYCAP driver : "uvcvideo" card : "USB2.0 UVC PC Camera" bus_info : "usb-bcm2708_usb-1.3" version : 3.18.7 capabilities : 0x84000001 [VIDEO_CAPTURE,STREAMING,(null)] standards inputs VIDIOC_ENUMINPUT(0) index : 0 name : "Camera 1" type : CAMERA audioset : 0 tuner : 0 std : 0x0 [] status : 0x0 [] video capture VIDIOC_ENUM_FMT(0,VIDEO_CAPTURE) index : 0 type : VIDEO_CAPTURE flags : 0 description : "YUV 4:2:2 (YUYV)" pixelformat : 0x56595559 [YUYV] VIDIOC_G_FMT(VIDEO_CAPTURE) type : VIDEO_CAPTURE fmt.pix.width : 640 fmt.pix.height : 480 fmt.pix.pixelformat : 0x56595559 [YUYV] fmt.pix.field : NONE fmt.pix.bytesperline : 1280 fmt.pix.sizeimage : 614400 fmt.pix.colorspace : SRGB fmt.pix.priv : 0 controls VIDIOC_QUERYCTRL(BASE+0) id : 9963776 type : INTEGER name : "Brightness" minimum : 0 maximum : 96 step : 1 default_value : -8193 flags : 0 VIDIOC_QUERYCTRL(BASE+1) id : 9963777 type : INTEGER name : "Contrast" minimum : 0 maximum : 64 step : 1 default_value : 57343 flags : 0 VIDIOC_QUERYCTRL(BASE+2) id : 9963778 type : INTEGER name : "Saturation" minimum : 0 maximum : 128 step : 1 default_value : 57343 flags : 0 VIDIOC_QUERYCTRL(BASE+3) id : 9963779 type : INTEGER name : "Hue" minimum : 0 maximum : 8 step : 1 default_value : -8193 flags : 0 VIDIOC_QUERYCTRL(BASE+16) id : 9963792 type : INTEGER name : "Gamma" minimum : 1 maximum : 5 step : 1 default_value : 57343 flags : 0 VIDIOC_QUERYCTRL(BASE+19) id : 9963795 type : INTEGER name : "Gain" minimum : 0 maximum : 100 step : 1 default_value : 57343 flags : 0 VIDIOC_QUERYCTRL(BASE+24) id : 9963800 type : MENU name : "Power Line Frequency" minimum : 0 maximum : 2 step : 1 default_value : 1 flags : 0 VIDIOC_QUERYCTRL(BASE+27) id : 9963803 type : INTEGER name : "Sharpness" minimum : 1 maximum : 15 step : 1 default_value : 57343 flags : 0 VIDIOC_QUERYCTRL(BASE+28) id : 9963804 type : INTEGER name : "Backlight Compensation" minimum : 0 maximum : 2 step : 1 default_value : 57343 flags : 0