USB-IF Compliance Updates

The IVI Compliance Package includes IVI class drivers, simulation drivers, and examples for customers using NI programming environments with IVI. The IVI Compliance Package is based on and compliant with the latest version of the instrument programming specifications defined by the IVI Foundation. If you observe this issue, you will need to unplug the CH340 from your USB port, restart the computer, and follow the steps below to reinstall the latest drivers. Open the Terminal program by selecting Go Applications. Select and open the Terminal program under Applications Utilities Terminal. Write a client driver to the UcmTcpciCx class extension. Write a USB Type-C port controller driver: Implements PD state machines in hardware or firmware and support USB Type-C Connector System Software Interface (UCSI) over ACPI: Load the Microsoft provided in-box drivers, UcmUcsiCx.sys and UcmUcsiAcpiClient.sys. See UCSI driver.

Number of Updates: 21
Table of Contents
IDUpdatedSubjectReasonMandateEffective Date
134January, 2020Receiver Sensitivity (EL_17) and Squelch (EL_16) Histogram measurement areas definedUndefined measurement window for the histogram methodRequiredFebruary, 2020
3January, 2020Receiver Sensitivity (EL_17) and Squelch (EL_16)Clarify squelch and receiver sensitivity parametersRequiredFebruary, 2005
45November, 2019Inrush Current Test DescriptionEdits to this update highlighted in yellow.RequiredJanuary, 2008
133September, 2019LFPS Tx Low Power/LFPS Rx Detect ThresholdTest ClarificationRequiredSeptember, 2019
59January, 2019(DEPRECATED) ECN: Minimum Capacitance Required on Vbus(DEPRECATED)Enables Attach Detection without VBus presentInformationalDecember, 2008
7March, 2015Rise and fall time measurements for USB complianceChange in measurementRequiredAugust, 2007
98October, 2014ECN: Increase to the Maximum Voltage on VBusAlign the USB 2.0 Specification with the USB 3.1 and Type C SpecificationsRequiredAugust, 2014
93May, 2014Low-speed and Full-speed Eye Template DefinitionPublication of the low- and full-speed eye templates used for certificationInformational
92April, 2014Maximum allowed voltage on non-driven lines of Test_J and Test_K are relaxedRelaxation of compliance requirements for hi-speed EL_9 testRequiredApril, 2014
41August, 2013USBET20, version 1.20 publishedAnnouncement of update to the USB Electrical Analysis Tool, USBETRequiredApril, 2013
87March, 2013New Rise and Fall Time Parameters for High-speed SignalingRelaxation of the hi-speed rise and fall time parametersRequiredApril, 2013
86March, 2013Hi-Speed Signal Quality Test FixtureStandardization on a single electrical test fixtureRequiredAugust, 2013
81August, 201164-bit HSET is Unable to Initialize and Execute Tests.'No Host Controllers Found' error messageInformationalSeptember, 2010
67February, 2010The Driven Lines of High-speed Test_J and Test_K are Removed as Certification RequirementsEL_8, Driven Line Test_J and Test_K are obsoleteOptionalJanuary, 2010
61March, 2009ECN: Host Controllers must Assure SOFs are in Phase -LockEnables isochronous peripherals to take advantage of aggressive power managementRequiredDecember, 2008
4May, 2008Engineering Change Notice: Maximum Suspend CurrentRelaxation of suspend current requirements for USB peripheralsRequiredApril, 2008
43October, 2007EL_22 - Interpacket Delay for Hosts with Embedded HubsDefines Interpacket Timing for hosts with embedded hubsInformationaln/a
34July, 2007Peripherals may support both bus-power and self-power modesClarification on how to declare and use both bus-power and self-power modesInformationaln/a
8June, 2007'Near-end' and 'Far-end' explainedClarificationInformational
5February, 2007High-speed Devices: Average current is to be measured at both HS and FSTest Procedure ClarificationRequiredNow
6June, 2006Disconnect Test no longer a compliance requirement for downstream portsTest Change to the Compliance ProgramInformationalJune, 2006
LFPS Tx Low Power/LFPS Rx Detect Threshold
Mandate: Required
Effective Date: September, 2019

