Category Archives: Device drivers

Keyboard Driver Issue Kills Productivity

Think about how you type on a keyboard. Now, consider these words: fully, password, assign, connect. What they have in common is doubled letters. When I type them, I strike the doubled key very quickly then move on to the next letter. The speed at which the keyboard allows this to occur is called the “key repeat rate” aka “repeat rate.” Yesterday, some kind of keyboard driver issue kills productivity. It imposed an apparent 1-second delay between repeats. Indeed, I could barely function at the keyboard!

If Keyboard Driver Issue Kills Productivity, Then What?

A little quick online research informed me about repeat delay and repeat rate. Indeed, it came courtesy of a tutorial from long-time friend and TenForums/ElevenForum colleague Shawn Brink. It’s entitled Change Keyboard Character Repeat Rate in Windows. Its header graphic appears as the lead-in image for this blog post, too.

First, I discovered that both the repeat delay and the repeat rate weren’t working at all. I had to wait about a second to hit any key a second time, and have it show up on the display. Next, I  learned that the Microsoft Mouse and Keyboard Center wouldn’t let me adjust either rate directly. And finally, upon checking existing Registry settings, they should already have been working properly.

Title Says Driver, Fix Replaces Driver

All these bits of evidence told me the driver itself was broken. So I returned to MS support to download a new version of the MKC (Mouse and Keyboard Center) version 14.41, 64-bit. After the install, I had to reboot my PC. When it came back up, I jumped immediately into Notepad. Once again I could type words with doubled letters. And when I pressed and held any letter key, it would quickly start pumping out copies until I lifted my finger. Back in business!

They say, it’s the little things that get you in the end. Here in Windows-World they also get you at odd and random times, too. Like yesterday when MKC went south. So it goes…


NVIDIA Drops New Driver Batch

As I work through the Windows news each morning, I check X (Twitter), LinkedIn, Facebook and Mastodon by way of social media. I also check in on WinAero, WindowsLatest, MSPowerUser, Ghacks, Thurott and Windows Central as well. Today, most of them told me something like NVIDIA drops new driver batch 551.23. And indeed, I found Game-ready and Studio versions for consumer grade GPUs, as well as Quadro (551.23 aka Release 550) among the pro lines. You can see the Studio version from GeForce Experience in the lead-in graphic above.

Fast facts on this latest version:
1. Target Directory: C:\ProgramData\NVIDIA Corporation\
2. Filename: 551.23-desktop-win10-win11-64bit-
3. Download size: 519KB (downloader only)
4. On-disk file size: 1.93 GB (all files downloaded & expanded)
5. Download & install time: ~3:30 (average across 5 PCs)

Why NVIDIA Drops New Driver Batch 551.23

Most often updates follow close on the heels of new games (or game features). Sometimes, they pop up to support new NVIDIA GPU offerings. It’s the latter this time, with the release of the game- and AI-ready RTX 4080 SUPER at CES on January 8, 2024 (also includes 4070 Ti SUPER and 4070 SUPER in that mix).

Heh! I’m not sure I’m ready to fork over the long green needed to buy into the latest NVIDIA generation, but it’s nice to know they’re out there when I build my next desktop. I usually buy either a 4070 or 4070 Ti model because I can’t really justify the price/performance tax that a top-of-the-line model adds to my build costs. But gamers everywhere will probably be fighting off a new case of techno-lust.

Drivers Downloaded and Updated

Amidst my modest fleet of about one dozen PCs (8 laptops and 4 desktops), there are 7 machines with NVIDIA graphics cards of one kind or another. I’ve got the updates running on all of them right now (except for the desktop my son is using away at college, so I’ll mention this to him the next time we talk). By the time you read this, they should all be updated.

If you’ve got an NVIDIA GPU in your neighborhood, now you know there’s a new update out there, too. Three cheers for the 551.23 release!


Adding Ancient Dell Printer Gets Interesting

Oho! How the time flies by when I’m not looking. I tried to install my Dell color laser printer — Model 2155cn — on the Toughbook FZ-55 this morning, only to get the “Driver is unavailable” error in Printers & scanners again. “Hmmm…” I wondered: “How old is that thing anyway?” Turns out it made its debut in 2011, and I bought it in 2012. Like the original Apple LaserWriter I bought in the late 1980s (and kept until I bought this one) this is one indestructible beast. Thus, I must observe that for Windows 11, adding ancient Dell printer gets interesting. Simply put: Windows no longer includes these drivers in the OS distribution!

How Adding Ancient Dell Printer Gets Interesting

