Finally Trying Windows 11 on ARM

I've long enjoyed my Lenovo Miix 630, a Windows 10 on ARM device with a Snapdragon 835. Microsoft decided not to support that CPU for Windows 11, so I got to keep Windows 10 on it just as I like. However, Microsoft introduced some bug with storport.sys that resulted in it bluescreening at bootup repeatedly, and despite multiple attempts to wipe and reinstall, the issue persisted. I ended up sending it in for out-of-warranty repair, during which time Microsoft fixed the bug of course.

While waiting for Lenovo to fix my device, I started getting antsy. While I had the QC710 to keep me company, its Snapdragon 7c processor was far too sluggish for my liking, and I had upgraded it from Windows 10 to Windows 11. Project Volterra is looming on the horizon, but still not out yet (UPDATE 2022-10-24: Project Volterra is released!). I had been keeping my eye on the new Lenovo ThinkPad X13s for months, watching review videos and reading articles about it. It was quite tantalizing since it supports up to 32 GB of RAM and sports the new Snapdragon 8cx Gen 3, but it runs Windows 11 and the only skew with 32 GB RAM doesn't come with a SIM card slot. Those things held me back for a good long while, but a week without my Miix 630 wore me down, and I finally bought the ThinkPad X13s 32 GB RAM model.

Lenovo ThinkPad X13s with the screen displaying the logo for the Snapdragon 8cx Gen 3 processor

Both the new X13s and the repaired Miix 630 arrived on the same day. Lenovo just nuked and reinstalled the original ancient Windows 10 on ARM version on my Miix 630 and apparently forgot to bill me at all...? After getting it all updated again, it did at least work properly and no longer have the bluescreen issue with storport.sys thanks to Microsoft having finally fixed it, so that's good. I'd hate to lose my last remaining Windows 10 on ARM device.

As for the ThinkPad X13s, I've had a lot of fun messing around with it despite the lack of window titles on the taskbar (the main reason I dislike Windows 11). When I first got it, it had like 20 Windows Updates to install for various firmware updates and drivers. The first restart had it updating the UEFI BIOS. Clearly a lot of things are moving fast in the Windows on ARM ecosystem.

I'm happy to report, the X13s supports hardware virtualization! So I was able to use WSL2 and WSLg, though there's currently no GPU virtualization support that I'm aware of, so WSLg uses software rendering. I also got to try Hyper-V, but Windows 11 build 22000 doesn't support TPMs properly in Hyper-V, so the Windows 11 VHDXs you download from Microsoft will refuse to install updates. If you update to a newer insider preview build, then you can enable TPM support in Hyper-V, but I can't use those newer builds because they break external display support. (Yes, I did already submit feedback in the Feedback Hub. UPDATE: A 2022-09-28 firmware update fixed the external display issue for 22621)

Speaking of external displays, from what I've been able to test, it supports up to 1920 by 1080 at 120 hertz, or 2160 by 1440 at 60 hertz, or 3840 by 2160 at 30 hertz. I typically use the 1440p option since I can't stand the 30 hertz refresh rate feeling so sluggish, but the 4k option might be good for movie watching. (UPDATE 2022-10-10: I tried a different HDMI adapter and got 3840 by 2160 at 60 hertz, so try different adapters and see what you get!) As mentioned above, the insider preview builds break external display support entirely, they can't even be detected, so I've been staying on 22000 for now. Hopefully they have it fixed and working by the time 22621 rolls out in a month or so. (UPDATE: A 2022-09-28 firmware update fixed the external display issue for 22621)

I've also tried the ARM64 version of Visual Studio 2022. There was an initial weird issue I had where a changing the build architecture dropdown in a C++/CX UWP project would freeze the IDE and cause weird system instability, but a Repair Install fixed that. It all works quite nicely now, it was able to build and run the massive C++ project from work in quite a decently short time (significantly faster than the QC710). The X13s would make a good development machine if I didn't have access to a desktop setup. I'll be using it for sure though to make sure any software I develop works well on ARM64 Windows. (This is also why I got the Miix 630 and QC710, in addition to just being really interested in RISC-based computing, and they make good personal devices too.)