USB3.2 Transmitter specification Rev1.0 (section 6.7.2) defines a Low Power Transmitter operation.
In addition to the full swing transmitter specification, an optional low power swing
transmitter is also specified for SuperSpeed applications. A low power swing transmitter is
typically used in systems that are sensitive to power and noise interference, and have a
relatively short channel. The requirement as to whether a transmitter needs to support full
swing, low power swing, or both swings, is dependent on its usage model. All SuperSpeed
transmitters must support full swing, while support for low power swing is optional. The
method by which the output swing is selected is not defined in the specification, and is
implementation specific.

LFPS Tx test procedures specific for Captive Cable devices are included in the below document.

More details may be found in the document located here.

Receiver Sensitivity (EL_17) and Squelch (EL_16) Histogram measurement areas defined
Mandate: Required
Effective Date: February, 2020

Receiver Sensitivity (EL_17) and Squelch (EL_16) Histogram measurement areas defined

The histogram measurements for EL_16 and EL_17 are to be taken in the multi-bit areas at the end of the data packet as these areas are the least likely to be affected by reflections.

Receiver Sensitivity (EL_17) and Squelch (EL_16)
Mandate: Required
Effective Date: February, 2005
There is confusion in how to apply the automatic waiver relating to EL_16 and EL_17. As a result, devices are being incorrectly designed. Hopefully, the following will clarify the rules for EL_16 and EL_17.

The waiver is derived like this:

Receiver Sensitivity and Squelch measurements are supposed to be made at the upstream port pins as defined in Table 7-3 and Figure 7-12 of the USB 2.0 Specification. However, the test fixture used at USB-IF workshops and test facilities does not permit measurement at the upstream port pins. Because the voltage at the measurement point is higher than at the upstream port, the USB-IF provides a 50mV allowance for the voltage drop between the two points. Again, the voltage at the measurement point is higher than at the upstream port pins, so the 50mV allowance has to be added to the spec requirement -- not subtracted.

Voltage is differential, so there is a positive and negative voltage level. The text of the waiver was meant to add 50 to the positive voltage and add -50 to the negative voltage.


The USB 2.0 specification in Section requiressquelch (EL_16) to occur below 100mV magnitude. So no packets must be acknowledged between -100mV and +100mV. This has always been the requirement. Full squelch may occur at higher voltages, but it is mandatory between -100mV and +100mV.

The USB-IF applies the specification requirement (100mV) to measurements made at the test fixture instead of the upstream port. So the voltage drop acts like a built-in waiver for test procedure EL_16. Thus, THERE IS NO 50mV WAIVER FOR EL_16. The HS Test Procedure is incorrect for stating a waiver for EL_16.


Receiver sensitivity requires all packets to be reliably received down to 150mV magnitude. Packets may be received at lower voltages, but it is mandatory at levels above 150mV magnitude. Again, this measurement is to be made at the upstream pins but the test fixture does not allow this. So the USB-IF grants a generous 50mV waiver to compensate for the voltage drop away from the upstream pins. Thus, the USB-IF requires packets to be reliably received at levels above 200mV for EL_17. Packets can, but do not need to be, received between -200mV and +200mV.

So looking at EL_16 and EL_17 together with the waiver, the graph looks like this:

Please note that it is the combination of EL_16 and EL_17 that validates the 'transmission detection envelope' defined in section of the USB 2.0 Specification.


Example 1:
A device exhibits full squelch below 300mV magnitude.

  • EL_16 is a pass because full squelch occurs below 100mV magnitude.
  • EL_17 fails because packets are not reliably received above 200mV with the waiver
Example 2:
A device exhibits full squelch below 110mV magnitude and receives packets above 120mV magnitude
  • EL_16 is a pass because squelch occurs below 100mV magnitude
  • EL_17 is a pass because packets are reliably received above 150mV magnitude
Example 3:
A device exhibits full squelch below 90mV and receives packets above 120mV magnitude
  • EL_16 is a fail because packets are received below 100mV magnitude
  • EL_17 is a pass because packets are reliably received above 150mV magnitude
Example 4:
A device exhibits full squelch below 160mV and receives packets above 190mV magnitude
  • EL_16 is a pass because squelch occurs below 100mV magnitude
  • EL_17 is a waiver because packets are reliably received within 50mV of 150mV magnitude
