Examining the Precision Mini Digital Camera

Date: 14/3/04

Updated 18/01/05, see below

Introduction

Picture of the camera The logo from the packaging

This is a cheap USB `keyring digital camera' that takes photos and can also function as a webcam. It uses the same case as the DigitalDreams L'Espion and an un-named product from GTW Electronics, but it appears to have an entirely different device inside. The drivers for windows are OK, but I'd like to use it under GNU/Linux, so I've investigated it a little bit.

Details

The device reports itself as:

The vendor looks up as Pixart Imaging. I can find no reference to this product on the web, but an analysis of a device 0x93a/0x10f, marketed as the Emprex PCD 3800, can be found here.

gPhoto does not recognise the camera during an auto-detect. Looking more closely, the vendor/product codes are not recognised by any driver in gPhoto 2.14. Theorising that external identicality might mean something, I hacked the libgphoto source to accept this camera under the sq905 driver (which lists as compatible a camera called "Precision Mini Digital Camera," vendor 0x2770, product 0x9120) but it appears not to function, as it always lists the number of available photos as zero and does not download anything when asked to. I then similarly forced gPhoto to accept the camera under the stv680 driver (the DigitalDreams L'Espion driver, vendor 0x0553, product 0x0202) but this caused gPhoto to emit an 'unknown error' and exit.

Solution

gPhoto now recognises the camera and will download images from it (I had nothing to do with this - all thanks to the driver's author). With 'gphoto2 --auto-detect', the camera is listed as "Elta Medi@ digi-cam". With 'gphoto2 --summary', it is listed as "Mars MR97310 camera". To get all the photos from the camera into the current folder, simply type 'gphoto2 -P' and they will be downloaded in ppm format. To convert them to jpeg, install the package 'imagemagick' and type something like the following:

convert mrpic001.ppm mrpic001.jpg
Or, to convert all the files at once:
for foo in *.ppm; do convert $foo ${foo%%.*}.jpg; done