USB 2.0 & 3.0 SCSI Compliance test (LOGO)

This automated test verifies Small Computer System Interface (SCSI) Command Descriptor Blocks (CDBs) sent to the Universal Serial Bus (USB) device.

Test details

   
Specifications
  • Device.Storage.Hd.Usb3.Compliance
  • Device.Storage.Hd.Usb.Compatibility
  • Device.Storage.Hd.Uas.Compliance
Platforms
  • Windows 10, client editions (x86)
  • Windows 10, client editions (x64)
  • Windows Server 2016 (x64)
Supported Releases
  • Windows 10
  • Windows 10, version 1511
  • Windows 10, version 1607
  • Windows 10, version 1703
  • Windows 10, version 1709
  • Windows 10, version 1803
  • Windows 10, version 1809
  • Windows 10, version 1903
  • Next update to Windows 10
Expected run time (in minutes) 5
Category Compatibility
Timeout (in minutes) 300
Requires reboot false
Requires special configuration false
Type automatic

 

Additional documentation

Tests in this feature area might have additional documentation, including prerequisites, setup, and troubleshooting information, that can be found in the following topic(s):

Running the test

Before you run the test, complete the test setup as described in the test requirements: Hard Disk Drive Testing Prerequisites

Troubleshooting

For generic troubleshooting of HLK test failures, see Troubleshooting Windows HLK Test Failures.

For troubleshooting information, see Troubleshooting Device.Storage Testing.

The test writes the results to the log file Scsicompliance.wtl and Scsicompliance.wtl.txt. Use the results to determine:

  • If a device is compliant with the SCSI specification.

  • The optional SCSI commands that are supported by a device.

To pass, the USB device must support every mandatory command and must be fully compliant with those commands. Each command has a different threshold for pass or fail, and the expectations are specified explicitly in the test and in the log file.

Optional commands are also tested. If a device supports the optional commands and the commands are found to be non-compliant, the test fails. If the device does not support optional commands, the test passes.

Optional commands are also tested. If a device supports the optional commands and the commands are found to be non-compliant, the test fails. If the device does not support optional commands, the test passes.

During the test, if you are having trouble removing a LUN that is failing or are unable to create a LUN from the storage controller, follow these steps:

  1. Prior to running this test, verify that the storage device works properly. Open Diskmgmt.msc and select disk. Make sure you can put the device Online and in initialized state.

  2. Restart the Windows HLK test computer.

  3. Select and rerun the USB SCSI Compliance Test. Do not run any test before it.

  4. If the test failed, run the individual failing command data blocks (cdbs) one at a time with the logging verbosity level set to 4 (the highest level of test logging). This will show what data was sent and what data was returned. We have seen previous instances where test fail after several cdbs were completed but pass standalone. If this occurs, there is a problem in the firmware or the test. There might have been a device reset leading to the device falling off the bus and resulting in subsequent commands to fail. To resolve this issue, follow these steps:

    1. Copy the test binary (Scsicompliance.exe) from the Windows HLK controller. This file is located here: \\controllername\tests\[processorarchitectureofyourclient]\NTTEST\DriversTest\storage\wdk\

    2. Copy the wttlog.dll file from the Windows HLK controller. This file is located here: \\<controllername>\Tests\<processorarchitectureofyourclient >\wtt

    3. Place both of these files on the test computer in a separate folder.

    4. From a command prompt, from the directory containing the test binary, type the following command: Scsicompliance.exe /device <deviceID> /verbosity 4 /operation test /scenario <scenario> /Version <version> /protocol <protocol> /CDB <failingcdbname>

      Note

         DeviceID, scenario, version and protocol values can be found by checking the repro line within the test log. The failingcdbname can be found by running the test binary with the /?option (scsicompliance.exe /?).

       

    5. Go back to the same directory and review the results to see if you can determine the reason for the test failure.

    6. If you need additional help, collect the txt and wtl logs and share the logs with Microsoft Customer Support Services.

More information

Command syntax

Command option Description

Scsicompliance.exe

The options for the test are listed below.

/device

The device which test is to run on. Example: /Device <physical device path>

/operation

The operation to run. Example: /Operation Test

/scenario

The feature to be tested for. Example: /Scenario USBDisk

/version

Device's USB Version number. Example: /version 3

/protocol

Device's USB protocol. Example: /protocol UAS

/verbosity

The level of logging verbosity. Larger values cause more verbose output. Example: /Verbosity 4

Note

   For command line help for this test binary, type /?.

 

File list

File Location

Scsicompliance.exe

<[testbinroot]>\nttest\driverstest\storage\wdk

 

Parameters

Parameter name Parameter description
DiskDeviceObjLink Device path of disk to test EX: \\.\disk0
WDKDeviceID Instance path of device to test
LoggingVerbosity LoggingVerbosity: Detail of logging. Levels are cumulative. 0 = Assertions and results. 1 = Details (default). 2 = CDBs , data, and sense info. 3 = Debug and detailed Mode page information. 4 = Memory usage
ScenarioId Scenario test name: Possible values: USBDisk, USBCardReader
Options Options
ScsiComplianceDevice Device path
LLU_NetAccessOnly User account for accessing test fileshare.
LLU_LclAdminUsr User account for running the test.
OperationId Operation to run
Version USB Version: Possible values: 2, 3
Protocol USB Protocol: Possible values: BOT, UAS
QueryIsUsb3
QueryUAS
QueryRMB
Destructive (0,1) 0=Passive, 1=Destructive
QueryUFDRotationalMedia Queries gatherer to retrieve property
QueryWTGDevice Queries gatherer to retrieve property
RM Rotational media: 0 or 1