Example 5:
A device exhibits full squelch below 180mV and receives packets above 210mV magnitude
  • EL_16 is a pass because squelch occurs below 100mV magnitude
  • EL_17 is a fail because packets are not reliably received within 50mV of 150mV magnitude
Peripherals may support both bus-power and self-power modes
Mandate: Informational
Effective Date: n/a
A peripheral that draws less than 100mA from USB may report itself as either bus-powered or self-powered in the bmAttributes field of the active configuration descriptor. Regardless of the power source, the average current drawn from the bus must never exceed the value declared in the bMaxPower field of the active configuration descriptor. Also, the GetStatus(DEVICE) call must accurately reflect whether the peripheral is operating under bus-power or self-power.
A device that is actively drawing more than 100mA from USB must report itself as bus-powered in the GetStatus(DEVICE) call. Peripherals that return 'Self-powered' in the GetStatus(DEVICE) call are prohibited from drawing more than 100mA at any time.
A peripheral is allowed to support both bus and self-powered modes in a configuration. To support both bus and self-powered operation, the bMaxPower field is to report the worse case current demand when operating under bus-power and the self-powered bit of the bmAttributes is marked for self-power. In all cases, the GetStatus(DEVICE) call must accurately report whether the device is currently operating on self- or bus-power. Please see section 9.6.3 of the USB 2.0 Specification.
A self-powered peripheral that experiences a loss of power is not allowed to switch to a high-power, bus-powered mode without forcing a re-enumeration. The USB 2.0 Specification Section defines this requirement for self-powered hubs that also support bus-powered operation. Thus, the USB-IF enforces this requirement on standard peripherals that support both bus- and self-powered modes as well.
The reason for requiring re-enumeration is that the peripheral will go from a low-current draw to a high-current draw. The operating system must be allowed to manage the unexpected power change of the peripheral from a low-power requirement to a high-power requirement.
Engineering Change Notice: Maximum Suspend Current
Mandate: Required
Effective Date: April, 2008

An Engineering Change Notice to the USB 2.0 Specification named 'Suspend Current Limit Changes' has been issued in April 2008. This ECN changes the maximum ICCSL value to 2.5mA.

The purpose of this ECN is to allow any USB peripheral to consume up to 2.5mA during suspend. It does not matter whether the peripheral is low-power or high-power, and it does not matter whether remote wakeup is enabled.

Please note, however, that the InterChip suspend current requirements does not change and remains at 150uA.

The 'Suspend Current Limit Changes' ECN is included with the download of the USB 2.0 Specification.

USBET20, version 1.20 published
Mandate: Required
Effective Date: April, 2013

The USB Electrical Analysis Tool, USBET, has a major update and is available for download. With a new name and version, USBET20, version 1.20, is the only official electrical analysis tool of the USB-IF. There are no changes in measurements or pass/fail criteria, however. Please see the USB Tools webpage for download information.

Once installed, documentation can be found at: Start->All Programs->USB-IF Test Suite->USBET20->Documentation

For best results, please use the new Hi-Speed Signal Quality Test Fixture.

EL_22 - Interpacket Delay for Hosts with Embedded Hubs
Mandate: Informational
Effective Date: n/a

EL_22 - Interpacket Delay for Hosts with Embedded Hubs

Hosts are permitted to embed a high-speed hub and expose the hub's downstream ports. Because the embedded hub must relay the data of the host, the interpacket gap timing is affected when transmitting after receiving a packet.

Section of the USB 2.0 Specification identifies high-speed delay times for cables and hubs. With a max propagation of 26ns for a cable and a max hub repeater delay of 36 bits +4ns (Test Spec EL_48), there is sufficient information for determining what the maximum response time to a device packet behind one tier of hubs should be.

Max delay from downstream port of hub to the downstream port of the host is:

4ns + 36 bits
30ns + 36 bits

Multiplied by two since it is a 'round trip' yields:

60ns + 72 bits

Add in the max turnaround time for the host, 192bits

60ns + 72 bits
+ 192 bits
60ns + 264 bits

So the maximum interpacket delay of a host's response to a device is <= 264 bit times + 60ns, which equates to 610ns or 292 bit times.

Inrush Current Test Description
Mandate: Required
Effective Date: January, 2008

Inrush Current Analysis

