[Spice-devel] UsbDk project as Windows USB redirection engine for Spice Client

Dmitry Fleytman dfleytma at redhat.com
Thu Feb 26 05:41:57 PST 2015


Hi All,

We are happy to announce the USB Development Kit (UsbDk) project.

USB Development Kit is a set of software modules meant to provide
Windows user mode applications with direct and exclusive access to USB devices.

This goal is achieved by by detaching given USB device from Windows PNP
manager and device drivers stack and providing user mode with API for
USB-specific operations on the device.

Initial intention of the kit is USB device redirection support for
spice remote desktop application however it may be used for any other
purpose directly via native UsbDk API or using libusb (we are providing libusb
Windows backend extensions for UsbDk).

Some distinctive UsbDk properties are:

1. Device capture process is totally dynamic, i.e. no inf files and
   no self-signing needed, any device can be captured.
2. UsbDk co-exists with original device driver, when the device is not
   captured original driver is loaded by the system automatically.
3. If user mode client terminates unexpectedly for any reason system reverts
   to original device driver immediately.
4. UsbDk supports all types of devices and interfaces - bulk, isochronous,
   composite, HID etc.
5. Being USB filter driver UsbDk doesn't require WHQL-ing
   as per Microsoft requirements.

UsbDk supports all Windows OS versions staring from Windows XP,
i.e. XP/Vista/7/8/8.1/2003/2008/2008R2/2012/2012R2.
Both 32 and 64 bit architectures are supported.

UsbDk is fully open source and distributed under Apache 2.0 license.

UsbDk source code repository is available at:
http://cgit.freedesktop.org/spice/win32/usbdk

Latest source tarball is at: http://www.spice-space.org/download/windows/usbdk/spice-usbdk-win-1.0-2-sources.zip

Precompiled and signed by Red Hat binaries are available at:
1. 32 bit: http://www.spice-space.org/download/windows/usbdk/UsbDk_1.0.2_x86.msi
2. 64 bit: http://www.spice-space.org/download/windows/usbdk/UsbDk_1.0.2_x64.msi

UsbDk documentation:
1. Short presentation: http://www.spice-space.org/docs/usbdk/UsbDk_at_a_Glance.pdf
2. SDM: http://www.spice-space.org/docs/usbdk/UsbDk_Software_Development_Manual.pdf
3. UsbDk architecture specificatin (part of source tree):
   http://cgit.freedesktop.org/spice/win32/usbdk/tree/ARCHITECTURE

USB Development Kit software consists of Windows USB filter driver (UsbDk.sys),
API DLL (UsbDkHelper.dll), simple command line application (UsbDkController.dll)
for API usage demonstration and verification.

Additionally we've created patches for libusb that allow usage of UsbDk
as backend on Windows operating systems and submitting those patches to
libusb-devel mailing list.

Having UsbDk patches applied to libusb it is fairly easy to use UsbDk as USB
devices redirection engine for Spice-GTK. We've created a set of patches to
allow run-time selection of redirection engine (WinUsb/UsbDk) and will be
submitting those to this list soon.

UsbDk is maintained by Dmitry Fleytman (dfleytma at redhat.com) and
Kirill Moizik (kmoizik at redhat.com), we will be glad to answer your questions sent
to us directly or via this mailing list.

Enjoy it and best regards,
Dmitry



More information about the Spice-devel mailing list