Category Archives: Cool Tools

Minimum Battery Charge Required Blocks BIOS Upgrade

I have to laugh. I’m putting my office back together following not just the big holiday yesterday, but windows washed on Tuesday. I’m talking real, physical windows on the house, not the eponymous OS that is the focus of this blog. I had to disconnect the Lenovo Thunderbolt 4 dock, the wired GbE LAN. That meant my X12 was untethered and uncharged for several days. When I tried to log in to that machine today, I learned that the minimum battery charge required blocks BIOS upgrade. Sigh.

WTF: Minimum Battery Charge Required Blocks BIOS Upgrade

The funny thing is, I had some interesting foreshadowing on this topic just last night. I had to upgrade my now-aging iPad Air 2 to the latest iPad OS. At first, the Install button didn’t light up. Apple helpfully provided a error message by way of explanation, saying that a “minimum charge level of 20%” was required for the OS update install to go forward.

Thus, after leaving the X12 untethered for four-plus days, I found myself wondering. “Gee,” I thought to myself “What do you bet that the X12 BIOS update can’t go forward without a minimum charge level, either?” Sure enough: I checked online and indeed, the battery must be at 25% charge or higher, even if the PC is on AC power, for the BIOS upgrade to proceed.

Easily fixed! It only takes time (about 20 minutes in my case) to get past that 25% threshhold. As I write these words, the BIOS flash is underway at the UEFI command line. It’s just over 80% complete, in fact. Good thing the iPad forewarned me about this possible impediment, eh? Otherwise, I might have jumped into major troubleshooting mode, built a bootable BIOS installer, and done a manual BIOS upgrade instead.

If It’s Not One Thing, It’s Another…

It’s rare when I feel like the universe is looking out for me. Most of the time when trouble strikes, I have to roll up my sleeves and fix things the hard way. This time, time — and the related upping of battery charge levels — fixed things more  or less on its own. As you can see in the lead-in graphic, the same Lenovo Vantage utility that told me I needed a BIOS upgrade now shows me installation success for same.

I’m glad that’s over. I learned about Lenovo’s “self-healing BIOS” along the way to this resolution. I’m just glad serious troubleshooting and repair was unneeded in this happy case.

Facebooklinkedin
Facebooklinkedin

No Remote WinSAT No Batteries

In following up on yesterday’s memory training item, I started messing about with WinSAT. For those not already clued in, WinSAT stands for Windows System Assessment Tool. As it turns out, such assessment depends on steady, reliable power and “close to the metal” access to the PC it’s assessing. That’s why, I believe that MS says “You cannot run formal assessments remotely or on a computer that is running on batteries.” (Using WinSAT). Hence the assertion: no remote WinSAT no batteries.

If No Remote WinSAT No Batteries, Then What?

A formal assessment on WinSAT runs a whole battery of checks. You can still do feature-by-feature checks remotely (just not the whole thing). Here are the results of WinSAT mem over a remote connection to one of my 2018 vintage Lenvo X380 Yoga ThinkPads:

No Remote WinSAT No Batteries.rem-mem

A single feature check — mem, or memory — does work remotely.

But if I run the whole suite (WinSAT formal) in the same PowerShell session, I get an error message instead:

No Remote WinSAT No Batteries.rem-formal

Going formal with WinSAT “cannot be run remotely…”. No go!

Such things lead to head-scratching from yours truly. I can kind of get it because it’s undoubtable that the remote connection is going to affect results reported because of the time involved in remote communications. But why allow checks one-at-a-time, but not all-at-once? MS is mum on this subject, so I’m not getting any insight there. It could be that singleton checks add relatively little overhead, but that cumulative effect of an entire suite of same adds noticeable delay. Who knows?

Facebooklinkedin
Facebooklinkedin

VM SSD Speed Falls Off

What did I expect, I wonder? I’ve been digging more deeply into VMs on the amazing Lenovo P16 Mobile Workstation. (It’s got an i9-12950HX, 2TB PCIe x4 SSD, 128GB RAM, Quadro RTX A5500, and Windows 11 22H2.) Most of the time, the VM runs almost indistinguishably from the physical OS. But various IO metrics tell a different story: most tellingly, VM SSD speed falls off measurably. That applies both to the Virtual C: drive inside the VM, and when accessing external USB4 storage devices from the VM.

How Much VM SSD Speed Falls Off

By most metrics, it’s 2X or more. To be more specific, CrystalDisk-Mark results for the C: drive are about half across the board versus the internal Kioxia SSD. For the all-important random read/write 4K single thread, it’s worse than that (2.5X to 3X). Worse still, large file copies to external USB drives fall off a cliff: typical rates of 250-280 MBps fall to 60-70 MBps. This is shown from File Explorer inside the VM in the lead-in graphic above. Here’s a comparison from the physical machine:

