|Device Driver Development Case Studies:
PowerPC , ARM , MIPS , DSPs, Ubicom, 8051 , PICs ,
Palm OS, Windows CE, VxWorks, pSOS+, QNX, Embedded
Linux, BSD Unix.
Embedded Development Tools:
Single board computer SDKs, C/C++, Java,
MONTAVISTA LINUX Consumer Electronics Edition
Development kit, WinCE - Platform Builder,
Symbian - Symbian OS SDK.
Device Driver Development » USB Redirection driver
The customer is a large public company with 3,300 employees and $630 million in annual sales. They are a leading provider
of server virtualization services, including Server Based Computing and Virtual Desktop Infrastructure.
They offer superior services at a fraction of their competitors' price.
The customer must provide a variety of "last-mile" features over the full line of their product suite: server infrastructure, server management, security, client access, device drivers and more. They provide those services for a wide range of environments and operating systems, including Linux, Windows and Macintosh. SolveITLabs was ideally placed to help them with the variety of top quality talent and experience available over the full range of their needs.
Our US-based project management helped them to react quickly to changing customer needs, allowing them to begin new projects, adjust ongoing projects to changing needs: and, of course, complete projects quickly and bring them to market.
The reduced cost of offshore Russian overhead, saving our customers up to 60%, allowed them to offer the quality features they required while managing costs to preserve their competitive price advantage.
The project overview
The USB Redirection system makes a wide variety of USB devices available across a network, using either a direct network connections
or Windows Terminal Services Remote Desktop Protocol. To use a remote USB device, users of the system will not have to perform any
additional installation or configuration other than connecting to the remote USB device using the system.
Server virtualization requires more than just sharing and balancing access
to CPU, RAM and disk space. An important component missing from many
virtualization solutions is shared access to the explosion of USB devices,
not only printers but scanners, cameras, webcams, CD and DVD burners, and
an ever-expanding list of new devices. Our systems engineers created a
solution to share USB devices not just within a single operating-system
family, but across multiple operating systems and environments. For
example, one user can plug a USB scanner into her Macintosh and her
neighbor can use it on his Windows machine as if it were plugged in
- Requires getting in "underneath" the USB drivers on multiple
- Deep understanding of USB protocols and data
- Efficient communications and fast response times
- The system supports OHCI, UHCI and EHCI standards
- Network traffic encryption for secure devices sharing
- Share USB device with others over network using a single application
- Work with both physical and virtual Windows client and server machines
- Work with both Windows, Mac and Linux clients
- Auto-connect to new USB devices
- The system supports the following kinds of USB devices:
– Communications: Modems, telephones
– Human Interface Devices (HID): Keyboards, mice, audio devices
– Peripherals: Printers, card readers
– Storage Devices: Hard drives, flash drives and CD-ROM/DVD drives
– Image Devices: Scanners, cameras, webcams
– Serial Devices: Serial and Parallel USB converters
– Other Devices: All other devices compliant with OHCI, UHCI and EHCI standards.
- The system includes a graphical user interface allowing users to make USB devices available to
other users and to attach to USB devices available on other computers. This user interface can also be used to communicate
dynamically with the lower-level USB redirector.
The system structure
The system consists of three basic components:
- Server side - USB's request interceptor - enumerates presented USB devices; allows redirection of
selected devices to remote host.
The server encapsulates USB request block into IP packet, transmits it to
remote hosts and receives USB data request over IP from the remote host.
- Client side - virtual host controller interface - emulates a real USB host controller interface.
Allows attachment/detachment, enumeration and initialization of remote USB devices.
- User level - device control manager - GUI/CLI application or application set for server/client manage.
The common part is network data protocol; it uses USB/IP protocol, expanded for compatible difference OSes.
USB filter driver disables device and redirects any USB requests to the user application which transmits it to remote host.
USB filter can be loaded by user command.
USB redirection API implemented as set of simple file access functions which allows managing the «interceptor» driver at the
client side and the virtual USB host driver at terminal server side.
USB packet data transmits over single dynamic virtual channel opened in active terminal session by plug-in.
For non-terminal server solutions the client-server communication implemented as direct network connection.