Windows 10
Windows 10

Most of the time I spend on my computer is in the Linux world, however I do have a Windows laptop for the non-open applications I need to use from time to time. One of those applications is the video conferencing tool I use for work. Last Wednesday I was working from home, switched to my Windows laptop to prepare for the morning scrum conference, only to find Windows had decided to update and restart itself. Annoying, but not a big deal, until I logged in and realized that all my drivers for networking, bluetooh, usb audio and usb video were all disabled.

Windows 10 Device Manager Screenshot

I was able to download Wi-Fi and Bluetooth drivers to a USB stick and reinstall them on my Windows laptop. However, USB audio and video devices use drivers that are built directly into the Windows operating system. Whenever I attempted to update these driver in the device manager, I’d get the following error:

Error message when attempting to update drivers

Through a series of searches, I eventually discovered a log file named C:\Windows\INF\setupapi.dev.log:

>>>  [Device Install (DiShowUpdateDevice) - USB\VID_262A&PID_1100&MI_01\6&213CF812&1&0001]
>>>  Section start 2016/08/17 14:19:36.912
      cmd: "C:\WINDOWS\system32\mmc.exe" "C:\WINDOWS\system32\compmgmt.msc" /s
     dvi: {DIF_UPDATEDRIVER_UI} 14:35:31.130
     dvi:      Default installer: Enter 14:35:31.133
     dvi:      Default installer: Exit
     dvi: {DIF_UPDATEDRIVER_UI - exit(0xe000020e)} 14:35:31.137
     ndv: {Update Driver Software Wizard for USB\VID_262A&PID_1100&MI_01\6&213CF812&1&0001}
     sto:      {Setup Import Driver Package: c:\windows\inf\wdma_usb.inf} 14:35:35.293
!    sto:           Unable to determine presence of driver package. Error = 0x00000002
     inf:           Provider: Microsoft
     inf:           Class GUID: {4d36e96c-e325-11ce-bfc1-08002be10318}
     inf:           Driver Version: 10/29/2015,10.0.10586.0
     sto:           {Copy Driver Package: c:\windows\inf\wdma_usb.inf} 14:35:35.308
     sto:                Driver Package = c:\windows\inf\wdma_usb.inf
     sto:                Flags          = 0x00000007
     sto:                Destination    = C:\Users\myusername\AppData\Local\Temp\{360925e0-0e26-7643-bd01-ff3a8203caf7}
     sto:                Copying driver package files to 'C:\Users\myusername\AppData\Local\Temp\{360925e0-0e26-7643-bd01-ff3a8203caf7}'.
     flq:                Copying 'c:\windows\inf\wdma_usb.inf' to 'C:\Users\myusername\AppData\Local\Temp\{360925e0-0e26-7643-bd01-ff3a8203caf7}\wdma_usb.inf'.
!!!  flq:                Error installing file (0x00000002)
!!!  flq:                Error 2: The system cannot find the file specified.
!    flq:                     SourceFile   - 'c:\windows\inf\USBAUDIO.sys'
!    flq:                     TargetFile   - 'C:\Users\myusername\AppData\Local\Temp\{360925e0-0e26-7643-bd01-ff3a8203caf7}\USBAUDIO.sys'
!!!  cpy:                Failed to copy file 'c:\windows\inf\USBAUDIO.sys' to 'C:\Users\myusername\AppData\Local\Temp\{360925e0-0e26-7643-bd01-ff3a8203caf7}\USBAUDIO.sys'. Error = 0x00000002
!!!  flq:                SPFQNOTIFY_COPYERROR: returned SPFQOPERATION_ABORT.
!!!  flq:                Error 995: The I/O operation has been aborted because of either a thread exit or an application request.
!!!  flq:                FileQueueCommit aborting!
!!!  flq:                Error 995: The I/O operation has been aborted because of either a thread exit or an application request.
!!!  sto:                Failed to copy driver package to 'C:\Users\myusername\AppData\Local\Temp\{360925e0-0e26-7643-bd01-ff3a8203caf7}'. Error = 0x00000002
     sto:           {Copy Driver Package: exit(0x00000002)} 14:35:35.362
     sto:      {Setup Import Driver Package - exit (0x00000002)} 14:35:35.365
!!!  ndv:      Driver package import failed for device.
!!!  ndv:      Error 2: The system cannot find the file specified.
     ndv:      Installing NULL driver.
     dvi:      {Plug and Play Service: Device Install for USB\VID_262A&PID_1100&MI_01\6&213CF812&1&0001}
