Evolution USB Devices Driver



Reydisp Evolution is a Windows based suite of software tools, providing the means for the user to fully configure the relay and is common to the entire range of Reyrolle protection relays. The setting configuration tool allows the user to apply settings, interrogate settings and retrieve events and disturbance waveforms from the device. The Evolution of Storage Devices 1956 – IBM 350 The IBM 350 was the first disk drive introduced by IBM, and was the size of a large wardrobe, but contained a very small amount of data compared to today’s data size, but back then it was a major invention. PTCL EVO USB Dongle AC2746 by ZTE Mobile Telecom - Drivers and Info. PTCL, in partnership with ZTE mobile telecom, introduced various models of 3G devices in Pakistan. AC2747 is from one of them. AC2746 is a USB modem for CDMA EVDO green technology of low radiation and low consumption with data rate of 3.1 Mbps down-link and 1.8 Mbps up-link. The most common approach has been to implement a device driver, (termed as a USB client driver in this documentation set) and provide an installation package that installs the driver as the function driver in the device stack above the Microsoft-provided USB driver stack. The client driver exposes a device interface that applications can use to obtain the device's file handle.

  1. Usb Device Manager
  2. Evolution Usb Devices Driver Adapter
-->

This topic provides guidelines for choosing the best driver model for developing a USB client driver that acts as the device's function driver.

USB device manufacturers must often provide a way for applications to access the device's features. To choose the best mechanism for accessing a USB device, start with the simplest approach and move to more complex solutions only if it is necessary. The following list summarizes the choices discussed in this topic:

  1. If your device belongs to a USB device class for which Windows includes an inbox driver, you don’t need to write a driver.
  2. If your device does not have a Microsoft-provided class driver, and the device is accessed by a single application, then load WinUSB as the function driver.
  3. If the device needs to be accessed by concurrent applications and your device does not have isochronous endpoints, write a UMDF-based client driver.
  4. If class driver, WinUSB, or UMDF solutions are not options that work for you, write a KMDF-based client driver.
  5. If a particular feature is not supported by KMDF, write a hybrid driver that calls WDM routines.

The most common approach has been to implement a device driver, (termed as a USB client driver in this documentation set) and provide an installation package that installs the driver as the function driver in the device stack above the Microsoft-provided USB driver stack. The client driver exposes a device interface that applications can use to obtain the device's file handle. Applications can then use this file handle to communicate with the driver by calling Windows APIs.

Writing a driver that is customized to the device's requirements is the most flexible way to provide access to a USB device. However, implementing a driver requires a lot of work. The driver must perform complex tasks, such as driver initialization when new devices are detected, power management, I/O operations, surprise removal, state management, and cleanup when the device is removed. Before you choose to write a driver, ask the following questions:

Can you use a Microsoft-provided driver?

You might not need to write a driver if:

  • Your device belongs to a USB device class that is supported by Microsoft.

    In that case, the corresponding class driver is loaded as the device driver. For a list of device classes for which Windows includes an inbox driver, see USB device class drivers included in Windows.

  • Your device does not belong to a device class.

    For such devices, evaluate the device features to determine whether you can load the Microsoft-provided WinUSB (Winusb.sys) as the device's function driver. Using WinUSB is the best solution if:

    • Your device is accessed by a single application.
    • Your device supports bulk, interrupt, or isochronous endpoints.
    • Your device is intended to work with a target computer running Windows XP with Service Pack 2 (SP2) and later versions of Windows.

    Loading WinUSB as the function driver provides a simpler alternative to implementing a custom USB driver. For example, WinUSB is the preferred approach for an electronic weather station that is accessed only by an application that is packaged with the device. It is also useful for diagnostic communication with a device and for flashing firmware.

    To make it easy for applications to send requests to Winusb.sys, we provide a user-mode DLL, Winusb.dll, that exposes WinUSB functions. An application can call those functions to access the device, configure it, and transfer data to the device’s endpoints.

    WinUSB is not an option if:

    • Your device is accessed by multiple applications.
    • Your device has functions that already have kernel-mode support in the Windows operating system. For example, for modem functions (which TAPI supports) or LAN functions (which NDIS supports), you must use the interface that the Usbser.sys driver supports to manage modem devices with user-mode software.

    In Windows 8, we've added a new compatible ID to the INF for WinUSB installation. If the device firmware contains that compatible ID, WinUSB is loaded by default as the function driver for the device. This means that hardware manufacturers are not required to distribute INF files for their WinUSB devices. For more information, see WinUSB Device.

If you write a USB client driver, which driver model is best?

