> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://helpdesk.ggcircuit.com/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Network Driver Problems? No Problem!


Practical, copy-ready step-by-step for techs: boot a VM to **Local Drives** (work on the image), run SDI to grab network driverpacks, use `pnputil` to add/install the `.inf` files, snapshot the image, then run ggRock’s **Add New Hardware** flow and choose **Let Windows detect** for drivers. 🚀

> Short version: Boot target image on a VM into Local Drives mode (Enable keep writebacks) → install/run SDI and download/select network packs → `pnputil /add-driver "C:\path\to\drivers*.inf" /subdirs /install` → shut down → save snapshot → run Add New Hardware and pick *Let Windows detect* when prompted.

---

## References (most useful sources)

* Snappy Driver Installer (download / Lite/Full / settings).
* ggRock product & admin docs / overview of Machines, Images, Snapshots and VM workflows.
* Microsoft PnP utility (`pnputil`) docs and examples.
* Demo: “Add New Hardware Wizard” (shows the ggRock/WIN Add Hardware flow).

---

## Goal

Install up-to-date **network** drivers into a ggRock *system image* so any machine using that image will have the correct NIC drivers available on first boot.

---

## Preconditions

* You have admin access to the ggRock WebAdmin and to the VM you’ll use to modify the image.
* You know which **PC Image** (System image / Image slot) you will update.
* You have a working copy of Snappy Driver Installer (Lite or Full) available to the VM (download from SDI site).

---

## Full step-by-step

### 1) Prepare: choose the image & boot a VM into **Local Drives** mode

1. In ggRock WebAdmin → **Machines**, select or create a Virtual Machine that targets the **System Image** you want to update. Use a VM so you can install drivers before taking a snapshot.
2. Boot that VM **to Local Drives mode** (so it boots the image locally instead of PXE diskless mode). This makes the VM mount the image as a boot drive you can modify. (If your setup uses a VM bridge or a dedicated VM host, use the normal VM power controls in ggRock to start the VM into Local Drives).

> Why Local Drives? Working on the image locally means changes (installed drivers) are written into the image and can be snapshotted/committed for roll-out.

---

### 2) Install Snappy Driver Installer inside the VM

1. On the VM (while booted into the target image), download SDI (Lite if you wish to download smaller driver indexes, Full for offline packs) or copy a predownloaded SDI folder to the VM. The official site and download pages are at [http://sdi-tool.org](http://sdi-tool.org) .
2. Extract/run SDI as Administrator. In SDI choose the large **network** driver packs you need (or the Full pack if you want everything). Let SDI download/extract the selected packs locally — note that full packs can be tens of GB.

**Tip:** SDI stores extracted drivers under its program folder (look for a `drivers` or `update\…\drivers` folder). Make note of that path (you’ll point `pnputil` at it).

---

### 3) Install drivers into the image with `pnputil`

You have two safe options: (A) run a single recursive `pnputil` command to add all available `.inf`s and attempt to install matching drivers now; or (B) test single vendor `.inf`s first.

**A — Quick recursive add & install (one line)**  
Open an elevated Command Prompt (Admin) or Windows Terminal (Admin) inside the VM and run:

```
pnputil /add-driver "C:\Path\To\SDI\drivers\*.inf" /subdirs /install
```

* `/subdirs` = recurse into vendor subfolders (handy for SDI layout).
* `/install` = attempt to install for matching devices immediately.  
  (More `pnputil` examples and syntax: Microsoft docs). ([Microsoft Learn](https://learn.microsoft.com/en-us/windows-hardware/drivers/devtest/pnputil-examples))

**PowerShell loop (optional):**

```
# Run in an elevated PowerShell window
$DriverPath = 'C:\Path\To\SDI\drivers'
Get-ChildItem -Path $DriverPath -Filter *.inf -Recurse -File |
ForEach-Object {
Write-Host "Adding $($_.FullName)"
pnputil.exe /add-driver "$($_.FullName)" /install
}
```

**Notes & caution:**

* Installing *every* INF from a massive pack risks adding drivers you don’t want — test a single NIC first. Use targeted installs for unknown hardware.
* Unsigned drivers or missing `.cat` files can cause install failures — check signatures if necessary.

---

### 4) Shut down the VM and save a snapshot of the image

1. From inside Windows (VM): cleanly shut down (`Start → Power → Shut down`) once driver installs finish and you’ve verified NICs work.
2. In ggRock WebAdmin, **save a snapshot** (commit the snapshot for that image/VM). The ggRock Images / Snapshot workflow allows you to capture the current state so it can be deployed to clients. If your environment uses “Writebacks” or snapshot naming conventions, follow your site standard naming (e.g., `2025-10-07_NIC-update`).

> If you prefer, take a second backup copy/export of the snapshot for safe-keeping.

---

### 5) Run the ggRock **Add New Hardware** process (install device instances)

1. In ggRock WebAdmin open the **Add New Hardware** wizard for the image you just snapshotted (or for the target machine that will use the image). This wizard steps through adding devices and letting Windows associate drivers. (See demo video of the Add New Hardware Wizard for reference).
2. When the wizard presents the list of drivers for a hardware item, **choose “Let Windows detect”** (or the option shown that lets the OS automatically search and pick the best driver from the driver store). This will let the drivers you added to the driver store (via `pnputil`) be selected and applied to the device instance.

**Why this step matters:** `pnputil` puts packages into the Windows driver store; *Add New Hardware* / Plug-and-Play will then match the store drivers to hardware IDs when the OS detects the device instance. That’s how you make sure the snapshot’s driver store is actually used by the installed devices.

---

## Troubleshooting notes

* If `pnputil` reports missing files or fails: confirm `.inf` files and required `.cat` files exist in the driver folders (SDI packs sometimes contain nested archives — extract fully).
* If SDI failed to extract to a network share, copy the full SDI driver folder to a local drive and rerun `pnputil`. SDI and some archive tools can behave oddly from NAS mounts.
* If you see BSODs or unexpected behavior after bulk installs: revert to the pre-change snapshot, then try a targeted driver install path. Always keep a known-good snapshot before bulk driver work.

---

## Quick checklist (paste into a ticket template)

* Pick target image and start VM in Local Drives mode.
* Download / copy SDI to VM and run it as Admin; download selected **network** packs.
* Confirm path to extracted drivers (note `C:\Path\To\SDI\drivers`).
* Test a single NIC INF: `pnputil /add-driver "C:\...\vendor.inf" /install`.
* Bulk import if testing OK: `pnputil /add-driver "C:\...*.inf" /subdirs /install`.
* Shut down VM cleanly.
* Save snapshot in ggRock (Images / Snapshots).
* Run Add New Hardware wizard; pick **Let Windows detect** to let the store drivers attach to device instances.
* Boot a client with the new snapshot and validate NICs & connectivity.

---

## Example commands (copy/paste)

```
REM Install single driver (test)
pnputil /add-driver "C:\SDI\drivers\intel\0\intel_net.inf" /install
REM Bulk recursive add/install
pnputil /add-driver "C:\SDI\drivers\*.inf" /subdirs /install
REM List driver packages in store
pnputil /enum-drivers
REM Remove driver (when you know oem#)
pnputil /delete-driver oem12.inf /uninstall /force
```

(Or use the PowerShell loop shown above if you want per-INF output.)

---

## Final tips

* Keep the SDI **Full** pack offline copy on your tools server if you maintain many sites — saves time for future NIC updates. SDI Full packs are large; Lite is better if you only need a few drivers.

---