So now I finally understand why I’m seeing this error in Settings. You can see it, too, in the lead-in graphic. Amusingly enough, it shows up right below the device info for the 2155cn that I just installed minutes ago, courtesy of the Dell 2155 Application for Windows, which I found at the Dell Support pages. Dell calls it the 2155cn/cdn Color MFP Software Suite and Driver.

When I look at the list of supported OSes, 11 is absent — though it does mention 10, 7, Vista and XP. It bears a release date of March 2014, too. This information, along with the settings error message, is what finally clued me into what’s going on here. This darn printer is so OLD that MS doesn’t find it necessary to include its drivers amidst the thousands of newer devices it does support. This explains what was going on for my post from last week Dell Printer MIA.

Here Comes Nothing, Printer-Wise

Interestingly, MS is switching over to the Mopria printing protocol, under the umbrella of Universal Print. It will no longer provide new drivers from printer makers starting next year (2025: see this fascinating PC World item “MS is killing 3rd-party printer drivers in Windows 11“).

So, pretty soon this won’t matter. For older printers — like the Dell 2155 cn — the only option will be downloading from the maker’s website. For newer printers that are Universal Print/mopria-savvy, things should “just work.” Maybe I need to buy a new printer so I can see about that! LOL…


X1 Extreme Graphics Driver Delirium

I guess it just happens every so often. Right now, Lenovo Vantage is nagging me to upgrade graphics drivers — both Intel and NVIDIA — on my 2018 Vintage Thinkpad X1 Extreme. (Internals: i7-8850H CPU, 32 GB DDR4, NVIDIA GeForce GTX 1050 Ti, dual Samsung OEM SSDs.) But Lenovo Vantage wants me to run an Optimus display driver and GeForce Experience wants a GeForce Game Ready Driver. The back-n-forth is leading to some X1 Extreme graphics driver delirium. What’s a body to do?

Surmounting X1 Extreme Graphics Driver Delirium

In a nutshell the problem is this: when I update to the Optimus driver, GeForce tells me to update to the Game Ready Driver, When I go the other way round, that flips so Lenovo Vantage tells me to get back on its track. I don’t do a lot of heavy-duty graphics on this laptop, and I’ll be darned if I can tell any difference.

I asked Copilot: “What’s the difference between running a GeForce Game Ready Driver versus NVIDIA Optimus Display Driver on a GeForce GTX 1050 Ti with Max-Q Design?” It says: battery and easy switching between discrete and integrated GPU for Optimus, versus gaming performance and support for newest games for Game Ready Driver.

Dilemma dehorned: I don’t play games and I do switch back and forth between the Intel UHD 630 and the discrete GPU. But I had to finagle a bit to get the status from Lenovo Vantage you see above, where it tells me “No updates available.” Deets follow next…

Both Intel and Optimus Must Update