The USB-IF requires an Inrush Current Test for all upstream USB ports. The purpose of the test is to ensure that the current consumed due to bulk capacitance and peripheral startup does not cause the voltage to drop below valid levels. A newly attached device with excessive inrush current can cause devices that are connected on adjacent ports to disconnect due to low VBus voltage. Bus powered hubs are most susceptible to voltage brownout from large inrush events.

The USB-IF Electrical Analysis Tool, USBET, revision 2.22 implements a new algorithm for assessing inrush current. The new inrush algorithm is being enforced now. Studies of this implementation show that it is easier for devices to pass the inrush test using this new algorithm. The following describes the algorithm and requirements for inrush testing.

Measurement Method

Inrush current is measured for a minimum of 100 milliseconds after attach. Attach is defined at the moment the VBus and ground pins of the plug mate with the receptacle. Any current exceeding 100 mA during the 100 ms interval is considered part of the inrush current event. The inrush current is divided into regions. A region is an interval where the current exceeds 100 mA until the time the current falls below 100 mA for at least 100 µs. There can be multiple inrush regions during the 100 ms period. Pass/fail is determined by the region having the highest charge.

Multiple Regions

A region starts when the current rises above 100 mA and ends when the current is below 100 mA for at least 100 µs. There may be multiple regions during the 100mS period. The analysis tool calculates the charge above 100 mA in each region. The charge of each region is listed in the report. Pass or fail is based on the region with the largest charge. The regions are shown on the plot by vertical yellow lines marking the start and end of each region.

Minimum Sample Rate

A minimum sample rate of 1 megasamples per second is required for proper analysis. If the sample rate is below this value, the program still performs the analysis but will record an error indicating that the sample rate is too low.

Record Length

A record length of 100 milliseconds or more after the first inrush event is required for the measurement. If the data record is less than 100ms, the result will be a failure because of insufficient measurement time.

If the oscilloscope does not have sufficient memory to capture 100ms of data, then the inrush test will need to be divided into 30ms segments. Each time the inrush test is performed, the trigger should be delayed to capture the next segment. Use USBET to analyze each inrush segment. Repeat until all segments covering at least 100ms of inrush data is examined. Each and every individual inrush segment must pass. A failure in one of the inrush segments consitutes an overall failure.

No Inrush Event Found

If there is no inrush event found, i.e. the current never rises above 100 mA, the result is considered a Pass. However, the inrush current test should be repeated several times to ensure an accurate measurement. The USB-IF has deprecated the requirement for peripherals to have a minimum capacitance of 1uF.

High-speed Devices: Average current is to be measured at both HS and FS
Mandate: Required
Effective Date: Now
For high-speed devices, average current draw is to be measured at both high-speed and full-speed. Current draw at high-speed tends to be larger than at full-speed, but this is not always true.
(DEPRECATED) ECN: Minimum Capacitance Required on Vbus
Mandate: Informational
Effective Date: December, 2008

Effective January 2019, the following requirement is deprecated.

Revision 2.0 of the USB On-The-Go Supplement defines an Attach Detection Protocol (ADP) for hosts and peripherals. This protocol enables peripherals and hosts to detect when a device attach occurs when VBus is turned off. In order for ADP to work from a host's perspective, peripherals are required to have a minimum of 1uF (CRPB) capacitance on their VBus pin.

This ECN is part of the download of the USB 2.0 Specification and should be reviewed for specific details.

Disconnect Test no longer a compliance requirement for downstream ports
Mandate: Informational
Effective Date: June, 2006
The disconnect test is no longer required for certification of downstream ports. Vendors are encouraged to verify disconnect voltage thresholds on their own.
The Host Disconnect Test was performed on all downstream ports (hosts and hubs). When a HS device removes its HS terminations or is detached, the voltage on the data lines increases. An increased voltage level indicates a disconnect and the port is required to signal a disconnect.
ECN: Host Controllers must Assure SOFs are in Phase -Lock
Mandate: Required
Effective Date: December, 2008
Host controllers are to issue SOF tokens that are in phase-lock across selective suspend or level 1 (L1) power management events. Phased-locked SOFs are not required across global suspend conditions.
This ECN is part of the download of the USB 2.0 Specification. Please see the ECN for specific details.
The Driven Lines of High-speed Test_J and Test_K are Removed as Certification Requirements
Mandate: Optional
Effective Date: January, 2010