VM SSD Speed Falls Off.phys-copy

Notice: USB speed is at least 4X faster on a physical PC vs. a VM.

Let’s Get Physical…

This actually provides an interesting justification for running certain workloads on physical rather than virtual PCs — namely, that IO and completion times can be dramatically affected. But given the convenience, flexibility and open-ended nature of VMs, this is not likely to matter that much except for highly specialized workloads where time is worth more than money.

Fascinating stuff, though — and great fun to play with. Check out the Get a Windows 11 development environment page at MS.

Facebooklinkedin
Facebooklinkedin

Windows 10 Phone Link Eliminated

Dang! After messing about with PowerShell unsuccessfully, I turned to long-time fave 3rd-party tool Revo Uninstaller Free. Seems that Windows 10 doesn’t allow the Phone Link app to be uninstalled anymore. Sadly, the Uninstall option is greyed out in Settings. Likewise, I couldn’t get PowerShell Get-AppxPackage | Remove-AppxPackage to work, either. But if you turn to Revo Uninstaller, it delivers the goods: Windows 10 Phone Link eliminated.

Why I Want Windows 10 Phone Link Eliminated

Two reasons:

1. Phone Link only works with Android phones and I have iOS. Don’t use it, ever.
2. Update failed, then app “stopped working, around recent Store revisions.

If I can’t use an app AND it causes errors, I don’t need it. Thus, I want it gone!

Look at the lead-in graphic. I’ve put a red box around the listing item for the Phone Link app on my Windows 10 production desktop. Right-click on that item, and the first menu option is “Uninstall.” Pick that. Revo asks you to confirm that choice, as follows:

Windows 10 Phone Link Eliminated.confirm

Alas, PS does NOT show the command details it uses to pull this off. Sigh.

Revo Unsintaller works some PowerShell magic around the following text I copied:

Deployment operation progress: Microsoft.YourPhone_1.22092.211.0_x64__8wekyb3d8bbwe

After removing the app, I used the Revo Uninstaller Scan functions to remove all leftovers from the Registry. It no longer shows up on my Windows 10 PCs — all both of them. I will be on the lookout for reappearances after CUs and feature upgrades, based on what I read online about how Phone Link keeps showing back up.

When it comes to “Windows pest removal” sometimes, repeated treatments may be required. LOL!

Facebooklinkedin
Facebooklinkedin

Windows 11 Beta Channel Gets Improved Task Manager

Finally! I’ve been reading about — and seeing — cool changes to the Task Manager in Windows 11 for weeks and weeks. But only with Build 22623.891 for all of its users, Windows 11 Beta Channel gets improved Task Manager. What does this mean? Take a look at the lead-in screencap (and others below) and I’ll tell you more…

Woo-hoo! Windows 11 Beta Channel Gets Improved Task Manager

Let’s start with the lead-in graphic. Among the several improvements Task Manager now makes easily accessible in the 22623 fork of the Beta Channel, I can finally produce the Dark Theme. That’s what you see in that graphic, which makes for a more dramatic (but also visually sensible) set of CPU utilization graphs. Previously, this kind of thing was only accessible through ViveTool tweaks (which I avoid as a matter of practice).

What else is in there? You can search for processes by name in various Task manager panes (processes and details). The next screencap shows the results of a search for the ubiquitous svchost process in the Processes pane (notice it’s smart enough to map part of the .exe name to the related process names: cool!).

Windows 11 Beta Channel Gets Improved Task Manager.search

Notice that “Service Host” appears in nearly all of the elements shown as search results. Very helpful!

According to this story at WinAero from Sergey Tkakchenko, you can search on process name, ID or publisher with good results. That certainly worked for me.

One more thing: turning on “Efficiency mode” in Task Manager is now a right-click option from the Details pane. This lets users lower runtime priority to boost power efficiency, while upping stability risks. My example (e.g. the Chrome web browser) is an example of something you probably would NOT wish to run in this mode. For real.

Efficiency mode is easy to set, but should be approached with some caution.

I’m not sure I truly understand when or why to use Efficiency Mode (presumably on a tablet or laptop on battery power) but I’ll do some investigating and experimenting and see what’s up with that. Stay tuned! Should be fun…

In the meantime, I’m delighted to finally be able to see and exercise these Task Manager facilities for myself. If you have access to a Beta Channel Insider Preview, it’s worth updating to Build 22623.891 to see for yourself.

Facebooklinkedin
Facebooklinkedin

PowerToys File Locksmith Works Well

