Flamingo Raises $4.5M Seed Round

Skip to content

A laptop blue-screens twice a week and the stop code names a driver that nobody on the team has heard of. The stop code tells you what went wrong in the kernel, and the dump file usually tells you which driver did it. This guide walks through DRIVER_IRQL_NOT_LESS_OR_EQUAL from the four parameters to the fix, on one PC and across a fleet.

What the Stop Code Means

Windows runs kernel code at priority levels called interrupt request levels, or IRQLs. At the higher levels the kernel can't stop and wait for memory to be read back from disk. So any memory touched at that level has to be resident in RAM, and the address has to be valid.

DRIVER_IRQL_NOT_LESS_OR_EQUAL means a kernel-mode driver broke that rule. Microsoft's reference for bug check 0xD1 describes it as a driver trying to access pageable memory while the IRQL was too high. The usual triggers are a bad or freed pointer, pageable data, or pageable code used at DISPATCH_LEVEL.

Its sibling, IRQL_NOT_LESS_OR_EQUAL, is bug check 0xA. The failure is the same kind, but the fault can sit in Windows itself or in a driver. Microsoft adds a line worth remembering: the error "usually occurs after the installation of a faulty device driver, system service, or BIOS."

The practical difference is small. With 0xD1, Windows is confident a driver did it and often prints the driver's name on the screen. With 0xA, you do more of the digging yourself.

Read the Four Parameters First

Every bug check carries four parameters. You'll find them on the blue screen, in the System log entry for the crash, or at the top of the debugger output. They take ten seconds to read and they narrow the search more than any driver-update tool.

Parameter0xD1 meaningWhat it tells you
1Memory referencedBelow 0x1000 points to a NULL pointer
2IRQL at the time2 means DISPATCH_LEVEL
3Operation0 read, 1 write, 2 or 8 execute
4Address that referenced memoryRun ln on it to name the function

The parameter 1 rule comes from Microsoft's 0xA reference. If the address is below 0x1000, the driver most likely followed a NULL pointer. That's a code bug in the driver, so no amount of cleaning the registry will fix it.

A May 2025 r/sysadmin thread shows the pattern on a real fleet. An admin found ThinkPad E14 laptops crashing every few days, only on machines that had taken recent Windows updates. Every dump named the same Realtek Wi-Fi driver, rtwlane601.sys, with stop code 0xD1 and parameter 1 at 0xf98:

Read those parameters with the table above and the story writes itself. A low address points to a NULL pointer, the IRQL is DISPATCH_LEVEL, and it's a read. The same driver shows up on every machine that took the update. That points at the new driver version.

Get the Dump Into WinDbg

Windows writes a small memory dump to C:\Windows\Minidump after each crash. Copy the folder off the machine first. A second crash or a cleanup tool can overwrite the file you need.

If the folder is empty, check the dump settings before the next crash. In System Properties, under Startup and Recovery, the write debugging information option should be set to small or automatic memory dump, and the page file needs to live on the system drive. Without a page file of a workable size, Windows has nowhere to stage the dump.

Install WinDbg with winget install Microsoft.WinDbg, open the dump, and run three commands:

code
!analyze -v
dx KiBugCheckDriver
lmvm rtwlane601

!analyze -v prints the bug check, the parameters and the stack. For 0xD1, Microsoft documents that the responsible driver's name is stored in KiBugCheckDriver, and dx displays it. lmvm then shows the driver's version and timestamp, which is what you need to match it to an update.

URTechDotCa's walkthrough covers the same flow on a live dump, including symbol setup:

When the Dump Blames ntoskrnl.exe

Sometimes the analysis names ntoskrnl.exe, the Windows kernel, as the cause. That's where the crash landed. The cause is usually further down the stack, so scroll for the last third-party module before the kernel frames. That module is your suspect.

If several dumps each blame a different driver, stop chasing drivers. Random culprits across crashes point at memory, and memory includes overclocked RAM profiles and the page file on a failing SSD. Run the Windows Memory Diagnostic and turn off XMP before you touch another driver.

This r/techsupport thread from August 2026 is a good example. A user had two IRQL_NOT_LESS_OR_EQUAL crashes in one day, both blamed on ntoskrnl.exe, after years of reinstalls. The dump reader's answer was that it looks like memory, and the first test was disabling XMP:

Our guide to XMP in BIOS explains why a RAM profile can pass a memory test and still crash under load.

The Usual Suspects

Microsoft's own remarks for 0xA name the usual categories: a faulty device driver, a system service or a BIOS. New hardware brings its own drivers. A BIOS update changes what every driver sits on.

In helpdesk queues, the names that come up again and again are Wi-Fi and Ethernet drivers, VPN clients and other network filter drivers, security agents, and storage or chipset drivers. They share one trait: they run in the kernel and handle interrupts, so a single bad pointer takes the whole machine down.

Upgrades deserve their own note. If 0xA appears during a Windows feature update, Microsoft points at drivers, services, virus scanners and backup tools that aren't compatible with the new version. Updating or removing the security agent and backup client before the upgrade, then reinstalling the current versions after, is the standard first move when a rollout stalls on this code.

Timing is the cheapest clue you have. If the crashes started the week a driver, agent or BIOS changed, start there. Our guide on updating drivers safely covers rollbacks and how to pin a known-good version.

