Device.Buscontroller Requirements
Device.BusController.Bluetooth.Base
Bluetooth Controller - Generic radio tests
Related Requirements |
Device.BusController.Bluetooth.Base.4LeSpecification Device.BusController.Bluetooth.Base.LeStateCombinations Device.BusController.Bluetooth.Base.LeWhiteList Device.BusController.Bluetooth.Base.MicrosoftBluetoothStack Device.BusController.Bluetooth.Base.NoBluetoothLEFilterDriver Device.BusController.Bluetooth.Base.OnOffStateControllableViaSoftware Device.BusController.Bluetooth.Base.RadioScanIntervalSettings Device.BusController.Bluetooth.Base.Scatternet Device.BusController.Bluetooth.Base.SimultaneousBrEdrAndLeTraffic Device.BusController.Bluetooth.Base.SpecificInformationParameters Device.BusController.Bluetooth.Base.SupportsBluetooth21AndEdr |
Device.BusController.Bluetooth.Base.4LeSpecification
Bluetooth controllers must support the Bluetooth 4.0 specification requirements
Target Feature |
Device.BusController.Bluetooth.Base |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
The Bluetooth controller must comply with the Basic Rate (BR) and Low Energy (LE) Combined Core Configuration Controller Parts and Host/Controller Interface (HCI) Core Configuration requirements outlined in the Compliance Bluetooth Version 4.0 specifications.
Additional Information
Enforcement Date |
Mar. 01, 2012 |
Device.BusController.Bluetooth.Base.LeStateCombinations
Bluetooth controllers must support a minimum set of LE state combinations.
Target Feature |
Device.BusController.Bluetooth.Base |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
The Bluetooth controller must allow the spec LE state combinations (as allowed in section [Vol 6] Part B, Section 1.1.1 of the Bluetooth version 4.0 spec):Only the following states are not required to be supported:0x0000000000800000 Active Scanning State and Initiating State combination supported.0x0000000004000000 Passive Scanning state and Slave Role combination supported.0x0000000008000000 Active Scanning state and Slave Role combination supported.
Additional Information
Enforcement Date |
Mar. 01, 2012 |
Device.BusController.Bluetooth.Base.LeWhiteList
Bluetooth controllers must support a minimum LE white list size of 25 entries.
Target Feature |
Device.BusController.Bluetooth.Base |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
The Bluetooth controller must support a minimum of 25 entries in its white list for remote Low Energy (LE) devices.
Additional Information
Enforcement Date |
Mar. 01, 2012 |
Device.BusController.Bluetooth.Base.MicrosoftBluetoothStack
Must test using Microsoft's Bluetooth stack
Target Feature |
Device.BusController.Bluetooth.Base |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
The Bluetooth controllers must be tested with Microsoft's Bluetooth stack when submitting for hardware certification.
Additional Information
Enforcement Date |
Mar. 01, 2012 |
Device.BusController.Bluetooth.Base.NoBluetoothLEFilterDriver
Bluetooth LE filter drivers are not allowed to load on BTHLEENUM.SYS
Target Feature |
Device.BusController.Bluetooth.Base |
Applies to |
Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
To ensure a uniform experience across Windows Store Apps using the Bluetooth LE (GATT) WinRT API, filter drivers shall not be loaded on BTHLEENUM.SYS.
Additional Information
Business Justification |
The GATT WinRT API provided for communication over Bluetooth LE is closely coupled to the driver implementing GATT support for the inbox Bluetooth stack, BTHLEENUM.SYS. All Windows Store Apps that use the Microsoft WinRT API for GATT rely on this interface to be work as originally implemented, thus there shall not be any 3rd party components that may intentionally or inadvertently affect this interface. |
Enforcement Date |
Jun. 26, 2013 |
Device.BusController.Bluetooth.Base.OnOffStateControllableViaSoftware
Bluetooth controllers On/Off state must be controllable via software
Target Feature |
Device.BusController.Bluetooth.Base |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
For Certifying Bluetooth controllers for Windows 8.1:
When turning the radio off , Bluetooth controllers shall be powered down to its lowest supported power state and no transmission/reception shall take place. Windows will terminate Bluetooth activity by unloading the inbox protocol drivers and their children, submitting the HCI_Reset command to the controller, and then setting the controller to the D3 logical power state, allowing bus drivers to power down the radio as appropriate. The radio can be completely powered off if a bus-supported method is available to turn the radio back on. No additional vendor software control components will be supported.
On turning the radio back on, the Windows Bluetooth stack shall resume the device to D0, allowing bus drivers to restart the device. The Windows Bluetooth stack shall then reinitialize the Bluetooth components of the controller.
Bluetooth Radio Management in Windows 8.1 shall only be enabled for internal Bluetooth 4.0 controllers.
For Windows 8 Certified controllers on upgrade to Windows 8.1:
On upgrade to Windows 8.1, previous DLL support for Bluetooth 4.0 controllers shall be ignored and the Bluetooth controller is expected to be, at a minimum, in a state where there is no transmission/reception from the antenna.
For Certifying Bluetooth controllers for Windows 8 only:
The previous requirement remains unchanged.
Bluetooth controllers On/Off state shall be controllable via software as described in Bluetooth Software Radio Switch The Off state is defined, at a minimum, as disabling the antenna component of the Bluetooth module so there can be no transmission/reception. There must not be any hardware-only switches to control power to the Bluetooth radio.
The radio must maintain on/off state across sleep and reboot.
Additional Information
Business Justification |
The Windows 8.1 implementation of Bluetooth Radio Management provides for an improved Radio Management experience while decreasing the work needed by our IHV and OEM partners. |
Enforcement Date |
Jun. 26, 2013 |
Device.BusController.Bluetooth.Base.RadioScanIntervalSettings
Bluetooth controllers must use radio scan interval values as set by Windows
Target Feature |
Device.BusController.Bluetooth.Base |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
To ensure a uniform experience that balances power usage with responsiveness for users in reconnect scenarios, Bluetooth controllers must use the Page Scan Interval and LE Scan Interval values as set by Windows at all times.
Additional Information
Enforcement Date |
Jun. 26, 2013 |
Device.BusController.Bluetooth.Base.Scatternet
Bluetooth host controller supports Bluetooth scatternet
Target Feature |
Device.BusController.Bluetooth.Base |
Applies to |
Windows 7 Client x86, x64 Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
The Bluetooth host controller must support at least two concurrent piconets (also known as a scatternet). The host controller must also be able to allow the host to join a device that is requesting a connection to the existing piconet when the local radio is the master of that piconet. This requirement is described in the Specification of the Bluetooth System, Version 2.1 + Enhanced Data Rate (EDR) (Baseband Specification), Section 8.6.6. Design Notes: The scatternet support should follow the enhanced scatternet support errata that are defined by the Bluetooth Special Interest Group (SIG).
Additional Information
Enforcement Date |
Jun. 01, 2006 |
Device.BusController.Bluetooth.Base.SimultaneousBrEdrAndLeTraffic
Bluetooth controllers must support simultaneous BR/EDR and LE traffic.
Target Feature |
Device.BusController.Bluetooth.Base |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
Bluetooth controllers must allow the simultaneous use of both Basic Rate (BR)/Enhanced Data Rate (EDR) and Low Energy (LE) radios.
Additional Information
Enforcement Date |
Mar. 01, 2012 |
Device.BusController.Bluetooth.Base.SpecificInformationParameters
Bluetooth host controller implements specific Informational parameters to provide accurate information about the host controller's capabilities
Target Feature |
Device.BusController.Bluetooth.Base |
Applies to |
Windows 7 Client x86, x64 Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
The manufacturer fixes the informational parameters, which provide valuable information about the Bluetooth device and the capabilities of the host controller. Bluetooth host controllers must implement the HCl_Read_Local_Version_Information command and HCI_Read_Local_Supported_Features command as described in the Specification of the Bluetooth System, Version2.1 + Enhanced Data Rate (EDR), Part E, Section 7.4. Required support includes the mechanism for reporting the supported version and features.
Additional Information
Enforcement Date |
Jun. 01, 2006 |
Device.BusController.Bluetooth.Base.SupportsBluetooth21AndEdr
Bluetooth controllers must support the Bluetooth 2.1+EDR specification requirements
Target Feature |
Device.BusController.Bluetooth.Base |
Applies to |
Windows 7 Client x86, x64 |
Description
The Bluetooth host controller must comply with the requirements that are outlined in the Specification of the Bluetooth System Version 2.1 + Enhanced Data Rate (EDR).
Additional Information
Enforcement Date |
Jun. 01, 2009 |
Device.BusController.Bluetooth.NonUSB
Bluetooth Controller - NonUSB connected radios
Related Requirements |
Device.BusController.Bluetooth.NonUSB.Performance Device.BusController.Bluetooth.NonUSB.ScoSupport |
Device.BusController.Bluetooth.NonUSB.Performance
Non-USB Bluetooth controllers must achieve at least a throughput of 700kbps
Target Feature |
Device.BusController.Bluetooth.NonUSB |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
Non-USB Bluetooth controllers must achieve at least a throughput of 700 kbps at the RFCOMM layer.
Additional Information
Enforcement Date |
Mar. 01, 2012 |
Device.BusController.Bluetooth.NonUSB.ScoSupport
Non-USB connected Bluetooth controllers use sideband channel for SCO
Target Feature |
Device.BusController.Bluetooth.NonUSB |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
In order to ensure a high quality audio experience All non-USB connected Bluetooth controllers must use a sideband channel for SCO (e.g. SCO over an I2S/PCM interface)
Additional Information
Enforcement Date |
Mar. 01, 2012 |
Device.BusController.Bluetooth.USB
Bluetooth Controller - USB connected radios
Related Requirements |
Device.BusController.Bluetooth.USB.ScoDataTransportLayer |
Device.BusController.Bluetooth.USB.ScoDataTransportLayer
Bluetooth host controllers support the SCO data transport layer as specified in the Bluetooth 2.1+EDR specifications
Target Feature |
Device.BusController.Bluetooth.USB |
Applies to |
Windows 7 Client x86, x64 Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
The Bluetooth host controller must comply with the Synchronous Connection Oriented (SCO)-USB requirements that are outlined in the Specification of the Bluetooth System, Version 2.1 + Enhanced Data Rate (EDR), Part A, Section 3.5.
Additional Information
Enforcement Date |
Jun. 26, 2013 |
Device.BusController.I2C
These requirements apply only to I2C controller silicon vendors. System manufacturers may optionally run these tests but may need hardware customization.
Related Requirements |
Device.BusController.I2C.CancellationOfIO Device.BusController.I2C.ClockStretching Device.BusController.I2C.HCKTestability Device.BusController.I2C.IdlePowerManagement Device.BusController.I2C.LockUnlockIOCTL Device.BusController.I2C.NACK Device.BusController.I2C.SPBRead Device.BusController.I2C.SPBSequenceIOCTL Device.BusController.I2C.SPBWrite Device.BusController.I2C.Stress |
Device.BusController.I2C.CancellationOfIO
I2C Controller and Controller Drivers support cancellation of I/O Requests
Target Feature |
Device.BusController.I2C |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
The I2C controller and associated controller driver must conform to the SPB framework and support the following:
Driver implements SPB request cancelation logic for read/write/sequence I/O.
Additional Information
Enforcement Date |
Jun. 26, 2013 |
Device.BusController.I2C.ClockStretching
I2C Controller and Controller Drivers support peripheral clock stretching
Target Feature |
Device.BusController.I2C |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
The I2C controller and associated controller driver must conform to the SPB framework and support the following:
Controller can sustain peripheral holding clock for at least 2 seconds during read, write and sequence I/O.
Additional Information
Enforcement Date |
Jun. 26, 2013 |
Device.BusController.I2C.HCKTestability
Systems with I2C Controllers must expose correct ACPI table information and I2C pin-outs to enable HCK testability.
Target Feature |
Device.BusController.I2C |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
The objective of this requirement is to enable the controller to be testable by the HCK framework.
Details:
Controller under test must provide I2C external connectivity pin-out(SCL,SDA and GND)
Update ACPI to correctly describe HCK test peripheral drivers and its connection to I2C controller under test.
Other peripheral devices on the same I2C controller under test must be disabled when running HCK tests.
Additional Information
Business Justification |
Enable WITT based testing to empower I2C controller silicon partners to automate testing of their controller hardware/firmware/driver and ensure that it meets HCK requirements. By using hardware based testing, the silicon partner can quickly stress all aspects of the I2C controller and associated driver providing a higher quality bar |
Enforcement Date |
Jun. 26, 2013 |
Device.BusController.I2C.IdlePowerManagement
I2C Controller and Controller Drivers support Idle Power Management
Target Feature |
Device.BusController.I2C |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
The I2C controller and associated controller driver must conform to the SPB framework and support the following:
Controller should go to D3 state after idle for more than 1 second when screen is on.
Controller should not go to D3 state after idle less than 1 second when screen is on to avoid aggressive Dx transition.
Controller should go to D3 state after idle for more than 100ms when screen is off.
Controller takes less than 75ms (50+ 25 to account for the timer granularity of 15ms) to resume from D3 to D0 state
Additional Information
Enforcement Date |
Jun. 26, 2013 |
Device.BusController.I2C.LockUnlockIOCTL
I2C Controller and Controller Drivers support Lock/Unlock IOCTL
Target Feature |
Device.BusController.I2C |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
If stop condition is supported, the I2C controller and associated controller driver must conform to the SPB framework and support the following:
Supports arbitrary number of read/write operations inside Lock/Unlock pair.
Generate Start condition for the first I/O in the lock/unlock sequence, restart condition for subsequent I/O, and stop condition when Unlock is called.
Additional Information
Enforcement Date |
Jun. 26, 2013 |
Device.BusController.I2C.NACK
I2C Controller and Controller Drivers support peripheral NACK
Target Feature |
Device.BusController.I2C |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
The I2C controller and associated controller driver must conform to the SPB framework and support the following:
Controller can detect address NACK bus condition and return STATUS_NO_SUCH_DEVICE for request.
Controller can detect device NACK during a write operation, complete the request with STATUS_SUCCESS and information bytes is set to a number of bytes that is less than what was intended to be written
Controller can detect device NACK during a write operation of a sequence IOCTL, complete the request with STATUS_SUCCESS and information bytes is set to number of bytes that is less than what was intended to be written.
Additional Information
Exceptions |
Once we see the V2 silicon, we will need to validate if all sequences are required or if some need to be changed to optional. |
Enforcement Date |
Jun. 26, 2013 |
Device.BusController.I2C.SPBRead
I2C Controller and Controller Drivers support SPB Read operations correctly
Target Feature |
Device.BusController.I2C |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
The I2C controller and associated controller driver must conform to the SPB framework and support the following when reading data from an I2C peripheral:
Must support reading from standard (100Kbps), fast (400kbps) and fast plus (1Mbps) peripheral targets. High Speed (3.4MHz) is optional but must pass all HCK requirements for I2C if implemented in the I2C controller and controller driver.
Must support read size from 1 to 4096 bytes (4KBytes).
Sizes larger than 4KBytes must succeed or fail with STATUS_NOT_SUPPORTED.
SPB read is mapped into Start, Read Data, NACK and Stop I2C conditions.
Fail any unsupported data size read request with STATUS_INVALID_PARAMETER and not cause any bus activities.
Additional Information
Enforcement Date |
Jun. 26, 2013 |
Device.BusController.I2C.SPBSequenceIOCTL
I2C Controller and Controller Drivers support SPB Sequence IOCTL correctly
Target Feature |
Device.BusController.I2C |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
The I2C controller and associated controller driver must confirm to the SPB framework and support the following:
Supports any arbitrary I/O sequences: write-read, read-write, write-write, read-read and complex combined such as write-read-read-write-write
SPB sequence IOCTL is mapped into Start, I/O sequence 1, Restart .I/O sequence N, Stop I2C conditions.
Controller needs to examine the sequence and determine if it is supported or fail with STATUS_INVALID_PARAMETER before causing any bus activities.
Support any valid parameters (e.g. DelayInUs) and memory format(SIMPLE, MDL, Buffer list etc.) as defined by SPB.
Additional Information
Exceptions |
Once we see the V2 silicon, we will need to validate if all sequences are required or if some need to be changed to option |
Enforcement Date |
Jun. 26, 2013 |
Device.BusController.I2C.SPBWrite
I2C Controller and Controller Drivers support SPB Write operations correctly
Target Feature |
Device.BusController.I2C |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
The I2C controller and associated controller driver must confirm to the SPB framework and support the following when writing to an I2C peripheral:
Must support writing to standard (100Kbps), fast (400kbps) and fast plus (1Mbps) peripheral targets. High Speed (3.4MHz) is optional but must pass all HCK requirements for I2C if implemented in the I2C controller and controller driver.
Must supports write size from 1 to 4096 bytes (4KBytes).
Sizes larger than 4KBytes must succeed or fail with STATUS_NOT_SUPPORTED.
SPB write is mapped into Start, Write Data and Stop I2C conditions.
Fail any unsupported data size write request with STATUS_INVALID_PARAMETER and not cause any bus activities.
Additional Information
Enforcement Date |
Jun. 26, 2013 |
Device.BusController.I2C.Stress
I2C Controller and Controller Driver operates correctly and recovers from bus hangs or faults under prolonged stress conditions
Target Feature |
Device.BusController.I2C |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
The I2C controller and associated controller driver must confirm to the SPB framework and support the following:
Supports bus recovery when peripheral is hung (watchdog mechanism).
Sustain multiple targets stress for more than 1 hour.
Additional Information
Enforcement Date |
Jun. 26, 2013 |
Device.BusController.NearFieldProximity
Near Field Proximity is a set of short range wireless technologies to enable communication between a personal computer and a device.
Related Requirements |
Device.BusController.NearFieldProximity.NFCCertification Device.BusController.NearFieldProximity.NFCControllerNCICompliance Device.BusController.NearFieldProximity.ProviderImplementation Device.BusController.NearFieldProximity.ProximityReliability Device.BusController.NearFieldProximity.RangeOfActuation Device.BusController.NearFieldProximity.SessionEstablishmentPerformance Device.BusController.NearFieldProximity.TaptoSetupScenario Device.BusController.NearFieldProximity.TapToUseScenarios |
Device.BusController.NearFieldProximity.NFCCertification
NFC Implementations must receive NFC certification
Target Feature |
Device.BusController.NearFieldProximity |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
An NFP provider that implements air interface specifications incorporated by NFC Forum by reference as approved specifications must receive Certification from the NFC Forum, inclusive of:
Wave 1 compliance
SNEP compliance
Additional Information
Enforcement Date |
Jun. 01, 2010 |
Device.BusController.NearFieldProximity.NFCControllerNCICompliance
Devices that implement NFC technology must be compliant with the NFC Controller Interface Specification
Target Feature |
Device.BusController.NearFieldProximity |
Applies to |
Windows 8.1 Client x86, x64 |
Description
An NFC controller in a system or device must be compliant with the NFC Controller Interface (NCI) Specification 1.0 or later. The NFCForum-TS-NCI-1.0 technical specification defines a transport independent communication protocol, using RF Interfaces, to enable a standardized way to communicate between the NFC Controller (NFCC) and a Device Host (DH).
The NFCForum-TS-NCI-1.0 Technical Specification is available at https://www.nfc-forum.org/specs/
Additional Information
Enforcement Date |
Jun. 26, 2013 |
Device.BusController.NearFieldProximity.ProviderImplementation
Device proximity adheres to the Proximity Provider model
Target Feature |
Device.BusController.NearFieldProximity |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
Any technology that implements the GUID_DEVINTERFACE_PROXIMITYPROVIDER device driver interface specified in the 'Windows 8 Near Field Proximity Implementation Specification' document is defined as an NFP provider and must meet all the design and implementation requirements laid out within the spec as well as all other applicable NFP certification requirements. The spec can be found at:https://go.microsoft.com/fwlink/?LinkId=237135
Additional Information
Enforcement Date |
Mar. 01, 2012 |
Device.BusController.NearFieldProximity.ProximityReliability
Proximity provider meets session reliability requirements
Target Feature |
Device.BusController.NearFieldProximity |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
An NFP provider must support performant completion of Windows scenarios. Within a period of 2.5 minutes the devices must be able to establish 95 successful sessions out of 100 attempts. The test scenario consists of:
Provide two machines to carry out the test with a test app.
Tap the two machines together.
Validate that a session is established between the two devices within one second.
Repeat from step 2.
Attempt this 100 times
A pass is recorded if at least 95 sessions are established.
Additional Information
Enforcement Date |
Mar. 01, 2012 |
Device.BusController.NearFieldProximity.RangeOfActuation
Proximity technology meets range of actuation
Target Feature |
Device.BusController.NearFieldProximity |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
An NFP provider must support an effective operating volume to enable users to successfully use NFP technology with Windows in 95 times out of 100 attempts for all tap and do scenarios. Refer to the most current version of the 'Windows 8 Near Field Proximity Implementation Specification' document for detailed placement guidance, as well as acceptable, minimum, and maximum values for the required effective operating volume. The spec can be found at:https://go.microsoft.com/fwlink/?LinkId=237135
Additional Information
Enforcement Date |
Mar. 01, 2012 |
Device.BusController.NearFieldProximity.SessionEstablishmentPerformance
Proximity technology establishes a session in 0.5 second
Target Feature |
Device.BusController.NearFieldProximity |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
An NFP provider must support the creation of sessions within 0.5 seconds from the point of being detected within the effective operating volume. As a point of information, the baseline expected performance in this test for NFC is as follows:
One instance of the same app on two systems attempt to establish a session.
During the session establishment, the total data transferred at the SNEP layer should be no more than 11kb.
The expected worst-case transfer rate for NFC is 106kbps, so the total time required at the air interface should be 11kb/106kbps, so 0.103 seconds of time.
The remaining 0.307 seconds of time is for buffering and latency in the busses and stacks.
Additional Information
Enforcement Date |
Mar. 01, 2012 |
Device.BusController.NearFieldProximity.TaptoSetupScenario
Provider must support the handling of the tap and setup scenario
Target Feature |
Device.BusController.NearFieldProximity |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
An NFP provider must unwrap the out-of-band pairing information from the transmission format so that only the out-of-band pairing information is presented to Windows. Detailed guidance and requirements are further defined in the most current version of the 'Windows 8 Near Field Proximity Implementation Specification' document. The spec can be found at:https://go.microsoft.com/fwlink/?LinkId=237135
Additional Information
Enforcement Date |
Mar. 01, 2012 |
Device.BusController.NearFieldProximity.TapToUseScenarios
Provider must support the handling of the tap and use scenarios
Target Feature |
Device.BusController.NearFieldProximity |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
An NFP provider must support the end-to-end NFP use cases of tap and use, tap and launch, tap and share, tap and acquire, and tap and receive. Details are further defined in the most current version of the 'Windows 8 Near Field Proximity Implementation Specification' document. The spec can be found at:https://go.microsoft.com/fwlink/?LinkId=237135
Additional Information
Enforcement Date |
Mar. 01, 2012 |
Device.BusController.SdioController
Related Requirements |
Device.BusController.SdioController.ComplyWithIndustrySpec Device.BusController.SdioController.WdfKmdfDriver |
Device.BusController.SdioController.ComplyWithIndustrySpec
SDIO Controller Complies with industry Standard
Target Feature |
Device.BusController.SdioController |
Applies to |
Windows 7 Client x86, x64 Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) Windows Server 2012 R2 x64 Windows Server 2008 x86, x64, Windows Server 2008 Release 2 x64 Windows Server 2012 x64 |
Description
Secure Digital I/O (SDIO) host controllers must comply with PCI 2.3 or later requirements for that interface. For PCI configuration registers and interface information, see the SD Host Controller Specification, Version 1.0, Appendix A.
Additional Information
Enforcement Date |
Jun. 01, 2007 |
Device.BusController.SdioController.WdfKmdfDriver
SDIO Controller driver must be a WDF KMDF Implementation
Target Feature |
Device.BusController.SdioController |
Applies to |
Windows 7 Client x86, x64 Windows 8 Client x86, x64 Windows 8.1 Client x86, x64 Windows Server 2012 R2 x64 Windows Server 2008 x86, x64, Windows Server 2008 Release 2 x64 Windows Server 2012 x64 |
Description
The SDIO Controller driver must be written using the Windows Driver Framework (WDF) Kernel Mode Driver Framework for the driver's implementation.
Additional Information
Enforcement Date |
Jun. 01, 2007 |
Device.BusController.UART
The requirements apply only to silicon vendors. UART controller drivers are recommended to use SerCXV2.
Related Requirements |
Device.BusController.UART.Cancellation Device.BusController.UART.DMA Device.BusController.UART.FlowControl Device.BusController.UART.FlushFIFO Device.BusController.UART.HCKTestability Device.BusController.UART.IdlePowerManagement Device.BusController.UART.Performance Device.BusController.UART.ReadWrite Device.BusController.UART.Stress Device.BusController.UART.SupportedBaudRates |
Device.BusController.UART.Cancellation
UART Controller and Controller Drivers support cancellation of Read and Write requests
Target Feature |
Device.BusController.UART |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
The UART controller and associated controller driver must confirm to the Serial framework and support the following:
Controller implements necessary logic to support I/O cancellation
Additional Information
Exceptions |
Once we see the V2 silicon, we will need to validate if all sequences are required or if some need to be changed to optional. |
Enforcement Date |
Jun. 26, 2013 |
Device.BusController.UART.DMA
UART Controller and Controller Drivers require DMA support for appropriate DMA Transactions
Target Feature |
Device.BusController.UART |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
The UART controller and associated controller driver must confirm to the Serial framework and support the following:
Peripheral driver can issue read and write request to the controller max at 5K data size.
Additional Information
Enforcement Date |
Jun. 26, 2013 |
Device.BusController.UART.FlowControl
UART Controller and Controller Drivers support setting flow control on and off
Target Feature |
Device.BusController.UART |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
The UART controller and associated controller driver must confirm to the Serial framework and support the following:
Driver implements support for IOCTL_SERIAL_GET_HANDFLOW and IOCTL_SERIAL_SET_HANDFLOW IOCTLs and flow control settings
Additional Information
Enforcement Date |
Jun. 26, 2013 |
Device.BusController.UART.FlushFIFO
UART Controller and Controller Drivers support Flush FIFOs
Target Feature |
Device.BusController.UART |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
The UART controller and associated controller driver must confirm to the Serial framework and support the ability to Flush FIFO queues.
Additional Information
Enforcement Date |
Jun. 26, 2013 |
Device.BusController.UART.HCKTestability
Systems with UART Controllers must expose correct ACPI table information and UART pin-outs to enable HCK testability
Target Feature |
Device.BusController.UART |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
The objective of this requirement is to enable the UART controller to be testable by the HCK framework.
Details:
Controller under test must provide UART external connectivity pin-out(Rx,Tx, RTS, CTS and GND)
Describe HCK UART test peripheral driver and its connection to UART controller under test in device s firmware.
Additional Information
Enforcement Date |
Jun. 26, 2013 |
Device.BusController.UART.IdlePowerManagement
UART Controller and Controller Drivers support Idle Power Management
Target Feature |
Device.BusController.UART |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
The UART controller and associated controller driver must confirm to the Serial framework and support the following:
Controller transitions to Dx state when there is no pending I/O in the controller for 200 ms.
Additional Information
Enforcement Date |
Jun. 26, 2013 |
Device.BusController.UART.Performance
UART Controller and Controller Drivers has a measured baud rate that matches the expected value
Target Feature |
Device.BusController.UART |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
The UART controller and associated controller driver must confirm to the Serial framework that the measured baud rate matches the expected value .
Additional Information
Enforcement Date |
Jun. 26, 2013 |
Device.BusController.UART.ReadWrite
UART Controller and Controller Drivers support read/write Unicode(8 bits) data
Target Feature |
Device.BusController.UART |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
The UART controller and associated controller driver must confirm to the Serial framework and support the following when reading data from an UART peripheral:
Support IOCTL_SERIAL_SET_LINE_CONTROL and IOCTL_SERIAL_GET_LINE_CONTROL and be able to transfer data according to the data length settings(8 bits).
Additional Information
Enforcement Date |
Jun. 26, 2013 |
Device.BusController.UART.Stress
UART Controller and Controller Driver operates correctly (and recovers appropriately from bus errors) under prolonged stress conditions
Target Feature |
Device.BusController.UART |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
The UART controller and associated controller driver must confirm to the Serial framework and support the following:
Sustain stress test passes for at least 1 hour.
Additional Information
Enforcement Date |
Jun. 26, 2013 |
Device.BusController.UART.SupportedBaudRates
UART Controller and Controller Drivers support basic baud rate 115200 and faster speed for higher bandwidth communications
Target Feature |
Device.BusController.UART |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
The UART controller and associated controller driver must confirm to the Serial framework and support the following:
Driver supports IOCTL_SERIAL_SET_BAUD_RATE and IOCTL_SERIAL_GET_BAUD_RATE IOCTL.
Driver should fail baud rate setting for non-supported baud rate and is able perform I/O using the baud rate set.
Additional Information
Enforcement Date |
Jun. 26, 2013 |
Device.BusController.UsbController
Requirements that apply to USB Controllers
Related Requirements |
Device.BusController.UsbController.ImplementAtLeastOneXhciSpcStructForUSB2 Device.BusController.UsbController.MaintainDeviceStateOnResumeS1andS3 Device.BusController.UsbController.MustResumeWithoutForcedReset Device.BusController.UsbController.PreserveDeviceStateAfterDisableEnable Device.BusController.UsbController.SpecificationCompliance Device.BusController.UsbController.SuperSpeedConnectorsSupportHighFullLow Device.BusController.UsbController.SupportSelectiveSuspend Device.BusController.UsbController.TestedUsingMicrosoftUsbStack Device.BusController.UsbController.UsbifCertification Device.BusController.UsbController.XhciAc64Bit Device.BusController.UsbController.XhciAddInCardsMapPortsConsistently Device.BusController.UsbController.XhciAddInCardsReportInternalDevices Device.BusController.UsbController.XhciSupportDebuggingOnAllExposedPorts Device.BusController.UsbController.XhciSupportMsiMsixInterrupts Device.BusController.UsbController.XhciSupportsMinimum31Streams Device.BusController.UsbController.XhciSupportsRuntimePowerManagement Device.BusController.UsbController.XhciVersionCompliant |
Device.BusController.UsbController.ImplementAtLeastOneXhciSpcStructForUSB2
xHCI Controllers implement at least one xHCI Supported Protocol Capability structure for USB 2.0
Target Feature |
Device.BusController.UsbController |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) Windows Server 2012 R2 x64 Windows Server 2012 x64 |
Description
Extensible Host Controller Interface (xHCI) controllers implement at least one xHCI Supported Protocol Capability structure for USB 2.0 as described in section 7.2 of the xHCI Specification.This affects backward compatibility with USB 2.0.
Additional Information
Enforcement Date |
Dec. 01, 2010 |
Device.BusController.UsbController.MaintainDeviceStateOnResumeS1andS3
USB host controller maintains device state on resume from S1 or S3
Target Feature |
Device.BusController.UsbController |
Applies to |
Windows 7 Client x86, x64 Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) Windows Server 2012 R2 x64 Windows Server 2008 Release 2 x64 Windows Server 2012 x64 |
Description
For the host controller to maintain the device state, the USB host controller must not issue a USB bus reset on a system sleep state transition from S3 to S0 or from S1 to S0. USB host controllers that are integrated or embedded into the south bridge chipset must decouple the USB bus reset from the PCI bus reset to reduce resume time. Resume operations from S1 or S3 must not generate USB bus resets. A USB bus reset is a reset signal that is sent over the USB bus to USB devices that are connected to the USB host controller. Systems that have a USB keyboard attached are allowed to perform USB bus resets to unlock the system by using a password when the system resumes from S3.For security purposes, the BIOS in a mobile system is allowed to issue a USB bus reset if the system is attached to a docking station that has a hard disk drive (HDD) that is password-locked on first resume. A reset of the HDD password is allowed whether or not the mobile system is docked. The following scenarios are allowed:
Undocked systems with a password-enabled HDD
Docked systems with a password-enabled HDD
Addition or removal of an HDD
If the docking station does not have a native HDD or the docking station does not have a password, the BIOS must not issue a USB bus reset.It is acceptable to allow the controller to lose power in S3 when the system is on battery power.Design Notes: See the Enhanced Host Controller Interface Specification for Universal Serial Bus, Revision 1.0, Appendix A.This requirement does not apply to Systems that Support Connected Standby.
Additional Information
Enforcement Date |
Jun. 01, 2007 |
Device.BusController.UsbController.MustResumeWithoutForcedReset
All USB host controllers work properly upon resume from sleep, hibernation or restart without a forced reset.
Target Feature |
Device.BusController.UsbController |
Applies to |
Windows 7 Client x86, x64 Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) Windows Server 2012 R2 x64 Windows Server 2008 Release 2 x64 Windows Server 2012 x64 |
Description
All USB host controllers work properly upon resume from sleep, hibernation or restart without a forced reset of the USB host controllerDesign Notes:A reset of the entire USB Host Controller results in significantly increased time that it takes for all USB devices to become available after system resume since there could be only one device at address 0 at a time, this enumeration has to be serialized for all USB devices on the bus. We have also seen that resetting the host controller can lead to an illegal SE1 signal state on some host controllers, which in turn can cause some USB devices to hang or drop off the bus. Moreover, devices cannot maintain any private state across sleep resume as that state will be lost on reset.
Additional Information
Enforcement Date |
Jun. 01, 2010 |
Device.BusController.UsbController.PreserveDeviceStateAfterDisableEnable
USB controller preserves device states after a disable and re-enable
Target Feature |
Device.BusController.UsbController |
Applies to |
Windows 7 Client x86, x64 Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) Windows Server 2012 R2 x64 Windows Server 2008 Release 2 x64 Windows Server 2012 x64 |
Description
If a USB controller is disabled and then re-enabled, all devices that were attached to the controller before the USB controller was disabled are required to be present after the USB controller is re-enabled.
Additional Information
Enforcement Date |
Jun. 01, 2009 |
Device.BusController.UsbController.SpecificationCompliance
USB host controller that supports USB functionality complies with the appropriate specification
Target Feature |
Device.BusController.UsbController |
Applies to |
Windows 7 Client x86, x64 Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) Windows Server 2012 R2 x64 Windows Server 2008 Release 2 x64 Windows Server 2012 x64 |
Description
Host controllers that provide USB 1.1 functionality but don't provide USB 2.0 or USB 3.0 functionality must comply with either the Open Host Controller Interface (OHCI) Specification for USB or the Universal Host Controller Interface (UHCI) Design Guide, Revision 1.1. Host controllers that provide USB 2.0 functionality but don't provide USB 3.0 functionality must comply with the Enhanced Host Controller Interface Specification (EHCI) for Universal Serial Bus 2.0. EHCI host controllers must comply with the Enhanced Host Controller Interface Specification for Universal Serial Bus, Revision 1.0 or later.
Additional Information
Enforcement Date |
Jun. 01, 2006 |
Device.BusController.UsbController.SuperSpeedConnectorsSupportHighFullLow
Exposed Super Speed capable connectors support high, full and low speed USB devices
Target Feature |
Device.BusController.UsbController |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) Windows Server 2012 R2 x64 Windows Server 2012 x64 |
Description
Extensible Host Controller Interface (xHCI) controllers are backward-compatible with high-speed, full-speed, and low-speed USB devices. "Backward compatible" means that all USB devices enumerate and function at their intended speeds.This requirement ensures that low-, full-, and high-speed devices continue to work when xHCI controllers become more prevalent in systems. Design Notes: Integrated rate-matching (TT) hubs can be used to achieve this backward compatibility.
Additional Information
Enforcement Date |
Dec. 01, 2010 |
Device.BusController.UsbController.SupportSelectiveSuspend
USB Host Controller supports selective suspend
Target Feature |
Device.BusController.UsbController |
Applies to |
Windows 7 Client x86, x64 Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) Windows Server 2012 R2 x64 Windows Server 2008 Release 2 x64 Windows Server 2012 x64 |
Description
A USB host controller can selectively suspend devices that support the selective suspend feature.
Additional Information
Enforcement Date |
Jun. 01, 2009 |
Device.BusController.UsbController.TestedUsingMicrosoftUsbStack
xHCI Controllers must be tested with Microsoft's xHCI Stack installed
Target Feature |
Device.BusController.UsbController |
Applies to |
Windows 7 Client x86, x64 Windows 8 Client x86, x64 Windows 8.1 Client x86, x64 Windows Server 2012 R2 x64 Windows Server 2008 Release 2 x64 Windows Server 2012 x64 |
Description
Extensible Host Controller Interface (xHCI) Controllers must be tested with Microsoft's xHCI stack installed and enabled on a Windows system.Note: During USB-IF self testing a specific USB Test Stack is installed for testing purposes, this is expected and acceptable.
Additional Information
Enforcement Date |
Mar. 01, 2012 |
Device.BusController.UsbController.UsbifCertification
USB Host Controller is USB IF certified
Target Feature |
Device.BusController.UsbController |
Applies to |
Windows 7 Client x86, x64 Windows 8 Client x86, x64 Windows 8.1 Client x86, x64 Windows Server 2012 R2 x64 Windows Server 2008 Release 2 x64 Windows Server 2012 x64 |
Description
Starting June 1, 2011, USB host controllers must pass USB Implementers Forum (IF) testing.For details see the following link:https://msdn.microsoft.com/windows/hardware/gg463175.aspxNote: Since USB-IF is currently not certifying controllers for Windows on ARM systems, the Windows on ARM controllers are exempt from needing to get full USB-IF certification. Instead the WoA controllers are expected to pass all Windows Hardware Certification tests which include eventing, loop back and registers tests that get run as part of USB-IF certification.
Additional Information
Exceptions |
Systems that Support Connected Standby may pass a subset of USB-IF tests instead of being USB-IF certified, since USB-IF does not certify Systems that Support Connected Standby. |
Enforcement Date |
Jun. 01, 2011 |
Device.BusController.UsbController.XhciAc64Bit
xHCI Controllers set the AC64 bit in the HCCPARAMS register to 1
Target Feature |
Device.BusController.UsbController |
Applies to |
Windows 8 Client x86, x64 Windows 8.1 Client x86, x64 Windows Server 2012 R2 x64 Windows Server 2012 x64 |
Description
xHCI Controllers set the AC64 bit in the HCCPARAMS register to 1 as described in Section 5.3.6 of the xHCI specification.Therefore the controller must support:
64-bit addressing, described in section 5.3.6, and
64-bit register access, described in section 5.1.
Design notes:Checking for AC64 to be set is a simple register check in the compliance driver.To test 64-bit addressing, we will need to require the WLK user's client system to have at least 6GB of RAM. The test will use MmAllocateContiguousMemorySpecifyCache to get physical memory above 4GB. It will validate in some way that the controller can access this memory area.The test will try writing one or more registers using a 64-bit register access and reading back using 64-bit register access to confirm that registers are updated correctly. An example of a reasonable register to test is: "Event Ring Segment Table Base Address Register (ERSTBA)" (section 5.3.2.3.2).If AC64 is not set, there is nothing to test.
Additional Information
Exceptions |
This Requirement does NOT apply to Systems that Support Connected Standby. |
Enforcement Date |
Dec. 01, 2010 |
Device.BusController.UsbController.XhciAddInCardsMapPortsConsistently
xHCI add in cards must map USB 3.0 and USB 2.0 ports consistently
Target Feature |
Device.BusController.UsbController |
Applies to |
Windows 8 Client x86, x64 Windows 8.1 Client x86, x64 Windows Server 2012 R2 x64 Windows Server 2012 x64 |
Description
Consistent USB 2.0 and USB 3.0 port mapping is required to help the operating system to effectively manage the ports. Note: This requirement only applies to add-in cards because port mapping for integrated xHCI controllers should be performed via Advanced Configuration and Power Interface (ACPI). For more information, see the SYSFUND 226 requirement.For Extensible Host Controller Interface (xHCI) add-in cards (where "add-in card" is defined as a card that is not integrated onto the motherboard), the complexity of this requirement varies significantly depending on whether the add-in card contains any internal (integrated or embedded) hubs. If there are no internal hubs, then the port numbering must correlate as given in xHCI v1.x Specification. That is, the first USB 3.0 port must be connected to the same connector as the first 2.0 port, the second with the second, and so on. For example, if the USB 2.0 ports are numbered 1 and 2, and the USB 3.0 ports are numbered 3 and 4, ports 1 and 3 must map to the same connector, and ports 2 and 4 must map to the same connector. For more information, see the xHCI v1.x Specification, sections 4.24.2.1 and 4.24.2.2. If the host does not have any internal hubs, then the remaining text of this requirement can be ignored.However, if there are internal hubs (either integrated or embedded), then the requirement is more involved. Note that strictly speaking, XHCI specification does not allow such hubs for add-in cards because the port mapping information cannot be communicated to the software via ACPI. But through this requirement, we are allowing such hubs and defining the required port mapping. However, this mechanism has some limitations and it does not allow arbitrary configurations that are allowed for integrated controllers when described by ACPI.For add-in cards, xHCI host controllers may implement "integrated hubs" and/or "embedded hubs" as defined in xHCI specification sections 4.24.2.1 and 4.24.2.2. Embedded hubs need not be limited to being on the system board. However, the following limitations apply:
Embedded hubs of add-in cards must be USB 3.0 hubs (this limitation is unique to the scenario of this requirement and not part of the xHCI specification).
An add-in card may have at most 1 integrated hub.
If an add-in card has an integrated hub, it must have only 1 USB2 protocol port on the root hub. This port is the port connected to the integrated hub.
An add-in xHCI card that implements an integrated hub must set the Integrated Hub Implemented (IHI) bit in the USB 2.0 xHCI Supported Protocol Capability structure to '1' for the root hub port connected to an integrated hub (refer to section 7.2.2.1.3.2 of the xHCI specification).
All integrated or embedded hubs must be marked non-removable in their parent ports.
The implementation of integrated hubs determines the External Ports of the controller. External Ports are a concept defined in section 4.24.2 of the xHCI specification to order ports so that they can be mapped to connectors. In all cases, let there be n USB2 protocol External Ports numbered 1 to n, and m USB3 protocol External Ports numbered n+1 to n+m. External Port numbers are assigned to meet the following properties (not defined in the xHCI specification). Note that integrated hubs must be USB 2.0 hubs.
If the xHCI implements an integrated hub, then n, the number of USB2 protocol External Ports, equals the number of downstream facing ports on the integrated hub.
Otherwise, n equals the number of downstream facing USB2 protocol ports on the root hub.
m, the number of USB3 protocol External Ports, equals the number of downstream facing USB3 protocol ports on the root hub.
Assign External Port numbers such that External Ports 1 through n are USB2 protocol ports and External Ports n+1 through n+m are USB3 protocol external ports, and the ordering ports within each protocol is preserved.
If embedded hub(s) are not present: The USB2 protocol External Ports and USB3 protocol External Ports must be mapped to connectors using the "default" mapping described in section 4.24.2.2 of the xHCI specification under the heading "When an Embedded hub is not implemented".If embedded hub(s) are present: The embedded hubs must be USB 3.0 hubs. First determine the connector mapping as it would be without any embedded hubs, using the "default" mapping from section 4.24.2.2 of the xHCI specification. For each embedded hub, both upstream ports must be connected to the same connector. The embedded hubs' downstream ports map to new connectors in the same way as the ports of a non-embedded USB 3.0 hub.Non-exposed connectors: Devices embedded in the host controller must be marked non-removable in their parent ports. If, according to the connector mapping above, a non-removable peripheral device's connector is shared with a second port, the second port must not be connected or connectable to any device. On the other hand, any connector whose port(s) are all marked as removable is considered to be an exposed connector, i.e. it must be physically connectable.Note that if there is no ACPI information, a root hub cannot have both an embedded USB2 device and an integrated USB2 hub; instead, the embedded device must be attached to the integrated hub.
Additional Information
Exceptions |
This Requirement does NOT apply to Systems that Support Connected Standby |
Enforcement Date |
Dec. 01, 2010 |
Device.BusController.UsbController.XhciAddInCardsReportInternalDevices
xHCI controller add in cards correctly report internally attached devices
Target Feature |
Device.BusController.UsbController |
Applies to |
Windows 8 Client x86, x64 Windows 8.1 Client x86, x64 Windows Server 2012 R2 x64 Windows Server 2012 x64 |
Description
Extensible Host Controller Interface (xHCI) controllers must indicate internally attached devices by setting the device removable (DR) bit in the PORTSC register to 1 for every port that has an internally attached device. This applies to controllers that do not have ACPI information. For more information, see section 5.4.8 of the xHCI Specification.
This requirement will prevent the operating system from flagging non-removable devices as removable.
Add-in cards are defined as host controllers that are not integrated onto the motherboard.
Design Notes:Note: This requirement only applies to add-in cards because port mapping for integrated xHCI controllers should be performed via Advanced Configuration and Power Interface (ACPI).
Additional Information
Enforcement Date |
Dec. 01, 2010 |
Device.BusController.UsbController.XhciSupportDebuggingOnAllExposedPorts
xHCI Controllers support USB debugging on all exposed ports
Target Feature |
Device.BusController.UsbController |
Applies to |
Windows 8 Client x86, x64 Windows 8.1 Client x86, x64 Windows Server 2012 R2 x64 Windows Server 2012 x64 |
Description
Extensible Host Controller Interface (xHCI) host controllers are debug-capable on all ports. Ports that have embedded non-removable devices attached do not need to report debug capability.
USB debugging is defined in section 7.6 of the xHCI specification.
This requirement does not apply to add-in card host controllers.
This requirement is effective as of June 2012.
Additional Information
Enforcement Date |
Jun. 01, 2012 |
Device.BusController.UsbController.XhciSupportMsiMsixInterrupts
xHCI Controllers support MSI and/or MSI-X interrupts
Target Feature |
Device.BusController.UsbController |
Applies to |
Windows 8 Client x86, x64 Windows 8.1 Client x86, x64 Windows Server 2012 R2 x64 Windows Server 2012 x64 |
Description
Extensible Host Controller Interface (xHCI) controllers support Message Signaled Interrupts (MSI) and MSI-X interrupts as defined in section 6.8 of the PCI Local Bus Specification, revision 3.0 and section 5.2.6 of the xHCI Specification.
Additional Information
Exceptions |
This Requirement does NOT apply to Systems that Support Connected Standby |
Enforcement Date |
Dec. 01, 2010 |
Device.BusController.UsbController.XhciSupportsMinimum31Streams
xHCI controller must support at least 31 primary streams per endpoint
Target Feature |
Device.BusController.UsbController |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) Windows Server 2012 R2 x64 Windows Server 2012 x64 |
Description
Refer to the eXtensible Host Controller Interface specification, section 4.12.2.This requirement is for the MaxPSASize in the HCCPARAMS to be set to 4 at the minimum to enable ultimate data transfer rate with UAS devices. Storage devices based on the USB Attached SCSI Protocol (UASP) will utilize streams to achieve faster data transfer rates. To enable the best experience with these devices, every xHCI controller will need to support at least 31 primary streams.
Additional Information
Enforcement Date |
Mar. 01, 2012 |
Device.BusController.UsbController.XhciSupportsRuntimePowerManagement
USB xHCI host controllers support runtime power management including, if implemented, runtime wake
Target Feature |
Device.BusController.UsbController |
Applies to |
Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) |
Description
All USB xHCI host controllers must support runtime power management, as required by the eXtensible Host Controller Interface specification, version 1.0, Section 4.15.Runtime is defined as the system working state (S0), including the Connected Standby sub-state of S0 if the controller is tested on a system that supports Connected Standby.Power management of the host controller encompasses software-initiated idle power down (controller low power state such as D3), software-initiated power up, and, optionally, hardware-initiated wake signaling.If the xHCI controller is reported to support runtime wake signaling, it must be able to wake itself successfully upon any of the following events:A) Any port detecting device wake signaling, orB) Any port detecting connect, disconnect, or overcurrent, when the corresponding PORTSC Wake on Xxx bit is set to '1'.For more details, see Section 4.15 of the xHCI specification.To report whether the controller supports runtime wake signaling:- For add-in controllers, the controller's PCI configuration space must accurately report whether the controller is capable of waking up via PME. Note: reporting that the controller supports waking up via PME implies that the controller can both successfully perform PCI wake at runtime, and successfully wake the system from a system low power state, in accordance with the appropriate PCI specification.- For integrated controllers, the ACPI _S0W object must report whether the controller is capable of runtime wake signaling.
Additional Information
Enforcement Date |
Mar. 01, 2012 |
Device.BusController.UsbController.XhciVersionCompliant
USB 3.0 controllers are XHCI version compliant
Target Feature |
Device.BusController.UsbController |
Applies to |
Windows 7 Client x86, x64 Windows 8 Client x86, x64, ARM (Windows RT) Windows 8.1 Client x86, x64, ARM (Windows RT 8.1) Windows Server 2012 R2 x64 Windows Server 2008 Release 2 x64 Windows Server 2012 x64 |
Description
Effective June 1, 2012, USB 3.0 controllers must comply with the Extensible Host Controller Interface (xHCI) Specification version 1.0. and any USB-IF Errata that are released by the USB-IF.
Additional Information
Enforcement Date |
Jun. 01, 2012 |