Using the Ipevo Ziggi HD document camera from Linux

(Note: this page is starting out pretty terse, as I just want to get the facts out there; hopefully I’ll have time later to revise it and make it more readable.)

The Ipevo Ziggi HD presents itself as a compound USB device with three components: Video, Audio and HID (Human Interface Device class).  The Video device is UVC-compliant, except (it turns out) for the auto-focus control, so we can access manual focussing, exposure and other controls using libwebcam and its command-line utility uvcdynctrl, and/or v4l2-ctl.  It does require a minor patch to libwebcam.c – see

The HID device relates to the buttons and slide-switch on the camera head, and also to the auto-focus function.  It can be accessed using HIDAPI and its test GUI:

HIDAPI GUI Screenshot 1

By default you will need to run the test GUI with sudo privilege in order to to access the USB device, but this can be fixed by creating a udev rule. Shamelessly copied and adapted from Jan Axelson’s excellent USB website:

“By default, applications that use the libusb-1.0 library require administrative privileges (sudo). To enable users to access a device via the libusb-1.0 library without administrative privileges, add a udev rule for the device. This rule specifies the USB device with Vendor ID = 1778h and Product ID = 0210h (Ipevo Ziggi-HD document camera) and sets the MODE parameter to grant read/write permissions for all users:

SUBSYSTEM==”usb”, ATTR{idVendor}==”1778″, ATTR{idProduct}==”0210″, MODE=”0666″

The rule should be on one line in the file. (Press Enter only at the end.) Place the rule in a file with a .rules extension (such as 81-libusb.rules) and save the file in /etc/udev/rules.d/  On the next device attachment or boot, users can run applications that use libusb-1.0 functions to read and write to the specified device.”

To trigger an auto-focus via USB, exactly as if the blue button on the camera head has been pressed, send a 5-byte HID Output Report containing the data 0x02 0x4F 0x00 0x00 0x00 (as shown in the screenshot above).  The camera will immediately return a 5-byte Input Report containing 0x01 0x02 0x01 0x00 0x00, will carry out its auto-focus procedure, and then return a second Input Report containing 0x01 0x02 0x02 0x00 0x00.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s