> ## Documentation Index
> Fetch the complete documentation index at: https://docs.derekdinh.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Diagnosing and Resolving Windows Device Driver Problems

> Spot driver issues in Device Manager, update or roll back drivers, reinstall problem devices, and use Driver Verifier to isolate the source of instability.

Driver problems are behind a surprising share of Windows issues — BSODs, devices that stop working, audio or display glitches, and unexplained system instability are all common symptoms of a bad, outdated, or missing driver. Windows provides several built-in tools to detect, repair, and diagnose driver issues without requiring third-party software. This guide walks you through each stage of driver troubleshooting, from spotting yellow warning flags in Device Manager all the way to using Driver Verifier to catch a driver that only misbehaves under load.

## Step 1 — Identify Driver Issues in Device Manager

Device Manager is the authoritative source for hardware and driver status on a Windows system.

<Steps>
  <Step title="Open Device Manager">
    ```powershell theme={null}
    devmgmt.msc
    ```

    Or right-click **Start → Device Manager**.
  </Step>

  <Step title="Look for flagged devices">
    Device Manager uses visual indicators to flag problems:

    * **Yellow exclamation mark (!)** — The device has a driver error or configuration problem.
    * **Red X** — The device is disabled.
    * **Down arrow** — The device has been manually disabled.
    * **Question mark (?)** — The device is unrecognized and has no driver installed.

    Click **View → Show hidden devices** to reveal devices that are not currently connected but still have driver entries — these ghost entries can sometimes cause conflicts.
  </Step>

  <Step title="Read the device error code">
    Double-click any flagged device and go to the **General** tab. The **Device status** field shows a Windows error code. Note the code number — for example, **Code 43** (device reported failure), **Code 10** (device cannot start), or **Code 28** (driver not installed).

    ```powershell theme={null}
    # List all devices with non-OK status via PowerShell
    Get-PnpDevice | Where-Object { $_.Status -ne 'OK' } |
        Select-Object Status, Class, FriendlyName, InstanceId
    ```
  </Step>

  <Step title="Check the driver details">
    On the flagged device's Properties dialog, go to the **Driver** tab to see the driver provider, version number, and date. An old driver date (multiple years old) or a driver signed by a generic provider rather than the hardware manufacturer is a strong indicator to update.
  </Step>
</Steps>

<Note>
  If Device Manager shows no flagged devices but you still suspect a driver issue (e.g., intermittent crashes), the problem driver may be loading successfully but misbehaving only under certain conditions. Skip to the **Driver Verifier** section for those scenarios.
</Note>

***

## Step 2 — Update Drivers via Device Manager

For devices flagged in Device Manager, the quickest first step is to let Windows search for an updated driver automatically. This works well for common peripherals and many chipset components.

<Steps>
  <Step title="Right-click the device and choose Update driver">
    In Device Manager, right-click the device and select **Update driver**.
  </Step>

  <Step title="Search automatically for drivers">
    Choose **Search automatically for drivers**. Windows will query Windows Update for a newer, compatible driver. If found, it will be downloaded and installed automatically.
  </Step>

  <Step title="Check Windows Update for additional driver options">
    If Device Manager's automatic search finds nothing new, navigate to **Settings → Windows Update → Advanced options → Optional updates → Driver updates**. Manufacturer-supplied drivers are often published here separately from security updates.

    ```powershell theme={null}
    # Open Optional Updates directly
    Start-Process "ms-settings:windowsupdate-optionalupdates"
    ```
  </Step>

  <Step title="Restart if prompted">
    Most driver updates take effect only after a reboot. Save open work and restart when prompted.
  </Step>
</Steps>

***

## Step 3 — Update Drivers from the Manufacturer's Website

Windows Update does not always carry the latest driver versions, particularly for graphics cards, network adapters, and specialized peripherals. The manufacturer's site is the authoritative source for the most current, feature-complete driver.