The answer depends on the design of your device. First, determine whether a particular driver model meets your requirements. Some design considerations are based on whether you want the USB device to be accessed by multiple concurrent applications and support data streaming through isochronous endpoints.

If you choose to write a driver, here are your options:

  • User-Mode Driver Framework (UMDF)

    UMDF provides device driver interfaces (DDIs) that a client driver can use to integrate with Windows components such as the Plug and Play Manager and Power Manager. UMDF also provides specialized target objects for USB devices, which abstract the hardware in user mode and simplify I/O operations for the driver. In addition to the UMDF interfaces, WDF provides enhanced debugger extensions and tracing tools for user-mode drivers. UMDF is based on the component object model (COM) and developing a user-mode driver is easier for a C++ developer.

    Implement a UMDF-based client driver for a USB device in the following cases:

    • The device is accessed by concurrently by multiple applications.
    • The device supports bulk or interrupt transfers.

    Drivers that run in user mode can access only the (virtual) user address space and pose a much lower risk to the system. Kernel-mode drivers can access the system address space and the internal system structures. A badly coded kernel-mode driver might cause problems that affect other drivers or the system, and eventually crash the computer. Therefore, a user-mode driver can be safer than a kernel-mode driver in terms of security and stability.

    Another advantage of user-mode drivers is that they leverage all the Win32 APIs. For example, the drivers can call APIs such as Winsock, Compression, Encryption APIs, and so on. Those APIs are not available to kernel-mode drivers.

    A UMDF-based client driver is not an option for USB devices that support isochronous endpoints.

    Note Windows 8.1 introduces version 2.0 of UMDF. With UMDF version 2.0, you can write a UMDF driver in the C programming language that calls many of the methods that are available to KMDF drivers. You cannot use UMDF version 2.0 to write lower filter drivers for USB.

  • Kernel-Mode Driver Framework (KMDF)

    KMDF was designed to make the driver models easy to extend to support new types of hardware. KMDF provides DDIs and data structures that make kernel-mode USB drivers easier to implement than the earlier Windows Driver Model (WDM) drivers. In addition, KMDF provides specialized input/output (I/O) targets that you can use to write a fully functional client driver that uses the Microsoft USB driver stack.

    In certain cases where a particular feature is not exposed through KMDF, the driver must call WDM routines. The driver does not need to implement the entire WDM infrastructure but uses KMDF methods to access a select set of WDM routines. For example, to perform isochronous transfers, a KMDF-based client driver can send WDM-style URBs that describe the request to the USB driver stack. Such drivers are called hybrid drivers in this documentation set.

    KMDF also supports the port-miniport driver model. For instance, a kernel streaming miniport driver (such as a USB webcam) that uses kernel streaming on the upper edge can use KMDF USB I/O target objects to send requests to the USB driver stack. NDIS drivers can also be written by using KMDF for protocol-based buses such as USB.

    Pure WDM drivers are difficult to write, complex, and not robust. With the evolution of KMDF, writing this type of driver is no longer necessary.

Microsoft Visual Studio 2012 includes USB User-Mode Driver and USB Kernel-Mode Driver templates that generate starter code for a UMDF and KMDF USB client driver, respectively. The template code initializes a USB target device object to enable communication with the hardware. For more information, see the following topics:

For information about how to implement UMDF and KMDF drivers, see the Microsoft Press book Developing Drivers with the Windows Driver Foundation.

WinUSB, UMDF, KMDF Feature Comparison

The following table summarizes the capabilities of WinUSB, UMDF-based USB drivers, and KMDF-based USB drivers.

FeatureWinUSBUMDFKMDF
Supports multiple concurrent applicationsNoYesYes
Isolates driver address space from application address spaceNoYesNo
Supports bulk, interrupt, and control transfersYesYesYes
Supports isochronous transfersYes ⁴NoYes
Supports the installation of kernel-mode drivers, such as filter drivers, as an overlying layer on the USB stackNoNoYes
Supports selective suspend and the wait/wake stateYesYesYes

The following table summarizes the WDF options that are supported by different versions of Windows.

Windows versionWinUSBUMDFKMDF
Windows 8YesYesYes
Windows 7YesYesYes
Windows VistaYes¹Yes¹Yes
Windows Server 2003NoNoYes
Windows XPYes²Yes²Yes
Microsoft Windows 2000NoNoYes³

Note Yes¹: WinUSB and UMDF are supported only on x86-based and x64-based versions of Windows.

Usb Device Manager

Yes²: WINUSB and UMDF are supported in Windows XP with Service Pack 2 (SP2) or later versions of Windows.

