Many of our embedded hardware users value standardization and consistency. Long lifecycle motherboards and components give integrators and device builders the peace of mind in knowing that their hardware will be supported for as long as possible. Software support is often of equal concern, but as new software revisions are released, particularly new operating system versions, it can be increasingly difficult to get the hardware and software to cohabitate peacefully.
OS installation problems can have a number of root causes, but the most common scenario that we’re seeing related to Windows 7 installation occurs when users attempt to utilize a Windows 7 USB installer (think thumb drive or USB-connected CD/DVD reader) on a PC that features a Skylake processor. Early on in the process users will suddenly lose keyboard and mouse functionality and receive an error message indicating, “A required CD/DVD device driver is missing. If you have a driver floppy disk, CD, DVD or USB flash drive, please insert now”, leaving them at a complete impasse. Without the use of a keyboard or mouse, interacting with the system is impossible and even if control were possible (through a PS/2 port perhaps), the USB port is no longer able to transfer the necessary data.
So, What’s Happening Here?
With the release of their 6th Generation Skylake processor family, Intel removed the Enhanced Host Controller Interface (EHCI), which had previously been responsible for hardware communication over USB 2.0 connections. Skylake powered systems now handle USB functionality (both USB 2.0 & USB 3.0) through Extensible Host Controller Interface (xHCI). Unfortunately, Windows 7 does not natively support communication via xHCI and contains no built-in drivers for USB 3.0. As a result, installing Windows 7 via USB on a Skylake-powered system requires the additional step of first installing xHCI drivers to allow for the necessary file transfer and peripheral support to install the OS.
Intel, for their part, have acknowledged the potential implications of removing EHCI support for users who still rely on Windows 7. In this white paper Intel addresses the issues, which initially present as the WinPE kernel starts, following BIOS control being transferred to the boot loader:
The USB specific issues start here as the xHCI driver is not available in the WinPE kernel. The BIOS is continuing to emulate storage services so that the boot loader is unaware that the physical storage device relies on the USB controller stack. When all of the drivers are loaded into the RAM drive, execution is handed off to the WinPE kernel. At this point in time, the WinPE kernel ceases to utilize the BIOS routines, and instead uses self-contained services within the RAM drive. The WinPE kernel will not be able to use the xHCI controller hardware as there is no xHCI driver in the RAM drive and access to the OS source files is severed.
Things are further complicated by the fact that not only is the OS install now halted, but installing the appropriate drivers to get the USB ports to function properly has now also been rendered more complex. The Intel white paper continues:
In addition to the primary issue of OS installation is the secondary issue of installing the xHCI driver, as the xHCI driver is not part of the Windows 7 installation package. Therefore, the xHCI drivers will not be copied onto the OS target drive, either HDD or SSD, etc. If the driver can be acquired via a network (wired or wireless), or some other non-USB interface, then the problem is resolved, and the xHCI controller will now be visible. However, if the platform is dependent on getting the xHCI driver from the OS install source path (USB-attached drive or key) then there is an issue.
How to Install Windows 7 on a Skylake PC
As outlined above, a successful install of Windows 7 on a Skylake-powered PC requires that xHCI drivers first be integrated into the installation media. Creation of the appropriate installation media will require a functional Windows PC and a process called Slipstreaming, which adds additional updates or drivers to existing installation files. In this instance the xHCI drivers will be Slipstreamed along with the Windows 7 install. While the objective is the same regardless of the system, the tools to accomplish that goal, as well as the particular driver files required, can vary from complete, single-click automation to multi-step copy-paste and script running.
As an example, the instructions for installing Windows 7 on our popular Nuvo-5000 system can be found here. As you can see, in addition to a computer already running Windows, you’ll need the xHCI controller driver files, and an existing Windows 7 USB installer. If you don’t have the later, then you’ll additionally need your original Windows 7 installation media or activation key, a USB thumb drive, a software utility to create an ISO image and a utility to create a bootable USB drive from the ISO file.
While this process isn’t particularly complicated or technically challenging, it’s important to ensure you’ve allocated the time and resources necessary for a smooth and successful deployment of this popular operating system. We want our partners to be successful regardless of whether they are prototyping, testing and deploying our systems, or planning a major hardware rollout, so it’s important to understand the steps that will be required should you need to install Windows 7 on your newer hardware.
Windows 7 Installation Resources
For more step-by-step guides visit our How-To section. Have suggestions for other projects we should tackle here on the I/O Hub? Let us know in the comment below.