The USB-IF no longer requires EL_8: Test_J and Test_K to be performed as a condition for USB Certification. USB certification of high-speed USB devices (hosts, hubs and peripherals) no longer requires execution or passing of EL_8: Test_J and Test_K tests. EL_8 is defined in the USB 2.0 Electrical Test Specification and measures the data line voltage when driven high. The nature of this test measures the DC voltage level of the data line when driven, which is not a real-world representation of the functionality of the

Rise and fall time measurements for USB compliance
Mandate: Required
Effective Date: August, 2007

There has always been a problem accurately measuring rise and fall times, especially on high speed devices. The measurement of interest is the edge rate, or slew rate, during the state change time. To help improve accuracy of the measurement, the USB-IF is standardizing on one test fixture for high-speed signal quality.

Aside from the fixturing and probes used to take the measurements, major contributors to the inaccuracies in these measurements are the shape of the edge, noise on the signal and the method of calculating the 10% and 90% points as defined in Sections and of the USB 2.0 Specification.

A waveform with slow corners (see sample eye diagram below) will result in a measured rise time that is slower than the actual edge rate would indicate. Also a small change in the position of the 10% and 90% points due to noise on the signal, etc., can cause a relatively large change in the measured rise time.

In order to optimize the repeatability of this measurement a slew rate, or edge rate, will be used. The results are expressed in terms of volts per micro-second ( V/us ). The conversion from rise time to slew rate uses the specified rise time over 80% of the nominal peak to peak signal amplitudes for each of the signaling rates.

High Speed:
Edge Rate(max-nominal) = (0.8V * 0.8)/300e-12 = 2133V/us (Volts per nano-second)
Edge Rate(max-warning) = (0.8V * 0.8)/100e-12 = 6400V/us (Volts per nano-second)

Full Speed:
Edge Rate(min) = (3.3V * 0.8)/20e-9 = 130V/us
Edge Rate(max) = (3.3V * 0.8)/4e-9 = 660V/us

Low Speed:
Edge Rate(min) = (3.3V * 0.8)/300e-9 = 8.8V/us
Edge Rate(max) = (3.3V * 0.8)/75e-9 = 35.2V/us

The actual slew rates are measured within the limits of the inner vertical eye of the far-end template for each test type. This method eliminates the subjective location of the vertical measurement points of the 10/90 method since a fixed voltage range is used.

Note that the calculations use the relaxed edge rate values of 300ps and 100ps for high-speed signaling. Calculating slew rates in USBET20 provides a common measurement method and should result in more consistent results between test equipment manufacturers, test facilities and USB-IF compliance workshops.

This measurement continues to be informational for FS and LS. However, this measurement is required for HS.

The current version of the USBET20 tool converts the slew rate into an equivalent rise and fall time.