Something about the update package from Lenovo was successfully updating the GeForce driver, but failing to do the same for Intel. How could I tell? Two ways:

  1. The Update package did not run all the way to completion.
  2. The driver version for the Nvidia device matched that for the Lenovo update package (, while that for the Intel UHD 620 was lower (update version was but the running version ended in 8967 instead). Oops!

Because the Lenovo installer wasn’t finishing up (and the Intel Driver & Support Assistant was cheerfully oblivious), I exercised the download package’s offer to extract its contents to a folder. Then I went into Device Manager, right-clicked into “Update driver” and turned it loose on the Intel folder in the unzipped file archive that extract created for me. It took a while to complete, but this worked.

So now, I’ve got the latest Optimus drivers for my X1 Extreme and it’s all good. Here in Windows World, if you’re willing to stop and think about what you’re doing, there’s nearly always a way to fix such issues. Done!


Dell Printer Driver MIA

Just as we were ready to call it a night, “the Boss” came downstairs from her office cubby. Said she “I can’t print like I usually do.” Upon investigation, Word showed her default printer as: Microsoft Print to PDF, instead of the Dell 2155cn printer right next to her desk. “Uh oh,” I thought: “That can’t be good…” And sure enough, when I went into System → Bluetooth & Devices → Printers & Scanners, I saw the tell-tale status “Driver unavailable.” Yikes, the Dell Printer Driver was MIA. What to do?

Return to Action When Dell Printer MIA

Fortunately, I’ve been down this road before. When my quick attempts to access the device showed me only the link between the Boss’s Dell OmniPlex D7080 PC and the 2155 was affected, I knew what to do.

Yep: just as the status line showed, the driver had crashed and burned. Hence: unavailable. So I removed the printer from the lineup. Then I used the “Add a Printer or scanner” facility to bring it back onto the D7080. Fortunately, that worked without my having to visit the Dell website to grab a new driver download. With its associated software and tools, that takes longer to install and set-up.

Device Manager was apparently able to locate and install a working replacement driver without any extra help (or effort) from me. After printing a test page to make sure things were working once again, I printed the red velvet cake recipe that the Boss was trying to output. Sounds — and looks — yummy.

Remove & Replace to the Rescue — Again!

Just yesterday morning, I blogged about using uninstall/reinstall to fix an issue with the brand-new PowerToys “Command Not Found” facility. Last night, I used the same approach to take a broken device driver out of play, and bring in a new and working replacement.

Hmmm. Seems like this R&R strategy is one that comes in handy for all kinds of interesting Windows issues. Let’s keep that in mind, shall we?



Windows 11 Disks & Volumes Info

Here’s something I didn’t know. Through System → Storage → Disks & volumes, Windows 11 makes all kinds of storage device info available. Indeed, such Windows 11 Disks & Volumes info (see lead-in graphic) even includes “Drive Health” for suitably-equipped devices. Let’s explore a little bit more about what that means. But first, take another look at the graphic above.

Digging Into Windows 11 Disks & Volumes Info

What can you see in this graphic? The first section shows disk info for the internal SSD, a 1 TB Kioxia NVMe. It also shows bus, target and logical unit number (LUN 0) data. There’s a Status field that shows the drive is online. Next, a Health section shows remaining life, available spare, and temperature. Finally, Partition Style shows up as GUID Partition Table (GPT). Previously, garnering this info required accessing Disk Management and Device Properties. Fabu!

In fact, if you click on Advanced Disk Properties, the same Properties page you can access through those other utilities comes up. But to me, that’s not what’s most interesting. Turns out, older USB attached devices (USB 3.x, in my local case) do not show the Drive Health section. That only works for USB4 devices (including Thunderbolt 4 items, as USB4 is a strict subset of TB4).

Now I Get It, Yet Again

Once again, I’m seeing a tangible improvement in transparency and usability when plugging in newer and more capable (but also more costly) USB4 peripherals. Even on laptops like the 2022 vintage Lenovo ThinkPad P1Gen6 Mobile Workstation (which still relies on the Thunderbolt Controller not a USB4 Host Router) these benefits convey.

As I said before in an earlier blog post “NOW I get it.” The value of the new interface is starting to come ever clearer. When I talk to the Panasonic engineers in a few minutes, I hope I will learn more. Stay tuned!

{Note Added 4 Hours Later] None of the engineers or developers I talked to was conversant with the switchover from Thunderbolt to USB4 Host Router at the hardware level. They’re floating a discreet inquiry to the Japanese engineering team to find out more. When I get more info, I’ll share it here (or in a new post, as things unfurl). Again: stay tuned!



HWiNFO Bestows USB4 Insight

I just learned something very interesting. Most of it comes courtesy of the GitHub HWiNFO project.  Use it to garner system information and diagnostics in Windows. The lead-in graphic  shows a  Thunder-bolt 4 NVMe enclosure plugged into a Panasonic Toughbook FZ-55. There (upper right) it appears as a Crucial NVMe SSD with PCIe x4 controller. For reasons I am about to reveal, I believe HWiNFO bestows USB4 insight into the USB-C connection in use.

What HWiNFO Bestows USB4 Insight Means

That insight comes from the full text of the Drive Controller info. It reads “NVMe (PCIe x4 8.0 GT/s @x4 8.0 GT/s). That means the PC sees the external drive, plugged in through a USB-C port on the FZ-55 as a PCIe x4 device capable of up to 8 giga-transfers per second (that latter part is what 8.0 GT/s means).

Basically, rating throughput in GT/s gives drive makers a way to account for encoding overhead in the PCIe protocol. Note: 8 GT/s translates into 7.877 Gbps with overhead backed out. Indeed, what this really means is the connection clocks half the maximum speed per PCIe x4 lane (16 GT/s). To me that indicates this connection tops out at a nominal 10 Gbps ( aka USB 3.2 Gen 2×1).

Where USB4 Comes Into Play

This is where I finally get to see a feature in Windows 11 I’ve read about but hasn’t manifested on PCs in my possession. The Toughbook FZ-553 delivered just before Christmas displays a USB option labeled “USB4 Hubs and Devices” (see below).

HWiNFO Bestows USB4 Insight.settings.sys.usb

If I hadn’t seen the PCIe x4 stuff in HWiNFO, I’d never have looked for this!

Indeed, it was seeing the mention of a visible NVMe controller and its PCIe x4 details in HWiNFO that led me to start wondering about USB4 and related Thunderbolt support. On other (older) PCs, I’ve only been able to access info about USB4 and Thunderbolt devices through the Intel Thunderbolt Control Center app. That’s been present by default on those other PCs with high-speed USB-C ports. On the FZ-55, Thunderbolt Control Center is absent. It doesn’t even come up in the Store (though it shows up clearly as a search string).

OK, NOW I get it: the Intel USB4 Host Router does on newer PCs what the Intel Thunderbolt Control Center does on older ones. It makes USB4 storage devices visible and accessible. Good to know!

Thankfully, HWiNFO shows more about the device, including the NVMe maker, controller, and drive model (a 1TB PCIe x4 Crucial NVMe drive). Likewise good to know; more insight, too!


Speccy ToughBook BSOD Analysis

Here’s an interesting situation: after installing Piriform’s Speccy hardware inspection tool on the new loaner Panasonic Toughbook FZ55-3, it crashes every time I run the program. Indeed, you can see the corresponding BSOD screen in the lead-in graphic. The stop code is SECURE_PCI_CONFIG_SPACE_ACCESS_VIOLATION. The culprit: the cpuz149_x64.sys driver. After some online research, my Speccy ToughBook BSOD analysis tells me that this driver is attempting PCI data access that Windows 11 disallows.

To be more specific I found an Open Systems Resources (OSR) community discussion that lays out exactly what’s going on. The datails are nicely covered in an MS Learn item. It’s named Accessing PCI Device Configuration Space, dated 3/13/2023. Essentially it  constrains developers to use the BUS_INTERFACE_STANDARD bus interface, and specific read-config and write-config IO request packets to interact with said bus. Based on its BSOD error, the cpuz149_x64.sys driver apparently fails on one or more of those counts. That made me wonder: is there a workaround?

Speccy ToughBook BSOD Analysis Says: Don’t Use That Driver!

For grins, I found the offending item in my user account’s …\AppData\Local\Temp folder hierarchy. I renamed it with a sy1 extension. Then I tried Speccy again: it still crashed. Drat! The program is “smart” enough to see the file is missing and supplies a new one. Now that folder shows the old renamed .sy1 file and a .sys replacement (with today’s data and a recent timestamp).

Speccy ToughBook BSOD Analysis.file-returns

When I rename to deny access to the current instance, Speccy supplies a new one.

That can’t work. Inevitably, the program promptly throws another BSOD. According to the Speccy forum, this happens with Memory Integrity enabled (as it is on the TB, and I want to keep it that way). This is what causes the BSOD. What to do?

If You Can’t Fight, Switch!

Fortunately, there are plenty of other freeware hardware profile and monitoring tools available. I happen to like HWiNFO64 myself. So I’ve removed Speccy and am using it instead. It is well behaved in its PCI bus access behavior and causes no BSODs.

Frankly, I’m surprised Piriform knows about this issue and hasn’t switched to a different driver (apparently, it comes from Franck Delattre over at CPU-Z, judging from its name). But boy howdy, is that ever the way things go sometimes, here on the wild frontier in Windows-World. Yee-haw!


Working SDIO Driver Updates

OK, then. I ‘ve been living and working with Snappy Driver Installer Origin (aka SDIO) for 4 or 5 months now. It’s an Open Source project from a person named Glenn Delahoy. Snappy has a comprehensive database of drivers (I’ve run only into 4 related elements — all part of a single device, really, for which it didn’t have drivers present). In working SDIO driver updates I’ve learned how to use the program in a way that should stay inside organizational policies for acceptable use (AUPs). Let me explain

Best Ways for Working SDIO Driver Updates

Snappy describes itself as a “portable tool.” What that means is you don’t need to keep it around. In fact, because it will get you the most current software and driver database indexes (and such content as you may need), it’s best to grab a fresh ZIP file each time you want to use it.

When you run the exe file (full name for 64-bit version: SDIO_x64_R759.exe), you must accept its license terms. Then you’ll see the screen that shows up in the lead-in graphic above. Note that it provides buttons labeled as follows:

  • Download All Driver Packs
  • Download Network Drivers Only
  • Download Indexes Only

Working Through The Buttons

These require some explanation. The first button (All …) speaks to SDIO’s architecture as a BitTorrent distributed environment. All Driver Packs come in at around 60GB, and by downloading them, you open the door for the host PC to act as a Torrent server for other users who wish to access the Snappy Driver databases. Because this violates every AUP I know of, don’t do this at work.

The second button (Network…) downloads driver packs for networking stuff so that PCs that lack drivers for wired or wireless Ethernet, Bluetooth, and so forth, can be “fixed” to access their local and other networks. You probably won’t need this, but it might come in handy sometime. Keep it in your hat…

The third button (Indexes…) involves an 18 MB download with the info that Snappy needs to  (a) identify all the drivers it recognizes on PCs on which its run and (b) find a match in its driver packs or report a driver it lacks. As I said before, I’ve seen missing drivers come up only one machine of the dozens I’ve used it on since last August (2023). That’s ultimately why it’s my go-to button in SDIO.

How I Use Snappy Could Tell You Something…

I use Snappy on my PC fleet once a month. I visit the maker’s page, where you will always find a link to the current version and database. I remove older versions from my Snappy folder, unZIP its ZIP file, and run the 64-bit version. After accepting the license terms, and selecting the “Indexes” button it tells me if I need any driver updates on the target PC where it’s run. Mostly I get a screen that looks like this:

Working SDIO Driver Updates.drv-up2date

With four months of regular use, I mostly see “Drivers are up to date” on Windows PCs.

It doesn’t bother me to get mostly “up to date” reports from Snappy. Indeed, that’s what I hope it will tell me. If the tool finds any drivers in need of update they will show up as a list in the upper-right quadrant. Simply by clicking Install(x) — where x is the number of out-of-date drivers Snappy finds — you can get it to catch that PC up with where Snappy thinks it should be.

So far, my results from using Snappy have been uniformly positive. I’ve not encountered any driver related issues since I started using it regularly a while back. That’s the basis for my coverage and (still-tentative) recommendation. Try it out — you may learn to like it, as have I.


Counting MS 2006 Drivers

Yesterday’s post about generic, MS-supplied device drivers got me thinking. These drivers bear an issue date of 6/21/2006, which coincides with Windows Vista’s RTM date. To be more specific, I wondered how many such items might appear in the Windows DriverStore. With counting MS 2006 drivers in mind, I asked Copilot for a PowerShell script to count them for me. Just for grins I compared that count to the total items as well.

Scripting Out Counting MS 2006 Drivers

You can see the results of my query to Copilot in the lead-in graphic. That query was “Write me a PowerShell script to display number of Windows drivers dated 6/21/2006 and total driver count.” As it turned out, on my Lenovo X380 ThinkPad running Windows 11, those numbers were 517 (2006 count) and 701 (total count). On my i7Skylake homebuilt system running Windows 10, those numbers were 511 and 672, respectively.

I’ll show the PowerShell commands below, but first I want to observe I had NO IDEA that MS supplies roughly 5 of every 7 drivers that Windows uses (over 70%). From looking at the items in the DriverStore more closely thanks to PowerShell, I see that this is because many of them are class, bus and service drivers. You can thus understand them as part of the driver stack between the OS and the function driver (at the bottom of the stack, it actually interacts with devices).

Here’s how MS shows this architecture in its MS Learn article “What is a driver?

Counting MS 2006 Drivers.diagram
The driver at the bottom of the stack that communicates with a device is a function driver; according to the MS Learn item, filter drivers do “auxiliary processing” which may involve monitoring, verifying, translating, or otherwise manipulating in- and out-bound stack communications. By convention app to device communication moves down the stack, while device to app communication goes the other way.

PowerShell Details

Here’s the PowerShell that Copilot handed to me in response to my query, including comments (start with a # character):

#Get all the drivers from the online Windows image
$drivers = Get-WindowsDriver -Online -All
# Filter the drivers by the date of June 21, 2006
$drivers_2006 = $drivers | Where-Object {$_.Date -eq "6/21/2006"}
# Count the number of drivers with that date
$drivers_2006_count = $drivers_2006.Count
# Display the number of drivers and their names
Write-Output "There are $drivers_2006_count drivers dated 6/21/2006 in the online Windows image."
Write-Output "The names of the drivers are:"
$drivers_2006 | ForEach-Object {Write-Output $_.OriginalFileName}
# Display the total number of drivers
$alld = $drivers | Where-Object {$_.Inbox -eq "True"}
Write-Output "There are $alld.count total Windows drivers in the online Windows image."

Some of the lines shown above break across two lines in the browser, but are actually single PowerShell commands. If you run them, you must put them on a single line. I just ran the commands in sequence, one at a time as you can see in the lead-in graphic. I cheated, though: I simply output $alld.count in the last line shown. The PowerShell shown above wraps this in some explanatory text.