Yes³: KMDF is supported in Windows 2000 with SP4 or later versions of Windows.

Yes⁴: Isochronous transfers are supported in Windows 8.1 or later versions of Windows.

All client SKUs of the 32-bit versions of Windows XP with SP2support WinUSB. WinUSB is not native to Windows XP; it must be installed with the WinUSB co-installer. All Windows Vista SKUs and later versions of Windows support WinUSB.

Related topics

Getting started with USB client driver development
WinUSB
Write your first USB client driver (UMDF)
Write your first USB client driver (KMDF)

All Articles: USB Internals


Evolution Usb Devices Driver Adapter

USB Overview

In the past, connecting multiple peripheral devices to computer has been a real problem. There were too many different port types (serial port, parallel port, PS/2 etc.) and their use imposes limitations such as no hot-pluggability and automatic configuration. There are very limited number of ways to attach the peripheral devices in the original IBM PC implementation due to the requirements in terms of non-shareable IRQ lines and I/O address space. The main reason that Universal Serial Bus was implemented to provide a replacement for those legacy ports on a computer to make the addition of the peripheral devices quick and easy for end user.

USB is designed to allow many peripherals to be connected using a single standardized interface. It provides an expandable, fast, bi-directional, low-cost, hot-pluggable Plug and Play serial hardware interface that makes the life of the computer users easier allowing them to plug different peripheral devices into a USB port and have them automatically configured and ready to use. Using a single connector type, USB allows the user to connect a wide range of peripheral devices, such as keyboards, mice, printers, scanners, mass storage devices, telephones, modems, digital still-image cameras, video cameras, audio devices to a computer. USB devices do not directly consume system resources. They are not mapped into I/O address space, nor do they use IRQ lines or DMA channels. The only system resources required by a USB system are the memory buffers used by the USB system software. Due to its success and widespread acceptance, USB became the 'de-facto' industry standard for connecting peripheral devices to PCs and laptops.

The USB has the following key features:

  • Single connector type: USB replaces all the different legacy connectors with one well-defined, standardized USB connector for all USB peripheral devices, eliminating the need for different cables and connectors and thus simplifying the design of the USB devices. So all USB devices can be connected directly to a standard USB port on a computer.

  • Hot-swappable: USB devices can be safely plugged and unplugged as needed while the computer is running. So there is no need to reboot.

  • Plug and Play: Operating system software automatically identifies, configures, and loads the appropriate device driver when a user connects a USB device.

  • High performance: USB offers low speed (1.5 Mbit/s), full speed (12 Mbit/s) and high speed (up to 480 Mbit/s) transfer rates that can support a variety of USB peripherals. USB 3.0 (SuperSpeed USB) achieves the throughput up to 5.0 Gbit/s.

  • Expandability: Up to 127 different peripheral devices may theoretically be connected to a single bus at one time.

  • Power supplied from the bus: USB distributes the power to all connected devices eliminating the need for external power source for low-power devices. High-power devices can still require their own local power supply. USB also supports power saving suspend/resume modes.

  • Easy to use for end user: A single standard connector type for all USB devices simplifies the end user's task at figuring out which plugs go into which sockets. The operating system automatically recognizes the USB device attachment and loads appropriate device drivers.

  • Low-cost implementation: Most of the complexity of the USB protocol is handled by the host, which along with low-cost connection for peripherals makes the design simple and low cost.


A Brief USB History

The USB was developed and standardized by a group of leading companies from the computer and electronics industries in 1995.

The Universal Serial Bus specification, which defines all aspects of the USB system from the physical layer (mechanical and electrical) all the way up to the software layer, was developed by Compaq, Digital Equipment Corporation (DEC), IBM, Intel, Microsoft and NEC, joined later by Hewlett-Packard, Lucent and Philips. Compaq, which merged with Hewlett Packard, bought DEC and Lucent merged with Alcatel to form Alcatel-Lucent.

These companies also formed the USB Implementers Forum, Inc. (USB-IF) as a non-profit corporation to publish the specifications and provide a support organization and forum for the advancement and adoption of USB technology.


USB Specification

The design of USB is standardized in Universal Serial Bus Specification that provides the technical details to understand USB requirements. The specification describes the bus attributes, the protocol definition, types of transactions, bus management, and the programming interface required to design USB compatible peripherals and software. USB Specifications and all related documents are freely downloadable from USB Implementers Forum web site.