I also tried out gaming, since amusingly both Windows 10 on ARM and Windows 11 on ARM offer Gaming as an option during the setup experience and even offer to sell you Xbox Game Pass, but as usual the current reality (at least on 19044 and 22000) is somewhat disappointing. Games in the Microsoft Store which I know for a fact have native ARM64 versions (because I'm the one who built and uploaded them) show as incompatible for some inexplicable reason. Just a couple years ago they worked fine, so clearly Microsoft changed something. (UPDATE 2022-10-14: this now appears to be fixed, the games correctly show as compatible with ARM64 versions.) The Video Memory listing is also always shown as incompatible despite the X13s having 16 GB shared VRAM, probably because it's looking at the 1 MB dedicated VRAM instead.

The Xbox app also doesn't install by default and the Microsoft store shows it as incompatible, but you can still use the trick of downloading the installer from a web browser and watching the Microsoft store in the background show the progress of the install that it doesn't want to allow. (UPDATE 2022-10-14: The Xbox App now has an ARM64 version that can be installed from the store, but it only supports cloud gaming, and only works on Windows 11, not Windows 10.) Unfortunately, unlike when I last tested on the QC710, now on the X13s the Xbox app won't even show me my library of games, and the Microsoft store app no longer has a way to open the game page in the Xbox app. Game installs from the Xbox app have never worked for me on ARM, but now I can't even get to try because I literally can't navigate to any screen where the option would be presented!

However there is one game I own which doesn't require the Xbox app to install: Age of Empires Definitive Edition. It can be installed directly from the Microsoft Store app, and just like when I tested it on the QC710, it works here on the X13s, with better performance as well. It's only available as x64 though, so you can't play it on Windows 10 on ARM unless you use an expired Windows 10 Insider Preview build with x64 emulation support that later became Windows 11 exclusive. So, you can game on this device! Just... not with the Xbox app. As for Vulkan, there's still no news of when it will be supported. Only games using DirectX 11 or 12, or a very limited subset of OpenGL, will work, and this applies both to x86 and x64 games as well as native ARM and ARM64 and ARM64EC games.

Things start looking a lot better when you install Steam or EGS. Neither has any specific support for Windows on ARM, but they are both 32-bit x86 apps so they install and run fine on both Windows 10 on ARM and Windows 11 on ARM. Then it comes down to each individual game being either 32-bit x86 or 64-bit x86/x64. Duskers works fine on both 10 and 11 on ARM, and I did some more testing of various games on 11 since the X13s is more powerful.

In addition to Duskers, The Talos Principle also runs well. It complains that it can't detect the graphics hardware, but it works fine anyway. Obviously the Vulkan backend can't be tested right now, but I was able to test DirectX 11. I tried the beta DirectX 12 option briefly but it just made the game flicker between itself and whatever was behind it (e.g. Steam) so I stuck to DirectX 11 mode. Next I tried The Witness, on lowest settings it can't run at 1440p without being a choppy framerate, but it has a dynamic resolution option that lets it run more smoothly in exchange for looking like pixel art. Not ideal, but it works. I also tried Antichamber, but it only gets as far as showing the Unreal Engine logo and then stays on an endless black screen with the Steam overlay at the bottom right. The graphical options for Antichamber are a part of the actual gameplay so I couldn't tweak them. Lastly I tried Outer Wilds - I couldn't install the Microsoft Store version due to aforementioned issues, but the EGS version runs fine when you turn the settings down.

I haven't felt like trying Android app support with WSA yet, mainly due to the lack of hardware GPU acceleration seen in WSLg, and also because I don't know what apps to even try on the Amazon App Store and I don't want to mess with sideloading the Google Play Store. I might make another blog post for it later when hardware acceleration support is added for WSLg.

One last thing before I end off for now, I saw one review mention that the red dot in the i on the ThinkPad logo wasn't an LED. That review is lying. It blinks occasionally when the device is in sleep mode, and remains lit continuously when the device is on. Just wanted to get that out there.