Another day, another hiccup in the usually amazing procedure of using WDS for quick mass deployments of OS images. Today’s annoyance comes courtesy of using an Intel NUC that only has USB 3.0 ports and no way to force them into USB 2.0 mode. Why is this an issue? Because after deploying a Windows 7 image via WDS and PXE, you’re left with the Setup Windows screen uncontrollable via keyboard or mouse.
This is a documented and well-known issue with the Intel NUC NUC5CPYH. As a matter of fact, for fresh installs of Windows 7 (via USB), there’s an official Intel tool that will modify the setup files to alleviate your pain. Very nice. If you want to go the manual route, there’s also tutorials to do that as well.
But what about us Sysadmins who want to use WDS? I’ve had wonky results with using the WDS console to add USB 3.0 drivers for PnP install at setup. I finally decided to just mount the specific image with DISM and inject the drivers myself to force the issue. There’s actually 2 sets of drivers to install: one for a virtual hub and one for the actual USB 3.0 ports itself. But beware! You can’t just grab the smaller .WIM file you think you would want to modify. You first must export from WDS to generate a catalog and resource file to get an injectable .WIM
- In the WDS console, find the install image you want to inject the drivers into and export it somewhere. Right-click and export… In this example, I’m going to call it “biz-usb3.wim“
- Download the USB 3.0 drivers from Intel’s site
- Extract the drivers, specifically HCSwitch and Win7, to a folder called usb3. Move the usb3 folder into the same place your biz-usb3.wim is located.
- Create a temporary mount location for your .wim image to be manipulated in. Make a folder and call it mount.
- Open an admin CMD console and CD into the directory where your biz-usb3.wim, mount, and usb3 folder are located.
- Mount the biz-usb3.wim image using DISM:
dism /mount-wim /wimfile:"biz-usb3.wim" /index:1 /mountdir:"mount"
- After the mounting is complete, inject the drivers:
dism /image:"mount" /add-driver /driver:"usb3" /recurse
- Save changes to the image:
dism /unmount-wim /mountdir:"mount" /commit
- Import the .wim back into WDS and name it whatever you want. Now would be a good time to disable the old image to make sure you don’t confuse them during deployment. You can delete if you want, but I find disabling prevents any accidental screw-ups from happening. Plus, the delta should only be a few megabytes, so no need to stress about storage (more on this below).
If all was done correctly, you should be able to PXE boot or whatever into your WDS server and deploy the Windows 7 image to the NUC with USB 3.0 drivers enabled. For what it’s worth, there isn’t much of a difference going on here from the original tutorial; I’m just using similar steps to edit a WDS image instead of a raw Windows 7 install image. The only extra step is exporting the .WIM from WDS to generate a resource catalog.
A few gotchas:
- If upon PXE booting you see 2x the new image listed, don’t panic. You probably just did all your work in WDS’s image folder itself. This isn’t a bad thing, just kind of sloppy. I would recommend deleting the larger of the two .WIM files (in this example, biz-usb3.wim). The imported one automatically was diff’d and only the delta is stored. WDS is smart enough to not waste gigabytes of space when the base image already has 99% of the stuff you need.