Starting with version v0.64.0, released on November 2, the PowerToys collection added File Locksmith to its mix.The tool’s own built-in description is sparse. It reads: File Locksmith is “…[a] Windows shell extension to find out which processes are using the selected files and directories.” Doesn’t sound like much but can be handy. Indeed, I learned that PowerToys File Locksmith works well this weekend. Let me explain…

Why Say: PowerToys File Locksmith Works Well?

As I tried to work through an update process for a desktop tool, I got an error message showing three instances of svchost.exe were impeding installation. Remember: File Locksmith is a “shell extension.” In this case, that means you can right click “stuck” files in File Explorer and then choose the “Who’s using this file?” menu option that appears.

This brings File Locksmith into the picture, wherefrom you can choose an “End Task” button for associated files that show up in the listing. Furthermore, you can see detail about each running process, so you can even match up process IDs inside Task Manager to make sure you “end task” only when and where you should, and leave other stuff alone.

PowerToys File Locksmith Works Well.fl-output

The offending items were various DLLs. They run within svchost processes so multiple programs can share access to them.
[Click image for full-sized view.]

This made my job pretty easy. All I had to do was end the offending tasks so the installation could complete. It did so pretty much immeditately after I told it to try again. And it ran to successful conclusion.

Warning: Because ending tasks for shared DLLS can leave certain important facilities inaccessible after such a move, I also restarted Windows after the update was done. You know: just to be on the safe side…

But gosh, File Locksmith made this sometimes vexing and onerous task easy and straightforward. I have to laugh about this too, though. Here’s why: earlier versions of PowerToys itself were prone to experiencing install delays owing to running items. These included dll host processes that required manual closing in Task Manager. Thus, it’s glaringly obvious how the developers figured out such a tool could be helpful — at least, IMHO.

But it’s here, it works, and has already proved useful in helping me update a utility included in my Startup items, and generally running in the Windows background. If it worked for me, it should do likewise for you. Enjoy!

Facebooklinkedin
Facebooklinkedin

Winerror versus Err: Enough, or Too Much?

Here’s an interesting dilemma. In the past, I’ve advocated use of the Windows Error Lookup Tool, currently Err_6.4.5.exe The other day, I had cause to rue my recommendation. I actually found a different, more focused tool named Winerror.exe. It’s part of the Windows Assessment and Deployment Kit, aka Windows ADK. But then, you might also need to grab the older Windows 10 version to get the tool I’m about to discuss. It seems to be missing in the Windows 11 version.

Winerror versus Err: Focused and General

You can see the issue in the lead-in graphic for this article. Notice that winerror provides two different expansions, one of which mentions normalization. Err_6.4.5, OTOH, provides 6. These come from a variety of error code source files: bugcodes.h, netmon.h, winerror.h, and ntstatus.h.

In simpler terms, winerror looks only at winerror.h; err… looks at a bunch of error code source files, including winerror.h. My point is that winerror may be worth consulting when you’re troubleshooting Windows 10 or 11. That goes double when the error reporting tool (err_6.4.5.exe) produces more output than you know how — or really want — to use.

Wm Blake Still Has a Point

The end half of the title for this story comes from William Blake’s Proverbs of Heaven and Hell. It makes the excellent point that you really don’t know you have enough until you have more than you need. That’s why I recommend using the older, but less general, Winerror.exe when you find that the latest error reporting tool (err_6.4.5.exe) has more to say than you really need to know.

‘Nuff said!

Facebooklinkedin
Facebooklinkedin

Using Winget For 4 Ways To Update

I’ve been researching an upcoming ComputerWorld story about the terrific and powerful PowerShell based Windows packager: Winget. It’s a peach! I mostly use it for keeping applications and supporting elements current. Lately,  I’m  using Winget for 4 ways to update my apps. Let me explain…

How-to: Using Winget for 4 Ways to Update

Way 1: Check Pending /Available Upgrades

By itself, the command winget upgrade simply shows what’s ready to upgrade. It doesn’t actually do any upgrades. Thus, it offers a quick easy way to see what upgrades are available. That’s why it appears as the lead-in graphic for this story.

Ways 2 & 3: Perform Blanket Upgrades

In fact, two different command strings provide varying degrees of upgrade capability

  1. winget upgrade –all
  2. winget upgrade –all –include-unknown

By default winget only upgrades to a new version when it recognizes the current version. Then, if the current installed version is lower-numbered than the pending one, the upgrade goes ahead. Some-times, for whatever reason, winget can’t find the current running version into. In such cases, the upgrade –all variant skips them. Thankfully, adding –include-unknown to the string tells winget to upgrade those anyway. Consequently, I use that more inclusive variant because there’s less follow-up needed.

To illustrate, the next screencap shows winget upgrade –all –include-unknown output on the PC that produced the lead-in snap. Notice please: 5 items found, 5 items upgraded. Good-oh!