!    ndv:           Installing NULL driver!
     dvi:           {DIF_ALLOW_INSTALL} 14:35:35.****
     dvi:                Default installer: Enter 14:35:35.421
     dvi:                Default installer: Exit
     dvi:           {DIF_ALLOW_INSTALL - exit(0xe000020e)} 14:35:35.421
     dvi:           {DIF_REGISTER_COINSTALLERS} 14:35:35.422
     dvi:                Default installer: Enter 14:35:35.422
     dvi:                Default installer: Exit
     dvi:           {DIF_REGISTER_COINSTALLERS - exit(0x00000000)} 14:35:35.423
     dvi:           {DIF_INSTALLDEVICE} 14:35:35.423
     dvi:                Default installer: Enter 14:35:35.424
!    dvi:                     Installing NULL driver!
     dvi:                     Install Null Driver: Removing device sub-tree. 14:35:35.425
     dvi:                     Install Null Driver: Removing device sub-tree completed. 14:35:35.429
     dvi:                     Install Null Driver: Restarting device. 14:35:35.431
     dvi:                     Install Null Driver: Restarting device completed. 14:35:35.435
     dvi:                     Install Device: Starting device. 14:35:35.435
     dvi:                     Install Device: Starting device completed. 14:35:35.448
     dvi:                Default installer: Exit
     dvi:           {DIF_INSTALLDEVICE - exit(0x00000000)} 14:35:35.448
     ump:      {Plug and Play Service: Device Install exit(00000000)}
     ndv: {Update Driver Software Wizard exit(00000002)}
<<<  Section end 2016/08/17 14:35:37.358
<<<  [Exit status: FAILURE(0x00000002)]

So it seemed that the latest patch had somehow removed USBAUDIO.sys, or caused the INF file to search for it in the wrong location (it’s actually located in C:\Windows\System32\Drivers). However copying the file to the location mentioned in the logs would give me an error about the drivers not being signed. I’d get the same error from the Microsoft WiFi Miniport Adapter.

Unsigned driver error when attempting to update Wi-Fi screenshot

I assume the latest update broke my system’s USB support. Running the following command generates a listing of recently installed Windows updates1:

wmic qfe list brief /format:htable > "%USERPROFILE%\hotfix.html"
List of recent updates

I attempted to uninstall the most recent update. I still couldn’t install USB audio/video drivers. I then attempted to roll back to a system restore checkpoint. Some of my applications that depending on the C++ runtimes installed at that checkpoint stopped working and had to be reinstalled, but the USB issue still persisted.

Uninstalling security update screenshot

Any searches I preformed for this issue gave me a pretty big spread on results with multiple issues dating back to Windows 7 and XP. A post to SuperUser2 on the issue went unanswered and another post on Microsoft answers was given a worthless cookie-cutter response3. The only real support I got was from a supposed Microsoft employee (johnwinkmsft) on Reddit who at least attempted to seriously look at my issue4.

Eventually I started preforming searches relating directly to the Anniversary update. I found a post somewhere that suggested running Microsoft’s Windows10Upgrade28084.exe, which is a manual install of the anniversary update. Even though I had checked for updates multiple times with the built-in Windows Update tool, when I ran the anniversary update installer, it said my build was behind. I allowed it to install the update and rebooted. Afterwards, I went through the annoying first-time boot screen in which I had to be sure and disable, once again, all the ways Microsoft seeks to monitor my personal usage information.

Custom Windows 10 Privacy Settings Screenshot 1
Custom Windows 10 Privacy Settings Screenshot 2

When I finally got back to the desktop, all my USB devices were once again working. The summary KB3176493 mentions security fixes for kernel mode drivers5. I suspect that KB3176493 may have been dependent on the Anniversary update/build of Windows 10, and that the signing key, or the location for key drivers changed between the two builds. Still, that doesn’t explain why the issue didn’t resolve by uninstalling the update or dropping back to a system restore point.

I’m not a Windows system expert by any means. Had this been an issue on my Linux system, I’d have the domain knowledge to diagnose this issue a lot faster. I also believe I would have had been response from the developer community, such as when I made several posts on various mailing lists and bug trackers in an attempt to get Wi-Fi and bluetooth working on my laptop. I can understand why Windows support is much more difficult with a much larger installation base of mostly non-tech users. In the past, I cannot recall any security updates for Windows that have broken my system, or at least not as severely as this case. It’s troublesome the number of issues users have been reporting with the Windows 10 Anniversary Update, as well as the KB3176493 patch causing printing bugs6. Still I’m glad I continued to diagnose this issue and not resort to the 1990s solution of reinstalling Windows.