Driver Verifier, Aimed at One Driver

When the dumps point at a driver but you can't prove it, Driver Verifier makes the driver fail loudly. Microsoft's Driver Verifier guide is blunt about the risk: it can crash the computer, and it belongs on machines you use for testing and debugging.

So aim it. Verify only the suspect, reproduce the crash, and turn it off:

code
verifier /standard /driver rtwlane601.sys
verifier /querysettings
verifier /reset

Restart after enabling and after resetting. A caught violation usually shows up as bug check 0xC4 with the driver named, which is the proof you take to the vendor. If the PC won't boot with Verifier on, our blue screen guide covers the Safe Mode route back out.

Fixing It Across a Fleet

One crash is a ticket. The same driver crashing on thirty laptops is a rollout problem, and the fix is a rollout too.

Start by collecting the evidence from every device instead of one. This PowerShell pulls recent crash events and the installed version of the suspect driver:

powershell
Get-WinEvent -FilterHashtable @{LogName='System'; Id=1001; StartTime=(Get-Date).AddDays(-30)} |
  Where-Object { $_.Message -match 'bugcheck' } |
  Select-Object TimeCreated, Message

Get-CimInstance Win32_PnPSignedDriver |
  Where-Object { $_.DeviceName -like '*Realtek*' } |
  Select-Object DeviceName, DriverVersion, DriverDate

Group the results by model and driver version. If every crashing device runs the same version and the clean ones don't, you have your answer without a debugger. Our list of PowerShell commands covers more ways to query devices remotely.

Then fix it the same way on every device. Roll back to the last good version, and stop Windows Update from reinstalling the bad one until the vendor ships a fix. The OEM's support site often lags behind the chip vendor, as the Realtek thread found, so check both. The Microsoft Update Catalog lets you pull a specific driver version by hand.

If you run OpenFrame, you can run both queries above as a script across a client's devices and collect the output from each one.

What to Do Next

DRIVER_IRQL_NOT_LESS_OR_EQUAL almost always has a name behind it. Read the four parameters, open the dump, and let the stack name the driver before you reinstall anything. When the blame moves around from crash to crash, test memory first.

For the wider picture of stop codes, dump settings and recovery options, read our guide to the Blue Screen of Death.

Dmytro Koval

Dmytro Koval

Head of Product Engineering

Hi! My name is Dmytro, but everyone calls me Dima. I’m a Software Developer and together with the development team, I help bring Flamingo to life — putting it on its feet from a technical perspective. Originally from Lviv, Ukraine 🇺🇦, but currently based in Spain, where I’ve been enjoying the blend of great weather, culture, and nature. I’m passionate about the mountains and love traveling — exploring new places and cultures really inspires me. These experiences constantly recharge me and give me a fresh perspective, both personally and professionally.

Related Content

Blog Posts

Product Releases

Podcasts

Webinars

Case Studies

Events

Onboarding Guides

Frequently Asked Questions

driver-irql-not-less-or-equal

A kernel-mode driver touched pageable or invalid memory while running at DISPATCH_LEVEL or higher, usually through a bad or freed pointer. Network, VPN, security, storage and chipset drivers are the common culprits, and the crash often starts after a driver, agent or BIOS update.
Both mean memory was accessed at an IRQL too high to wait for paging. 0xD1 (DRIVER_IRQL_NOT_LESS_OR_EQUAL) blames a kernel-mode driver and often names it on the blue screen. 0xA (IRQL_NOT_LESS_OR_EQUAL) can be Windows itself or a driver, so you read the dump to find the cause.
Sometimes. If every dump names the same driver, the driver is the lead. If each crash blames a different driver or ntoskrnl.exe, test memory with Windows Memory Diagnostic, turn off XMP and check the SSD before changing drivers.
Microsoft says Driver Verifier can crash the computer and should run on machines used for testing and debugging. If you must use it on a user device, verify only the suspect driver, back up first, and remove it with verifier /reset once you have the crash.

About OpenFrame

OpenFrame isn't built to plug into your stack. It replaces it. Instead of duct-taping a dozen tools together (RMM, MDM, SIEM, patching, remote access, each its own login and bill), we bundle it into one unified platform: RMM, MDM, monitoring, automation, remote access, patch management, security monitoring, and ticketing, plus built-in AI copilots. So "does it integrate with X?" usually means: you won't need X anymore.
Most platforms give you one piece and expect you to bolt the rest on. OpenFrame unifies the whole stack in one place, with AI copilots built in. Fewer logins, fewer bills, less duct tape.
In the cloud, on US soil. Your data stays stateside.
Both. It's built for MSPs and MSSPs alike.

MSP AI Agents

Yes. In production MSP shops today, 10% to 25% of tickets close before a human opens them. Thread alone has processed 173 million tickets across 750-plus MSP partners at 96% triage accuracy, handing back 490,000-plus technician hours. Agents own the low-risk, high-volume work (password resets, MFA enrollment, known installs, onboarding and offboarding) and flag anything that touches production data or needs judgment for a human to take.
On a five-person desk, reported deployments show $78,000 to $130,000 in annual direct labor savings, roughly 30% fewer escalations, and 15% to 20% better SLA compliance. Broader MSP adoption data adds ticket handling time cut by 45% and five to 12 points of margin, all from reclaimed capacity rather than headcount cuts.