2 Replies Latest reply on Feb 17, 2017 9:25 AM by Intel Corporation

    Force a Windows PE 5.0 USB flash drive booted on a USB 3.0 port to use USB 2.0 speed


      In order to upgrade our system I have developed a Windows PE 5.0(Windows 8.1's Preinstallation Environment) image/USB drive that can boot our system and copy a Windows Embedded Standard 7 image onto our target hardware platform.  However, our system has a cabling/noise defect that is causing a USB 3.0 thumbdrive to perform extremely slow on file transfers from the USB drive to an internal CFast drive.  I have found that if I use a USB 2.0 extension cable the drive performs much faster.  Fixing the hardware for the field is not an option, it is becoming difficult to find USB 2.0 drives as most companies are obsoleting these drives, and we would prefer not to ship a short USB 2 extension cable with each USB 3.0 drive.


      I have found a SuperUser question, windows 7 - Force a single USB 3.0 port to work as USB 2.0 - Super User, that is very similar to my problem and has gotten me half way to a software workaround.  In it a user has described using a setpci utility to configure the USB controller to use USB 2.0 speeds.  However, this command causes Windows PE to no longer see the already connected USB drive.  If I physically disconnect and reconnect the drive after the setpci commands then Windows PE sees the drive again and it is able to transfer the files at reasonable speeds.  I'm looking for a way in software to trigger the rediscovery of the USB drive.  I have been unsuccessful in using devcon to get Windows to detect the drive or rescan the USB Hub 3.0 without a restart.


      Are there some additional setpci calls that would directly cause the Intel Chipset Series 7 PCH to rescan/restart the USB Hub 3.0 and relay to Windows the drive is connected?  I'm a Windows developer so I'm having difficulty understanding the information in the datasheet that describes a USB Command register that does have a reset port bit, but I'm not sure how to use setpci to interact with these registers or if this USB Command reset would do what I'm looking for.