<Steps>
  <Step title="Identify the exact hardware model">
    ```powershell theme={null}
    # Get manufacturer and model of the computer
    Get-CimInstance Win32_ComputerSystem | Select-Object Manufacturer, Model

    # For a specific device, get its hardware ID
    Get-PnpDevice -FriendlyName "*<device name>*" | Get-PnpDeviceProperty -KeyName 'DEVPKEY_Device_HardwareIds' |
        Select-Object -ExpandProperty Data
    ```
  </Step>

  <Step title="Navigate to the manufacturer's driver download page">
    Common driver sources by device type:

    * **NVIDIA GPU:** [nvidia.com/Download/index.aspx](https://www.nvidia.com/Download/index.aspx)
    * **AMD GPU:** [amd.com/en/support](https://www.amd.com/en/support)
    * **Intel (all components):** [intel.com/content/www/us/en/download-center](https://www.intel.com/content/www/us/en/download-center/home.html)
    * **Realtek audio/NIC:** Check your motherboard manufacturer's support page.
    * **Laptop/OEM:** Use the device manufacturer's support site (Dell, HP, Lenovo, etc.) and search by service tag or model number.
  </Step>

  <Step title="Download and run the installer">
    Download the driver package for your OS version and architecture. Run the installer as administrator. Most GPU driver installers offer **Express** and **Custom** installation options — choose **Custom** to perform a clean install and check **Perform a clean installation** if available.
  </Step>

  <Step title="Alternatively, install via Device Manager using a downloaded INF">
    If the driver ships as a `.inf` file rather than a standalone installer:

    ```powershell theme={null}
    # Install a driver from an INF file (admin required)
    pnputil /add-driver C:\Path\To\driver.inf /install
    ```
  </Step>
</Steps>

<Tip>
  For GPU drivers specifically, a clean install using **Display Driver Uninstaller (DDU)** in Safe Mode before installing a new driver avoids residual registry entries that can cause instability. DDU is free and widely recommended by GPU vendors.
</Tip>

***

## Step 4 — Roll Back a Driver to a Previous Version

If problems started immediately after a driver update, rolling back to the previously installed version is the fastest fix.

<Steps>
  <Step title="Open the device properties in Device Manager">
    Right-click the device → **Properties → Driver** tab.
  </Step>

  <Step title="Click Roll Back Driver">
    The **Roll Back Driver** button is only available if Windows stored a copy of the previous driver. Click it and select a reason when prompted.

    <Note>
      If **Roll Back Driver** is greyed out, Windows does not have a saved copy of the previous driver. You will need to download the older version manually from the manufacturer's site and install it.
    </Note>
  </Step>

  <Step title="Prevent Windows from automatically reinstalling the newer driver">
    After rolling back, Windows Update may reinstall the problematic newer driver automatically. To block this temporarily:

    ```powershell theme={null}
    # Open Windows Update advanced settings to defer optional driver updates
    Start-Process "ms-settings:windowsupdate-options"
    ```

    For a stronger block using Group Policy (domain or Pro/Enterprise):

    ```powershell theme={null}
    # Open Group Policy Editor
    gpedit.msc
    ```

    Navigate to **Computer Configuration → Administrative Templates → Windows Components → Windows Update** and enable **Do not include drivers with Windows Updates**.
  </Step>

  <Step title="Restart and verify stability">
    Reboot and confirm that the original symptoms are resolved. If stable, report the problematic driver version to the vendor.
  </Step>
</Steps>

***

## Step 5 — Uninstall and Reinstall a Driver

A full uninstall and reinstall clears all cached driver files and registry entries — more thorough than a rollback or update when the driver installation itself is corrupt.

<Steps>
  <Step title="Uninstall the device from Device Manager">
    Right-click the device → **Uninstall device**. In the confirmation dialog, check **Delete the driver software for this device** (or **Attempt to remove the driver for this device** on newer Windows versions) to remove the driver package from the driver store, not just the device.
  </Step>

  <Step title="Scan for hardware changes to trigger automatic reinstall">
    After uninstalling, in Device Manager click **Action → Scan for hardware changes**. Windows will detect the device and attempt to install the best available driver from its local store or Windows Update.
  </Step>

  <Step title="Remove stubborn driver packages from the driver store">
    Sometimes a corrupt driver package persists in the store even after an uninstall. Use `pnputil` to manage it:

    ```cmd theme={null}
    :: List all third-party driver packages in the store
    pnputil /enum-drivers

    :: Remove a specific driver package by its published name (e.g., oem5.inf)
    pnputil /delete-driver oem5.inf /uninstall
    ```
  </Step>

  <Step title="Reinstall the driver from the manufacturer's site">
    Download and install a fresh copy of the driver as described in **Step 3**. A clean reinstall is more reliable than relying on Windows' automatic detection after removal.
  </Step>
</Steps>

***

## Step 6 — Use Driver Verifier for Instability Diagnosis

Driver Verifier is a built-in Windows tool that stress-tests loaded drivers by imposing additional memory checks and monitoring for rule violations. A driver that passes normal use but occasionally causes crashes will reliably trigger a BSOD almost immediately under Driver Verifier — making it much easier to identify the specific culprit.

<Warning>
  Driver Verifier **will** cause your system to crash (BSOD) when it detects a violation. It is designed for diagnosis, not everyday use. Only run it in a controlled test environment or with the user's explicit knowledge. Always disable it once testing is complete. Do not enable it on production servers.
</Warning>

<Steps>
  <Step title="Launch Driver Verifier Manager">
    ```cmd theme={null}
    verifier
    ```

    Run from an elevated Command Prompt or the **Run** dialog (Win + R).
  </Step>

  <Step title="Create a custom configuration">
    Select **Create standard settings** and click **Next**.

    Choose **Select driver names from a list** to target specific third-party drivers rather than all drivers (targeting all drivers can make the system unbootable before you can diagnose anything).
  </Step>

  <Step title="Select drivers to verify">
    The list shows all currently loaded drivers. To find third-party drivers (the most likely culprits), click the **Provider** column header to sort. Uncheck Microsoft-signed drivers and select only third-party drivers — network adapters, GPU drivers, audio drivers, and security software drivers are the most common sources of instability.

    ```powershell theme={null}
    # List non-Microsoft drivers currently loaded
    Get-CimInstance Win32_SystemDriver |
        Where-Object { $_.PathName -notmatch 'system32\\drivers' -or
                       (Get-AuthenticodeSignature $_.PathName).SignerCertificate.Subject -notmatch 'Microsoft' } |
        Select-Object Name, PathName, State
    ```
  </Step>

  <Step title="Restart and reproduce the problem">
    After clicking **Finish**, restart the machine. Driver Verifier is now active. Use the system normally and attempt to reproduce the original crash or instability. If a verified driver violates memory rules, Windows will BSOD immediately and write a minidump.
  </Step>

  <Step title="Analyze the minidump to identify the offending driver">
    After a Driver Verifier–triggered BSOD, analyze the minidump in WinDbg:

    ```windbg theme={null}
    !analyze -v
    ```

    The output will explicitly name the driver that violated the rules under the `MODULE_NAME` and `IMAGE_NAME` fields.
  </Step>

  <Step title="Disable Driver Verifier after testing">
    Once you have identified the problem driver (or confirmed no violations occur), disable Driver Verifier to restore normal operation:

    ```cmd theme={null}
    :: Disable Driver Verifier (takes effect after reboot)
    verifier /reset
    ```

    Reboot to fully disable verification.

    <Note>
      If the system BSODs on every boot after enabling Driver Verifier and you cannot get to the desktop to run `verifier /reset`, boot into Safe Mode — Driver Verifier does not run in Safe Mode — and then execute `verifier /reset`.
    </Note>
  </Step>
</Steps>

***

## Quick Diagnostic Reference

The entries below address common driver failure codes and device-specific scenarios that you can resolve without going through the full troubleshooting workflow.

<Accordion title="Device shows Code 43 (Device has reported a problem)">
  Code 43 means the device driver itself reported an error to Windows. For USB devices, this is often resolved by unplugging and replugging the device, trying a different port, or updating the USB host controller drivers. For GPUs, Code 43 often indicates a driver or hardware fault — update the GPU driver first, and if it persists, test the GPU in another system.
</Accordion>

<Accordion title="Device shows Code 10 (Device cannot start)">
  Code 10 is a general device failure. Start by uninstalling and reinstalling the driver (Step 5). If the issue persists, check the device in another machine or slot to determine whether the hardware itself is faulty.
</Accordion>

<Accordion title="Audio suddenly stopped working after a Windows Update">
  Check Device Manager → Sound, video and game controllers for a flagged audio device. Roll back the audio driver (Step 4) or visit the audio chipset manufacturer's site (Realtek, IDT, Conexant) for the latest driver. Also check that the audio service is running:

  ```powershell theme={null}
  Get-Service -Name Audiosrv | Select-Object Status, StartType
  Start-Service -Name Audiosrv
  ```
</Accordion>

<Accordion title="Network adapter disappears from Device Manager after wake from sleep">
  This is a common power management issue with network drivers. Open the adapter's properties → **Power Management** tab and uncheck **Allow the computer to turn off this device to save power**. Also update to the latest NIC driver from the manufacturer.

  ```powershell theme={null}
  # Disable power management for all network adapters
  Get-NetAdapter | ForEach-Object {
      $adapter = $_
      $powerMgmt = Get-CimInstance MSPower_DeviceEnable -Namespace root\wmi |
          Where-Object { $_.InstanceName -match [regex]::Escape($adapter.InterfaceDescription) }
      if ($powerMgmt) { Set-CimInstance -InputObject $powerMgmt -Property @{Enable = $false} }
  }
  ```
</Accordion>

***

## Escalation Criteria

Escalate to Tier 2 or a hardware specialist if any of the following apply:

* Device Manager shows no driver issues, Driver Verifier triggers BSODs but names only Microsoft kernel components, and the problem persists after a clean OS reinstall — points to a hardware fault (bad RAM, failing PCIe slot, or a damaged device).
* The device is not recognized at all across multiple machines or ports — the hardware itself is likely defective and should be replaced under warranty.
* A critical business application requires a specific older driver version that is incompatible with a required security update — escalate to application owners and the security team for a risk assessment.
* Driver Verifier consistently names the same third-party vendor driver and the vendor has no updated version available — escalate to the vendor's enterprise support channel with the WinDbg minidump analysis output.
* The machine is a domain-joined device where driver deployment is controlled by SCCM or Intune — driver updates must be packaged and deployed through the standard change management process by the systems team.
