Outsourcing Consulting News
Development of USB Redirection to serial device driver for Linux, Windows
The customer, Quest Software - Dell now, 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. SoloSoft 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 device driver 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 driver, 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 locally.
- Requires getting in "underneath" the USB drivers on multiple platforms
- 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.
x86-68k/ColdFire , PowerPC , ARM , MIPS , DSPs, Ubicom, 8051 , PICs , Z80
Palm OS, Windows CE, VxWorks, pSOS+, QNX, Embedded Linux, BSD Unix
Single board computer SDKs, C/C++, Java, MONTAVISTA LINUX Consumer Electronics Edition Development kit, WinCE - Platform Builder, Symbian - Symbian OS SDK