Versions of USB specification:

  • Revision 1.0 released on January 15, 1996, introduced a low-speed transfer rate of 1.5 Mbit/s and a full-speed transfer rate of 12 Mbit/s.

  • Revision 1.1 released on September 23, 1998, introduced the improved specification and was the first widely used version of USB.

  • Revision 2.0 released on April 27, 2000. The major feature of revision 2.0 was the addition of a high-speed transfer rate of 480 Mbit/s.

  • Revision 3.0 released on November 17, 2008, brings significant performance enhancements to the USB standard while offering backward compatibility with the peripheral devices currently in use. Legacy USB 1.1/2.0 devices continue to work while plugged into new USB 3.0 host and new USB 3.0 devices work at USB 2.0 speed while plugged into USB 2.0 host. Delivering data transfer rates up to ten times faster (the raw throughput is up to 5.0 Gbit/s) than Hi-Speed USB (USB 2.0), SuperSpeed USB is the next step in the continued evolution of USB technology.

Data Transfer Rate Comparison

USB RevisionUSB1.0USB2.0USB3.0
Media (Data Size)Transfer Time
Song / Pic (4 MB)5.3 sec0.1 sec0.01 sec
256 Flash (256 MB)5.7 min8.5 sec0.8 sec
USB Flash (1 GB)22 min33 sec3.3 sec
SD-Movie (6 GB)2.2 hr3.3 min20 sec
USB Flash (16 GB)5.9 hr8.9 min53.3 sec
HD-Movie (25GB)9.3 hr13.9 min70 sec

Note, however, that all above mentioned are theoretical maximum data transfer rates that do not take into consideration some USB protocol overhead and bus utilization, which makes a difference in actual maximum throughput. The actual maximum throughput may vary depending on the transfer type, maximum packet size, time reserved for control transfers, the overhead due to signaling imposed bit stuffing etc.

Each iteration of the specification is backward compatible with previous revisions. Since all USB devices use the same cables, connectors and software interfaces, there is no change in the usage model for the end user. USB 1.0, USB 1.1 and USB 2.0 compliant peripheral devices can operate on a computer at the same time. It is possible for a high-speed USB 2.0 device to plug into a USB1.1 port and operate at the appropriate transfer rate.

Using USBlyzer - Viewing the USB Specification Version

You can view USB Specification revision number for USB devices and external hubs.

To view USB Specification revision number a USB device compliant with

  • Open USBlyzer.

  • In the USB Device Tree panel select the device for which you want to see USB Specification revision number.

  • In the USB Properties panel see the bcdUSB field value of the Device Descriptor.

OffsetFieldSizeValueDescription
0bLength112h
1bDescriptorType101hDevice
2bcdUSB20101hFails WHQL testing. Should be 0110h
4bDeviceClass100hClass information in the Interface Descriptors
5bDeviceSubClass100h
6bDeviceProtocol100h
7bMaxPacketSize0140h64 bytes
8idVendor26993hFreshtel
10idProduct2B001h
12bcdDevice20000h0.00
14iManufacturer101h'Yealink Network Technology Ltd.'
15iProduct102h'VOIP USB Phone'
16iSerialNumber100h
17bNumConfigurations101h

Note, that in the above example the U.S. Robotics USB Phone 9600 incorrectly reports its compliance with the USB Specification 1.1 as 0101h.

bcdUSB field in the standard USB Device Descriptor may have the following values:

  • 0100h - USB Specification 1.0

  • 0110h - USB Specification 1.1

  • 0200h - USB Specification 2.0

Since some devices incorrectly expose bcdUSB field as 0101h instead of 0110h, the operating system accepts both as valid revision number. But failure to correctly report this value can prevent the driver from passing the Windows Hardware Quality Labs (WHQL) testing and may also cause a device to fail tests in the USB test tools.


USB Logo

Evolution

To complement the USB specification in real products, the USB-IF maintains a Compliance Program that provides reasonable measures of acceptability. Products that pass compliance testing have the right to license the USB-IF certified USB Logo. Products that operate at either low-speed or full-speed can use only the Basic-Speed version of the logo. Only products that support high-speed can use the Hi-Speed version of the logo.

Certified Logo for USB Devices


USB Extensions

There are also the extensions to the original USB design. These are USB On-The-Go (OTG) and Certified Wireless USB. USB On-The-Go allows connecting portable peripheral devices to each other directly without having to connect to a PC. Certified Wireless USB is a wireless radio communication protocol that combines the ease-of-use of USB with the convenience of wireless technology. Like standard USB, the USB-IF also maintains the Compliance Program for OTG and Wireless USB devices.

Certified Logo for USB OTG and Wireless USB Devices

USB On-The-Go and Certified Wireless USB technologies are beyond the scope of this article series, the details and specifications can be found on the USB-IF website.

Next Article: Basic Components of a USB System Architecture