The –all –include-unknown variant of winget upgrade covers the most possibilities. On this PC, all 5 candidates upgrade.
[Click image for full-sized view.]

Way 4: Targeted Winget Upgrades

Examined closely, both preceding screencaps shows an ID column. Indeed, that information provides a “package name” for its associated application. Thus, you can always upgrade a single package at time using this syntax:

winget upgrade <package-name>

For example, names shown in the screencaps include Mozilla.Firefox, TeamViewer.Teamviewer, AntibodySoftware.Wiztree, Google.Chrome and Microsoft.WindowsSDK. That follows a mostly predictable structure: builder-name.package-name. For speed, I like to use it when winget presents only a single option, or when a winget blanket command fails.  I’m learning that happens sometimes, for various odd reasons.

There are many ways to work with winget I haven’t yet mentioned. These could appear in future posts here. Certainly, they’ll definitely be covered in my upcoming ComputerWorld piece. Right now, that’s scheduled to appear online before month’s end. Hopefully, you’ll get a chance to catch that during the busy holiday season.

 

Facebooklinkedin
Facebooklinkedin

Winget Updates PowerShell 7.2.7

Here’s something new in my personal experience. I ran Winget on one of my Dev Channel test PCs this morning. The latest version of PowerShell came up as an upgrade option. So I exercised it, and indeed the PowerShell version incremented from 7.2.6 to 7.2.7. Hence my claim that now, Winget updates PowerShell 7.2.7. You can see the process underway in the lead-in graphic for this story.

What Happens When Winget Updates PowerShell 7.2.7?

Things get a little weird along the way. Notice that after Winget starts the package install for PowerShell, it shows a “Cancelled” notification at the lower left corner of the Terminal session window. At the same time, the PowerShell installer (small pane at lower right) reports ongoing progress in removing the old version, then installing and configuring the new version.

When the progress bar goes all the way to the right, it simply disappears with no further communication from the installer. On a whim, I closed the open Terminal session window. When I opened a fresh one, here’s what I saw:

Winget Updates PowerShell 7.2.7.new-window

Once the progress bar completes, the installer goes silent. But if you close the open Terminal session, then open a new one, you’ll see it’s indeed been updated to 7.2.7.

I’m not sure how it’s supposed to behave because I’ve never seen winget upgrade PowerShell before. Normally, a full installer window opens with the masked PowerShell avatar (see below). Then, one steps through the typical standalone installation sequence. This time, with PowerShell running things it worked differently. A bit disconcertingly, too. But it’s installed now and works as expected. So I guess, all’s well that ends well. Cheers!

Winget Updates PowerShell 7.2.7.avatar

I guess I’ll miss the avatar going forward, but I do appreciate the convenience of upgrading inside PowerShell.

Facebooklinkedin
Facebooklinkedin

Working with WinFetch

WinFetch is a windows-focused knock-off of another well-known shell tool named NeoFetch. Each is written to show useful and informative data about systems from within a command-line shell environment. NeoFetch is built atop bash; WinFetch atop PowerShell. IMO, that makes WinFetch more suited for use with Powershell. I’ve been working with WinFetch a lot lately, learning how to use it to help me see what I’m doing with Windows Terminal and PowerShell customizations. Indeed, it’s pretty helpful. But I’ve also been learning some lessons the hard way as I go. Let me explain…

Why Working with WinFetch Takes Some Effort

The documentation on WinFetch is kind of sparse. In fact, I’m starting to think I should spend my time reading the NeoFetch stuff, because it may shed more light on the inner workings of WinFetch. Straight from its GitHub home, there’s precious little info available about its details and settings. Sigh.

So far, the lessons I’ve learned the hard way include:
1. You must save the config.ps1 file that governs WinFetch behavior for its changes to take effect.
2. Sometimes, a reboot is required, above and beyond a simple save. I can’t tell why, but I found myself stuck a couple of times on this hump. If you make a change, save the config file and it has no impact on the WinFetch output, try a reboot. It may do the trick.
3. Customizing the WinFetch config is totally a trial-and-error exercise. Be prepared to spend lots of time tweaking and checking, then repeating ad infinitum. Sigh again.

Customizing for Winget Package Mgr

It took me a while — including plenty of the aforementioned trial and error, but I got WinFetch to look at and report on Winget packages. Here’s the syntax, straight from the config.ps1 file that makes WinFetch work:

$CustomPkgs = @(“winget”)
function info_pkg_winget {
return ((winget list | measure-object).count)
}

What you’re doing is telling winget to list all the packages it knows about, then piping that input into the measure-object cmdlet. Using its count attribute you simply show the overall package count. Sublime!

Facebooklinkedin
Facebooklinkedin