You’ve heard the advice. I have too. In fact, I’ve even given it. Heck, I’ve even followed said advice, on numerous occasions. What advice? Ah, yes. The “just install Linux” advice.
I had a Dell Latitude that I bought used. It came with Windows 10, then spent some time as a headless Ubuntu server, and when I eventually built a proper homelab, I installed Ubuntu Desktop on it instead. It works so, so smoothly.
That successful installation was still lingering in the back of my head when I saw an old Microsoft Surface Pro 6 lying around. It’s my dad’s, and he mainly uses it as a tablet with the Surface Pen for writing.
The problem was that this Microsoft device could barely hold a charge, got ridiculously hot, and was laggy all the time. Windows just wasn’t working particularly well on this Surface. So… can we put Linux on a Microsoft Surface? A device that was literally made for Windows?
Yes, you can put Linux on a Surface
“You can install Linux on anything”
Amir Bohlooli / MakeUseOf
Of course you can. The more nuanced question is whether everything will actually work afterward.
I’ll spare you the platitude, but Linux really has come a long way. After all, the year of the Linux desktop is coming (any day now!) We’ve even got gamers, of all people, switching to Linux on their PCs. So why not a Surface?
A Surface packs quite a bit of hardware that falls outside what you’d expect from an ordinary laptop: there’s a touchscreen. There are two cameras, in addition to the Windows Hello IR camera. There’s the Surface Pen. Depending on the model, there are all sorts of sensors and other Microsoft-specific hardware to worry about.
Amir Bohlooli / MakeUseOf
A cute message I got from the Surface Pro as I was very vigorously trying to shut it down.
Some hardware simply does not work properly on Linux. But lo and behold, there’s an entire project dedicated to making Linux work on Surface devices.
Linux-surface provides a customized kernel and drivers to get Surface hardware running properly under Linux. In theory, you can install just about any distro on a Surface, set up linux-surface, and start tinkering. In practice, the project provides straightforward installation instructions for the usual mainstream distros: buntu, Debian, Fedora, and Arch-based systems.
So, install a distro, set up linux-surface, fiddle with whatever breaks, and eventually I should have a working Linux Surface. But I wanted it even easier. Could it get easier?
Ultramarine basically does the work for you
Thankfully, we’re not the first people to want this
Amir Bohlooli / MakeUseOf
Take roughly what Linux Mint does for Ubuntu and apply that philosophy to Fedora. You get something along the lines of Ultramarine Linux.
It’s essentially Fedora with a bunch of useful extras already baked in. More importantly for me, Ultramarine offers a Surface image that already includes linux-surface and the extra drivers and codecs needed for Microsoft’s hardware.
You can download the image from Ultramarine’s website. It comes with four desktop environments: KDE Plasma, Xfce, Budgie, and GNOME. I went with KDE Plasma.
I wouldn’t use Rufus for this one. There have been reports of Rufus mangling the Ultramarine image. Ultramarine recommends balenaEtcher. I used Etcher and had no issues with the image itself.
The installation is, thanks to the wonderful age of GUI installers, very simple and straightforward. Getting the live USB to actually boot was a little less straightforward.
Secure Boot had other plans
Amir Bohlooli / MakeUseOf
The first time I booted from the USB, I got GRUB (great!) Then I selected Ultramarine and immediately got an error saying the kernel was missing (not great!)
The problem, as you may have guessed, was Secure Boot. I went into the Surface’s UEFI settings, disabled Secure Boot, and tried booting the USB again. This time, instead of Linux, I got a blue screen demanding my BitLocker recovery key (also not great!)
I had completely forgotten about Windows device encryption. This Surface Pro 6 had been running Windows 11 Home, where encryption can be enabled automatically without you knowing.
Fortunately, the fix was more annoying than difficult. I grabbed the recovery key from my Microsoft account, typed in the 48 digits, changed the boot order so I could get back into Windows, suspended the encryption protection from PowerShell, and rebooted.
I say “suspended” because fully decrypting the drive would have taken considerably longer. And in this case, there wasn’t much point. The next time this Surface booted from its SSD, Windows wasn’t going to be there anymore anyway. After that, Ultramarine finally booted.
Linux made the Surface chill out
Most of the important stuff just works
Amir Bohlooli / MakeUseOf
Speakers, touchscreen, microphone, and cameras all worked immediately. Not a single terminal command was required to get any of them working. The Surface Pen connected and worked too, which was especially important considering that’s basically the whole reason my dad uses this thing.
This sounds like the setup for me to now list everything that didn’t work. Well… it is.
Amir Bohlooli / MakeUseOf
Alas, the Windows Hello IR camera does not work! I’m not even going to bother fighting that battle. It’s a sacrifice I’m OK with. The regular cameras also aren’t exactly perfect. The image is very dark and clearly needs some tuning. But hey, this is Linux we’re talking about. I can dig into the configuration and tweak it however I like. Even make it look better than Windows Camera did.
The important peripherals work, though, and the difference was soon noticeable. The Surface runs much cooler now. I haven’t heard the fan spin up once since switching to Linux, whereas Windows would make them run minutes after boot.
I’ll eventually install my usual collection of open-source software and it’ll start feeling like home pretty quickly. There is, however, one area where Windows still has the advantage.
Windows still knows it’s a tablet
KDE isn’t quite there yet
I’ve complained plenty in the past about Microsoft seemingly optimizing Windows 11 for an imaginary audience of tablet users. Well, ladies and gentlemen, I found the tablet user. It’s me.
All that extra spacing, padding, oversized buttons, and touch-friendly UI suddenly makes much more sense when you’re actually using Windows 11 on a touchscreen without a keyboard attached.
KDE Plasma does an OK job here. The on-screen keyboard pops up when I need it, and basic touch navigation works well enough. But it isn’t elegant. The interface doesn’t transform when I detach the Type Cover. There’s no convincing equivalent of Windows recognizing that it’s suddenly a tablet and adapting itself accordingly.
You can definitely use KDE with touch. I have been. But, it will still feel like operating a desktop interface with fingers rather than using an interface designed around them. That’s probably the biggest compromise I’ve found so far.
I expected a project, not an upgrade
I went into this expecting Linux on a Surface Pro to be one of those fun (?) weekend projects. You know, the ones where you spend six hours fixing drivers, get 80% of the hardware working, declare victory, and then reinstall Windows three days later… That isn’t what happened.
Ultramarine booted, the important Surface hardware worked, the Pen worked, and the machine became cooler and noticeably more pleasant to use. Even the pressure input from the pen worked. The biggest issue I’ve run into wasn’t the kernel, which in itself is a blessing. It’s that KDE isn’t quite as comfortable on a tablet as Windows 11. That’s a remarkably good problem to have. I have an array of Linux environments to choose from.
I wouldn’t tell every Surface owner to immediately wipe Windows and install Linux. Windows still has better integration with some of the hardware, especially if things like Windows Hello and a polished tablet UI matter to you.
But if you’ve got an older Surface that’s getting hot, sluggish, and increasingly unpleasant to use, I wouldn’t write the hardware off just yet.
The solution to my aging Microsoft tablet was exactly the same nearly annoying advice everyone drops in the comments sections: just install Linux, bro.