'Near-end' and 'Far-end' explained
Mandate: Informational
Effective Date:
High-speed electrical tests are performed either near-end or far-end depending on the configuration of the product. The terms 'near-end' and 'far-end' are based on which end of the cable the test fixture is attached in relation to the device being tested. The point where measurements are made dictates what eye template is used. (Please see Section of the USB 2.0 Specification) The measurement is made either 'near' the device or 'far' from the device being tested.
All HS peripherals with a B-receptacle are tested near-end (at the peripheral's receptacle). HS devices that have a captive cable are tested far-end (at the end of the captive cable). Unlike full-speed electrical tests, which are always performed far-end, the length of the cable used in HS electrical tests is not important.
High-speed electrical tests of downstream ports on hosts and hubs are always performed near-end.
Upstream ports that have a captive cable are always tested far-end. Peripherals with permanently attached standard A-plugs, such as 'thumb' or 'key' drives, are considered to be captive (like a mouse or keyboard). The captive cable for thumb drives is, simply, very short. Thus, far-end electrical tests are performed on these products.
64-bit HSET is Unable to Initialize and Execute Tests.
Mandate: Informational
Effective Date: September, 2010

In the 32-bit HSET utility, the EHCI driver is automatically swapped out with a proprietary EHCI test driver. This feature is not available in the 64-bit version (at this time). So you will need to manually replace the Windows EHCI driver with the test EHCI driver.

  1. Within Device Manager, locate the Enhanced Host Controller located under the Universal Serial Bus controllers
  2. Right click and Update the Driver Software
  3. Select 'Browse the Computer for Driver Software'
  4. Select 'Pick from a List of Device Drivers'
  5. Make sure the 'Show compatible hardware' is checked
  6. Select the 'Intel® USB 2.0 Enhanced Host Controller' then choose 'Have Disk'
  7. Browse to C:Program FilesUSB-IF Test SuiteEHCI HS ELectrical Test ToolkitEHCIDrivers (or something similar) and locate the hcdriver.sys file. At this point, the 'Intel EHCI Compliance Test Tool' should be displayed in the hardware model window. Select it and choose 'Next.'
  8. Windows Security will issue a warning. Install the driver anyway.
  9. The Windows EHCI stack should now be replaced by the 'Intel EHCI Compliance Test Tool' driver the next time the PC is booted.
  10. Reboot the system. The 'Intel EHCI Compliance Test Tool' driver is not signed and Windows will not automatically load an unsigned driver. Prior to Windows loading, press F8 and disable driver signature enforcement in order to load the unsigned driver.

To restore the original Windows EHCI driver, uninstall the Intel Test Stack driver and rescan for hardware changes.

Hi-Speed Signal Quality Test Fixture
Mandate: Required
Effective Date: August, 2013

The USB 2.0 Specification, which was written in the late 1990's, limits the transition time of hi-speed signals to 500ps, minimum. At that time, 500ps edge rates were considered very fast. However, process improvements and shrinkage in silicon design can easily cause hi-speed signals to transition significantly faster than the specification limit. Consequently, the USB-IF has relaxed the rise and fall time requirements for certification, but measuring these fast transitions are proving very problematic. Fast transitions act like a TDR pulse and signal quality test fixtures available today are not designed for these fast transitions. Also, the various differential probe designs of the scope manufactures react very differently to fast edges giving very different test results.

In order to obtain more consistent test measurements, the USB-IF is standardizing on a single test fixture for measuring hi-speed signal quality. This test fixture uses SMA connectors that eliminate the need to use probes. Studies have shown that eliminating the use of probes and using one test fixture design significantly improves the consistency and accuracy of hi-speed USB signal quality analysis.

The 'USB 2.0 Hi-Speed Signal Quality Test Fixtures' are available from the USB-IF eStore. USB cables are provided with the fixture but the SMA cables are not. The USB-IF does not sell or provide SMA cables and it is the vendor's responsibility to obtain them. One recommendation for SMA cables includes the following: Agilent 15443A Matched Cable Pair (or equivalent).

By August 2013, this test fixture will be used for all certification tests of hi-speed capable devices at all compliance workshops and by all authorized test laboratories. Device vendors may continue to use any test solution available that meets their needs, but USB-IF certification tests will be conducted using the new test fixture.

New Rise and Fall Time Parameters for High-speed Signaling
Mandate: Required
Effective Date: April, 2013
The USB 2.0 Specification defines minimum rise and fall time of high-speed signal transitions as 500ps. For the purposes of USB certification, the USB-IF relaxes the rise and fall time to 100ps minimum. This will mean that developers will no longer have to implement edge rate control gimmickry to meet the rise and fall time requirements of the USB 2.0 Specification in order to obtain USB certification.
A pass value will be assigned to transitions that are 300ps or longer (2133V/us slew rate). For edge rates faster than 300ps, a warning will be issued stating that electromagnetic interference and crosstalk on the>
Site sponsored by USB Implementers Forum, Inc., creators of USB technology.
About UsPrivacy Statement

Versions supported

  • Windows 10
  • Windows 8.1

Applies to

  • Device manufacturers of CDC Control devices

Microsoft-provided in-box driver (Usbser.sys) for your Communications and CDC Control device.

In Windows 10, the driver has been rewritten by using the Kernel-Mode Driver Framework that improves the overall stability of the driver.

  • Improved PnP and power management by the driver (such as, handling surprise removal).
  • Added power management features such as USB Selective Suspend.

In addition, UWP applications can now use the APIs provided by the new Windows.Devices.SerialCommunication namespace that allow apps to talk to these devices.


Usbser.sys installation

Load the Microsoft-provided in-box driver (Usbser.sys) for your Communications and CDC Control device.


If you trying to install a USB device class driver included in Windows, you do not need to download the driver. They are installed automatically. If they are not installed automatically, contact the device manufacturer. For the list of USB device class driver included in Windows, see USB device class drivers included in Windows.

Windows 10

In Windows 10, a new INF, Usbser.inf, has been added to %Systemroot%Inf that loads Usbser.sys as the function device object (FDO) in the device stack. If your device belongs to the Communications and CDC Control device class, Usbser.sys is loaded automatically.You do not need to write your own INF to reference the driver. The driver is loaded based on a compatible ID match similar to other USB device class drivers included in Windows.



Drivers usb compliance tool
  • If you want to load Usbser.sys automatically, set the class code to 02 and subclass code to 02 in the Device Descriptor. For more information, see USB communications device class. With this approach, you are not required to distribute INF files for your device because the system uses Usbser.inf.
  • If your device specifies class code 02 but a subclass code value other than 02, Usbser.sys does not load automatically. Pnp Manager tries to find a driver. If a suitable driver is not found, the device might not have a driver loaded. In this case, you might have to load your own driver or write an INF that references another in-box driver.
  • If your device specifies class and subclass codes to 02, and you want to load another driver instead of Usbser.sys, you have to write an INF that specifies the hardware ID of the device and the driver to install. For examples, look through the INF files included with sample drivers and find devices similar to your device. For information about INF sections, see Overview of INF Files.


Microsoft encourages you to use in-box drivers whenever possible. On mobile editions of Windows, such as Windows 10 Mobile, only drivers that are part of the operating system are loaded. Unlike desktop editions, it is not possible to load a driver through an external driver package. With the new in-box INF, Usbser.sys is automatically loaded if a USB-to-serial device is detected on the mobile device.

Windows 8.1 and earlier versions

In Windows 8.1 and earlier versions of the operating system, Usbser.sys is not automatically loaded when a USB-to-serial device is attached to a computer. To load the driver, you need to write an INF that references the modem INF (mdmcpq.inf) by using the Include directive. The directive is required for instantiating the service, copying inbox binaries, and registering a device interface GUID that applications require to find the device and talk to it. That INF specifies 'Usbser' as a lower filter driver in a device stack.

The INF also needs to specify the device setup class as Modem to use mdmcpq.inf. Under the [Version] section of the INF, specify the Modem and the device class GUID. for details, see System-Supplied Device Setup Classes.

For more information, see this KB article.

Configure selective suspend for Usbser.sys

Drivers Usb Compliance Software

Starting in Windows 10, Usbser.sys supports USB Selective Suspend. It allows the attached USB-to-serial device to enter a low power state when not in use, while the system remains in the S0 state. When communication with the device resumes, the device can leave the Suspend state and resume Working state. The feature is disabled by default and can be enabled and configured by setting the IdleUsbSelectiveSuspendPolicy entry under this registry key:

To configure power management features of Usbser.sys, you can set IdleUsbSelectiveSuspendPolicy to:

  • '0x00000001': Enters selective suspend when idle, that is, when there are no active data transfers to or from the device.

  • '0x00000000': Enters selective suspend only when there are no open handles to the device.

That entry can be added in one of two ways:

  • Write an INF that references the install INF and add the registry entry in the HW.AddReg section.

  • Describe the registry entry in an extended properties OS feature descriptor. Add a custom property section that sets the bPropertyName field to a Unicode string, 'IdleUsbSelectiveSuspendPolicy' and wPropertyNameLength to 62 bytes. Set the bPropertyData field to '0x00000001' or '0x00000000'. The property values are stored as little-endian 32-bit integers.

    For more information, see Microsoft OS Descriptors.

Develop Windows applications for a USB CDC device

If you install Usbser.sys for the USB CDC device, here are the application programming model options:

Drivers Usb Compliance Device

  • Starting in Windows 10, a Windows app can send requests to Usbser.sys by using the Windows.Devices.SerialCommunication namespace. It defines Windows Runtime classes that can use to communicate with a USB CDC device through a serial port or some abstraction of a serial port. The classes provide functionality to discover such serial device, read and write data, and control serial-specific properties for flow control, such as setting baud rate, signal states.

  • In Windows 8.1 and earlier versions, you can write a Windows desktop application that opens a virtual COM port and communicates with the device. For more information, see:

    Win32 programming model:

    • .NET framework programming model:

Usb Compliance

Related topics

Coments are closed
Scroll to top