Category Archives: Device drivers

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 (31.0.15.3770), while that for the Intel UHD 620 was lower (update version was 27.20.100.9316 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!

Facebooklinkedin
Facebooklinkedin

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?

 

Facebooklinkedin
Facebooklinkedin

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!

 

Facebooklinkedin
Facebooklinkedin

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!

Facebooklinkedin
Facebooklinkedin

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!

Facebooklinkedin
Facebooklinkedin

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.

Facebooklinkedin
Facebooklinkedin

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.

Facebooklinkedin
Facebooklinkedin

2006 Microsoft Device Driver Date

Here’s an interesting bit of administrivia. Look at any number of generic drivers inside Microsoft Device Manager. Invariably you’ll see some interesting and apparently ancient items. They’ll show Device Provider: Microsoft and a Driver Date of 6/21/2006. On a Windows 11 test machine just now, for example, I saw that very date under six-plus headings. That included Batteries, Bluetooth, ACPI, Remote Display Adapter, Device Firmware,  and USB . What’s special about this 2006 Microsoft Device Driver date anyway? Good question!

Understanding the 2006 Microsoft Device Driver Date

As it turns out, 6/21/20016 was the day Windows Vista released to manufacturing  (aka RTM date). Since then, when MS supplies a driver for a non-Microsoft device it uses this date. This pushes the driver far back in time. As Device Manager chooses a driver to install it picks the best match for its device ID AND the one with the highest version number and the most recent date.

Why do this? If the OEM (or some other 3rd party with driver signing authority) produces a driver, it will bear a newer date (and possibly a higher version number). Thus, the other driver gets selected and installed. This ensures Windows always installs the best possible driver for any device. And, most of the time, it works!

The MS Driver Date Rationale

As MS updates generic drivers, it increments the driver version number. But it leaves the date at 6/21/2006. That way if a third-party driver comes along, it will almost always trump the MS generic driver version.

Why use the Vista date? Raymond Chen’s MS blog on this topic (2/8/2017) explains things in a bit more detail. A PC Magazine story from the same year supplies another crucial quote from an MS developer:

since only drivers as far back as Vista are compatible with new versions of Windows, every driver should have a date newer than Vista RTM, preserving the driver you installed as the best ranked driver.

So now we know why certain MS-supplied drivers go back to the start of the “modern Windows era.” Good stuff!

 

Facebooklinkedin
Facebooklinkedin

Snappy Driver Installer Worth Considering

I know. I know. Lots of Windows experts and pundits, including at AskWoody, TenForums and ElevenForum, don’t recommend or support driver update tools. That said, I find Snappy Driver Installer worth considering anyway (at least, the Origin fork). Let me recite some recent experience. Then I’ll enumerate the reasons why I’m so grateful for Snappy Driver Installer…

Why Say: Snappy Driver Installer Worth Considering

First let me explain why I’m grateful for this tool and its labor-intensive project. Almost alone among such tools, Snappy Driver installer (SDI) is open source (GNU GPL v3.0 license). Most decent driver update tools cost upwards of US$30 per year, some more than that.

Just this morning, Norton (still running it on my production PC, but I plan to bid it adieu with my next desktop build) told me I had 14 drivers out of date. It costs upwards of US$60 to add its driver scanning functions (and a bunch of other stuff, too) to its ~US$90 annual subscription fee. I’m not interested in paying more, thanks, but I was glad to learn I had some drivers out of date.

Firing up SDI for the first time is interesting because it needs more just under 37GB of driver files to offer a complete collection of stuff from which to work. Even so, the tool is smart enough to focus only on driver packs (7ZIP files of related drivers) that a target PC needs. For this target PC, that involved just a bit over 3 GB across 8 different archive files. SDI was able to handle all the out-of-date drivers on its own, in about 30 minutes (most unattended, while I did something else).

SDI Benefits and Features (IMO Anyway…)

Snappy Driver Installer is free. It’s easy to maintain a portable version on a UFD you can use for all your Windows PCs. It works with all current Windows versions (I’ve used it across the range of Windows 10 and 11 editions and builds).

For me, SDI does the job nicely and keeps my PCs current without annual subscription fees. And because I routinely shoot an image backup before mucking about with drivers, I can say no such update has ever hosed one of the PCs under my purview.

Like I said at the outset: SDI is worth checking out for yourself. You just might find it useful. Your call…

Note: For timing purposes I fired up SDI on another test PC to see how long it takes to grab the whole collection of driver packs. Right now, it’s 115 minutes in at 50% done. That means it could take as long as 4 hours to complete. It’s clocking between 18 and 85 Mbps as it runs, so it’s apparently throttled deliberately and carefully. Final runtime came in well under 3 hours (just over 155 minutes, or 2:35).

Wait! There’s more: Version forks and controversies

I got a tweet today from David Ballesteros. He let me know there are dueling versions of SDI, including the one formerly linked above (I removed it as I’ll explain). Another is called SDI Origin, which gets an interesting description at MajorGeeks.

WARNING!!! Malware is reported in the SDI fork. Thus, many online posters say — no surprise there — use SDI Origin instead. I’ve not run into any of said reported malware, adware or other potential gotchas, but my PCs are pretty armored up.

Just to be on the safe side it seems like SDIO (SDI Origin) is the best version to use. That’s why I killed the link to the other fork (but it’s easy to find online). And as I look at the filenames on my home drive for Snappy I see I wound up with the Origin version in both subfolders anyway (directory root is named SDIO).

As you can see in this properties Window, even my original exe file is named “Snappy Driver Installer Origin.” Reinforces the old saying: it’s better to be lucky than good. Phew: might’ve dodged a bullet!

Facebooklinkedin
Facebooklinkedin

Occam’s Razor Cuts My Intel PROset Problem

OK, then: let’s take a short trip back to medieval England (14th century) and drop in on philosopher William of Ockham. His original Latin epigram is “Entia non sunt multiplicanda praeter necessitatem.” That’s often translated as “Don’t add more factors to an explanation than are strictly necessary.” Many people take it to mean “The simplest explanation is usually the best (or correct) one.” From a troubleshooting standpoint, I take a different lesson.  Eliminate the obvious causes before looking for more exotic ones. And indeed, yesterday Occam’s Razor cuts my Intel PROset problem. I discover it’s the software itself that prevents its installation on Windows 10.

Why Say Occam’s Razor Cuts My Intel PROset Problem?

You can see why I had to haul this old blade out of storage by examining the lead-in graphic. It’s from the Release Notes for the latest version of the Intel PROset and driver software for its wired Ethernet adapters, including for Windows Client OSes. Take a close look at that list. Then consider the version of Windows 10 for which I sought to install this latest 28.2 version — namely Windows 10 22H2.

The installer fired up just fine, but then it took quite a while to do anything. Instead of asking my persmission to commence installation, I got this error message instead:

Occam's Razor Cuts My Intel PROset Problem.10-22H2-error

Despite repeated efforts, I got only this when attempting an install on Windows 10 22H2.

After a couple of failed tries, I figured I’d better check the release notes. And sure enough, I saw what’s missing in the lead-in graphic. This release does NOT support Windows 10 22H2. And that, of course, is why I get that error message. Given that 22H2 is the current Windows 10 version and that 21H2 hit its EOL date on June 13 (a couple of months ago), I have to believe this was a mistake on Intel’s part. But it is what it is, and I have to wait for them to fix it. Until then, I’ll keep running the preceding driver version. Sigh.

FWIW, I just summarized this info in a post to the Intel online forums for their Ethernet adapters and software. I’ll be interested to see what kind of response it evokes, if any. Stay tuned!

Facebooklinkedin
Facebooklinkedin