Use your own WiFi connection test server in Windows

This post describes changes to the Windows registry. Here is Microsoft’s warning about that:

⚠️ Warning

Serious problems might occur if you modify the registry incorrectly by using Registry Editor or by using another method. These problems might require that you reinstall the operating system. Microsoft cannot guarantee that these problems can be solved. Modify the registry at your own risk.

Please keep that in mind and do not try any of this unless you are prepared to solve whatever problems you might experience.

Sometimes, things work for the wrong reasons. I had been having problems with my T400’s WiFi connection for a long time. I recently decided to replace the Intel 7260 AC with a WiFi6 card I found on Amazon. For the first week, I lived with the illusion that there must have been something wrong with either the old card or the no-longer-updated drivers for it, because my problems went away immediately.

Then, I realized that I had forgotten to change the DNS server settings for the new card! Sigh. Upon reverting the custom DNS settings, the flakiness returned. The card would connect, go through the motions, then fail to detect a connection in a loop. Eventually, Windows would turn it off. I would reboot. Sometimes though, it would latch on just fine and be fine for days. By this time, I had tried all sorts of weird ideas including messing with the OpenWRT firmware on the router to provide more diagnostics but I had nothing. The $WORK laptop on which I could not change any settings worked extremely reliably, while my ancient Frankenstein’s monster of a T400 would struggle. It wasn’t like the thing had never worked: The 7260 was able to give me download speeds that matched the cable internet provider’s advertised download speeds and I was happy with it for a long time.

The fact that the new card got flaky with my custom DNS settings gave me a hint that I should look away from network drivers, antenna connections, OpenWRT Linux kernel versions etc. I tried a bunch of permutations of keywords which landed me on this answer by Jeff Atwood from 2011. A light bulb went off immediately.

I put the cart before the horse, searched for a cute domain name related to “WiFi” and “Check”, bought it, and set up a simple vhost for Apache and fiddled with the registry entries:

[ Screenshot of registry settings for customizing Windows NLA connection test ]

Windows establishes whether a network connection has internet connectivity by making a DNS lookup followed by an HTTP request. One option is to disable this check. This becomes problematic if you expect to be able to deal with captive portals.

So, I went with the other option. I put some custom text in a file and set the value of ActiveWebProbeHost my cute new .com and the value of ActiveWebProbePath to success.txt. Then, I put a file called success.txt in the vhosts’s htdocs directory with the exact contents of ActiveWebProbeContent. Note that the comparison is exact and Windows does not trim leading/trailing whitespace, so the file must not have a newline at the end. I used one of the very reasonably priced and rather well-provisioned personal SSDNodes VPS I keep around for these kinds of odds and ends.

And, that is it. Absolutely no connection problems since then. After trying it out for a week or so, I decided to roll this out to all the family computers I can.

As a minor side benefit, you shut down one avenue through which you are tracked on the intarwebs, but that is really minor because Windows and other software installed on your computer talk about you all the time.

Interestingly, Google has already indexed my server and the customized connection test string is already recorded in its cache.