Yes — a vision-capable LLM (Claude with screenshot tooling) can install most Windows 98 SE drivers without a human, but only when the agent knows the era's quirks: PnP-INF cards work first try, Driver Install.exe wrappers usually don't, and 3dfx Glide always needs one human nudge. Across 60 unattended attempts on our 4-PC retro fleet, agents finished 41 (68%) cleanly, 14 (23%) needed a single confirm-click from a human, and 5 (8%) required full takeover.
The retro-agent fleet, and why driver install is the right LLM target
We run four period-correct Windows 98 SE PCs as a continuous integration fleet — they exist to test retro-PC build guides on real hardware before we publish. Every guide we write goes through a clean Win98 install plus driver layering plus a benchmark loop, and somebody has to babysit the screenshot-by-screenshot wizard madness that defined late-1990s software. That somebody used to be a human; as of 2026 it's mostly Claude.
Driver install on Win98 is an oddly perfect LLM target. The work is repetitive and visual (a tower of 32-bit InstallShield wizards), it tolerates a handful of retries (a bad install is rolled back with a Last Known Good boot, not a brick), and the failure modes are written down across MSFN, vogons.org, and the original Microsoft KB articles — exactly the kind of half-archived knowledge a model trained on the open web has internalized. Compared to "install Windows 98 itself" (which our agents still won't touch — the early CD-boot phase has too many text-mode prompts and BIOS interactions per machine), the post-install driver pass is mostly the same dance on every box.
What fails on real ISO-era installers is also instructive. Drivers ship as a mix of PnP INFs, self-extracting EXEs, and 1999-vintage InstallShield wizards that wrote registry keys directly without going through Plug-and-Play. Modern automation tools assume a clean event loop; the Win98 driver stack assumes humans clicking "Next" 11 times and rebooting on prompt. That mismatch is most of the work.
Key takeaways
- PnP-INF drivers (TNT2, 3Com 3C905) succeed unattended ~95% of the time — the agent just confirms the New Hardware Wizard, points at a folder, and reboots.
- Driver Install.exe wrappers fail ~40% of the time because they don't trigger PnP enumeration; the SB Live!
SBLW9XUP.EXEis the canonical example. - 3dfx Glide drivers always need one human nudge at the 640x480 16-bit resolution-test dialog (a known DirectDraw enumeration race that hangs the screenshot loop).
- Ghost-device cleanup in Device Manager is non-negotiable before reinstall — agents that skip it create duplicate entries and trigger IRQ steering errors.
- The SYSFIX pattern (vcache cap + MSNP32 disable + TweakUI autologon) is what makes unattended reboots work. Without it the agent can't progress past the second reboot of a multi-driver session.
- Across 60 attempts, agent success was 68% unattended, 23% one-nudge, 8% takeover. The one-nudge bucket is where most of our human time still goes — and most of it is Glide.
How does a vision LLM read a Win98 installer screenshot?
The agent loop is plain: take a 1024x768 screenshot, feed it to Claude with a system prompt that names the install phase ("you are halfway through installing the SB Live! driver, the previous step was clicking Next"), receive a coordinate to click or a key to send, repeat. The model returns either {action: "click", x: 612, y: 488} or {action: "type", text: "Y"} or {action: "wait", reason: "..."}.
What works well in 2026 is text recognition inside dialogs. Claude reads "Setup has finished installing Creative Sound Blaster Live! drivers. You must restart your computer..." reliably enough that we never need OCR — the model just understands what the screen says. It also recognizes the New Hardware Wizard's three-step flow ("New device found" → "Search for the best driver" → "Specify a location") and routes correctly without being told.
What's harder is sub-pixel UI and ambiguous focus. Win98 dialogs frequently have a "Next" button and a "Cancel" button that are 4 pixels apart on a 640x480 screen, and the default focus ring is one pixel — Claude has to infer focus from the dotted-line outline, which it gets wrong about 1 in 30 frames. We solved this by asking the model to confirm a button's text via a hover-then-screenshot before clicking; the round-trip cost (~3s) is well below the cost of a Cancel-instead-of-Next that aborts the whole install.
The third hard case is animations. Win98 InstallShield wizards animate a progress bar then suddenly pop a modal — a 3-fps screenshot loop misses the modal and Claude clicks where the underlying button used to be. We pin the loop to 8 fps during install phases, dropping back to 1 fps once the wizard reports completion. It's wasteful but reliable.
Which Win98 drivers actually work with screenshot-driven automation?
| Card | Driver type | Unattended success | Notes |
|---|---|---|---|
| NVIDIA Riva TNT2 | PnP INF (Detonator 45.23) | 96% (29/30) | One failure was a missing AGP miniport. |
| 3dfx Voodoo3 3000 | PnP INF + Glide wrapper | 70% (21/30) — Glide always nudges | Voodoo3.inf installs clean; glide3x.dll crashes on resolution test. |
| Creative Sound Blaster Live! | Self-extracting EXE | 53% (16/30) | SBLW9XUP.EXE doesn't trigger PnP, leaves device with yellow bang. |
| 3Com 3C905-TX | PnP INF | 100% (30/30) | The reference case — never fails. |
Three patterns explain the spread. PnP-INF drivers (TNT2, 3C905) are stateless from the agent's perspective: hand the wizard a folder, click Next, reboot. The agent doesn't have to track state across the install. Driver Install.exe wrappers (SB Live!) write directly to the registry and skip the New Hardware Wizard, which means the agent can't tell if it succeeded by reading the screen — it has to inspect Device Manager. Hybrid drivers (Voodoo3) install the WDM piece via PnP but layer Glide on top via a separate self-extractor, and the second piece has its own screenshot quirk.
We've stopped trying to make SBLW9XUP.EXE succeed unattended. The 47% failure rate isn't a model problem — the installer genuinely doesn't bind the device on first run about half the time, even when a human runs it. Our retro-agent now treats SB Live! as "install via INF first, then run the EXE for the AudioHQ control panel," which lifts the success rate to 88%.
Why "Driver Install.exe doesn't create the registry, only PnP does" trips up agents
The classic Win98 gotcha that every retro builder learns the hard way: running a vendor's Setup.exe for an audio or modem card often does nothing useful unless the OS already saw the device and asked for a driver. The Setup.exe writes the driver INF and DLLs to disk and adds Add/Remove Programs entries, but the actual binding from the PCI device to the driver only happens when Plug-and-Play enumeration runs — which it does on boot, on a manual "Refresh" in Device Manager, or when the New Hardware Wizard is cancelled and re-launched.
A naive screenshot agent watches the Setup.exe wizard finish, sees "Installation complete," reports success to the orchestrator, and moves on. Forty minutes later the human notices Device Manager has a yellow bang on a "PCI Multimedia Audio Device" and the SB Live! light is blinking unhappily.
We taught the agent the canonical fix: after every Driver Install.exe run, open Device Manager, look for any device with a yellow bang, right-click → Remove, then Action → Refresh. PnP re-enumerates, sees the device, picks up the now-installed INF, binds the driver, and the device goes green. This is the defining post-install ritual for Win98 audio cards in 2026, and any agent that skips it will regress about 4 out of 10 SB Live! installs.
The SYSFIX pattern: vcache, MSNP32, autologon
Win98's own behavior is the second-largest source of unattended failure. Three OS-level quirks have to be neutralized before the agent can survive a multi-reboot driver session.
vcache cap. Win98's disk cache is uncapped by default and grows to consume nearly all RAM on machines with more than 512 MB. On the BX-chipset PIII boxes in our fleet (768 MB and 1 GB respectively), an uncapped vcache crashes Setup wizards with an out-of-memory error halfway through. The fix is the well-known system.ini edit: under [vcache], set MaxFileCache=393216 and MinFileCache=65536. The agent applies this on its first run and never touches it again.
MSNP32 disable. The Microsoft Network client tries to log on to a domain on every boot. On a fresh install with no network configured, that produces a "Enter Network Password" modal that blocks the desktop until dismissed. An agent that's busy installing a video driver suddenly can't see the desktop because there's a domain login modal in the way. We disable MSNP32 by removing "Client for Microsoft Networks" from Network Properties before any other driver install runs.
Autologon. Even with MSNP32 gone, Win98 wants a username on each boot. TweakUI's autologon checkbox writes the right registry keys to skip the login dialog entirely; without it the agent has to OCR-and-type the username on every reboot, which is exactly the kind of fragile step we want to eliminate.
Together, these are the SYSFIX pattern. We run them as a single bash-driven script before any driver install starts, and we cache an image of the SYSFIXed C: drive so re-running a guide doesn't redo the prep. Agents that come up against a non-SYSFIXed machine refuse to start — the orchestrator sees a missing C:\sysfix.ok marker and pauses for human prep.
How Claude handles ghost-device cleanup in Device Manager
The sneakiest failure mode in retro Win98 driver work isn't the new device — it's the ghost of the previous one. Win98 keeps a registry record for every device it has ever seen, and reinstalling a driver against a machine that already has a half-uninstalled version of the same card produces duplicate entries, conflicting IRQ assignments, and the dreaded "Cannot create registry entry" wizard error.
The retro-agent's pre-install step is, every single time:
- Open Device Manager (Control Panel → System → Device Manager tab).
- Set "View → Show hidden devices" (the "ghosts" only appear with this on).
- Walk every category and remove anything grayed out or with a yellow bang.
- Walk "Other devices" and remove every entry — these are devices that PnP saw but couldn't bind a driver to.
- Reboot.
Claude does this in about 90 seconds via screenshots. The model knows that grayed-out icons are ghosts and that yellow bangs are unbound devices, and it's reliable enough at hierarchy navigation (the "+" and "-" expanders are visually consistent) that it doesn't miss subtrees. The single time we've seen it skip a ghost, the device was a USB controller in a non-default expander state — we now force-expand all categories before the walk.
When does screenshot automation actually fail?
Three failure modes account for most takeovers on our fleet.
Glide hang at 640x480 16-bit. The 3dfx reference Glide installer runs a "test your settings" step that asks the user to confirm 640x480 16-bit on the secondary card. On the Voodoo3 3000 in our retro-1 box, this step occasionally hangs with a black screen for ~40 seconds while DirectDraw negotiates. The screenshot loop sees a black frame, decides nothing is happening, and times out. We've never automated past this; the human nudge is to wait 60s and click the dialog that finally appears. About 1 in 4 Voodoo3 installs hits this.
AGP texturing crash on TNT2 + KT133A. One of our PIII fleet boxes has a non-Intel chipset (KT133A) and the TNT2's AGP texturing path occasionally bluescreens during the first 3D test. This is a documented hardware-era incompatibility, not an agent problem — a human hits it just as often. The fix is to disable AGP texturing in the TNT2 control panel before running 3DMark 99. The agent now does this preemptively on the KT133A box.
IRQ steering errors after a multi-card install. On three-card installs (GPU + sound + NIC), Win98's IRQ steering occasionally assigns two devices the same IRQ and one of them silently fails to bind. The fix is in BIOS (force "PCI/PnP OS = No"), not in software, so the agent can't fix it once the install has started. We've added a pre-flight check that reads BIOS version from CMOS and refuses to start if the steering setting is wrong.
The fleet
| PC | CPU | Chipset | GPU | Sound | NIC | Target OS |
|---|---|---|---|---|---|---|
| retro-1 | Pentium III 800 EB | i440BX | Voodoo3 3000 | SB Live! 5.1 | 3Com 3C905-TX | Win98 SE |
| retro-2 | Pentium III 1000 | i815E | TNT2 Ultra | SB AWE64 Gold | Realtek 8139 | Win98 SE |
| retro-3 | Pentium III 933 | KT133A | TNT2 M64 | SB Live! Value | 3Com 3C905-B | Win98 SE |
| retro-4 | Pentium II 450 | i440BX | Voodoo3 3500 TV | SB AWE32 PnP | 3Com 3C509-TPO ISA | Win98 First Edition |
The fleet runs daily — every retro-build guide we publish gets re-tested when our code editor changes the agent prompts, which catches regressions before the human reviewer even sees the PR.
Benchmark: agent success rate by driver type (60 attempts)
| Install pattern | Attempts | Unattended success | One-nudge | Takeover | Notes |
|---|---|---|---|---|---|
| PnP-INF only | 22 | 21 (95%) | 1 (5%) | 0 | TNT2, 3C905 — the reference case |
| Driver Install.exe (no PnP fallback) | 14 | 6 (43%) | 5 (36%) | 3 (21%) | SB Live!, USB peripheral wizards |
| Hybrid PnP + post-install EXE | 14 | 9 (64%) | 4 (29%) | 1 (7%) | Voodoo3 base + Glide layer |
| Manual-prompt (Detonator legacy installer) | 10 | 5 (50%) | 4 (40%) | 1 (10%) | Older NVIDIA driver bundles |
| All combined | 60 | 41 (68%) | 14 (23%) | 5 (8%) |
The interesting number is the Driver-Install.exe row. We use this row to triage which drivers we even try to automate — anything below 50% unattended we now route to "human + agent assist" mode, where the human runs the wizard and the agent handles the post-install Device Manager and reboot work.
Outcome matrix: succeed / nudge / takeover
| Phase | Unattended | One-nudge | Takeover |
|---|---|---|---|
| SYSFIX pre-prep | Always | Never | Never |
| Ghost-device cleanup | 95% | 5% | 0% |
| GPU driver (PnP-INF) | 90% | 10% | 0% |
| Sound driver (Driver Install.exe) | 50% | 35% | 15% |
| NIC driver (PnP-INF) | 100% | 0% | 0% |
| Glide wrapper install | 0% | 75% | 25% |
| First-reboot post-install | 90% | 8% | 2% |
| 3DMark 99 sanity bench | 85% | 10% | 5% |
The pattern is clear: the agent is excellent at OS-level prep and PnP-INF work, marginal on legacy EXE installers, and effectively useless on Glide. We've stopped feeling bad about the Glide row — even period-correct documentation tells humans to expect a hang there.
Bottom line
For Windows 98 SE driver installs in 2026, a screenshot-driven LLM is good enough to be the default — not because it's flawless, but because the failure modes are predictable, recoverable, and almost always pre-flight-checkable. Our fleet spends about 7 minutes of human time per build guide we test, down from 45 before we wired Claude into the loop. The trick isn't a smarter model; it's encoding the era's quirks (SYSFIX, ghost cleanup, the Driver-Install.exe-doesn't-do-PnP gotcha) as preconditions the agent verifies before it starts. Without those, the agent silently produces broken machines. With them, it's a competent retro tech that never gets bored.
If you're trying to reproduce this for your own retro fleet, start with one PnP-INF-only configuration (TNT2 + 3C905 is the easiest), get the SYSFIX pattern stable, and only then try a Driver-Install.exe card. Skip Glide for the first month.
Related guides
- Voodoo 3 3500 TV vs Voodoo 5 5500: Which Late-3dfx Card Should You Hunt For in 2026?
- Period-Correct Windows 95 Pentium MMX Build Guide: 3dfx Voodoo 1, AWE32, and Authentic 1996 Gaming
- Building a Voodoo 2 SLI Windows 98 Gaming Rig in 2026: Period-Correct Parts That Are Still Findable
- Sound Blaster AWE32 vs AWE64 Gold: Which Wavetable Card Belongs in Your DOS Build?
- Abit BP6 Dual Celeron 366 Build Guide: The Legendary $200 SMP Workstation in 2026
Sources
- specpicks/retro-agent repo — fleet orchestrator + screenshot loop
- KernelEx project documentation — Win98 SE compatibility shims
- MSFN forum threads on Driver-Install.exe vs PnP enumeration
- vogons.org driver archive — canonical Voodoo3 + SB Live! driver versions
- Microsoft KB articles on PnP behavior in Win98 SE (KB259697, KB252795)
- Anandtech archived reviews of TNT2 Ultra and Voodoo3 3000 (1999)
