Installing Debian 10 Linux on a Microsoft Surface Pro 6

photo of Debian installer on Surface Pro 6

I have been on the hunt for a portable, travel-friendly, not-too-expensive, computer running Debian for a while now, and it has led me to Microsoft’s Surface Pro.

A Surface Pro 6, to be exact, as I found one for a very reasonable price on Facebook Marketplace, located nearby.

tl;dr: I’m impressed, and I wish I had given this combination a try sooner. Much sooner.

(Yes, I’m writing this blogpost on it, while some people are kicking a football around.)

Installing Debian 10 was easy

Very easy.

I followed the instructions from linux-surface and, with one small exception (probably my fault), they worked flawlessly.

I used the DVD version of the Debian non-free installer, flashed to a USB stick. I was using macOS for this, so I used balena’s Etcher.

The Windows bit

The longest part of the process was doing the firmware updates on the machine in Windows, before starting the Debian 10 installation.

For some unfathomable reason, Microsoft required me to create an online account before I could log into the machine, which makes me all the happier that I planned on wiping Windows from the device as soon as I could.

I made a mistake here, and did all the Windows updates first, before realising that firmware updates are different. Anyway. If I did it again, I would just download the relevant firmware update and do that.

The Debian 10 and ’linux-surface’ bit

This was a normal Debian 10 installation.

I was impressed that - perhaps because I was using the non-free package - the Wi-Fi chipset was recognised, and I could connect seamlessly to a Wi-Fi network to do the installation. I’m not convinced that I needed the full DVD installer, but I didn’t go looking to see if there was a non-free ’netinst’ version instead.

The bit which didn’t go according to the instructions (again, probably my fault) was that, when it came to installing ’linux-surface’, the installation failed because of the reference to DVD packages in ‘/etc/apt/sources.list’.

I fixed this easily, by replacing the content of the file with a normal set of repos.

After that, it was plain sailing.

Almost everything works

I am impressed by just how much works. I know that’s kind of damning with faint praise, but the Surface Pro 6 is a sophisticated bit of hardware with some neat features, and I’m genuinely impressed. A lot of work has gone into this.

The keyboard worked during the installation process, which I was not expecting.

The touchscreen works beautifully (after the ’linux-surface’ bit is done). I’ve yet to try the pen, as I don’t have one, but hopefully I can rectify that soon, as I’m keen to see if marking up PDFs on the device is as good as it is on the iPad. Update: I have tried it and it works really well.

It detects and monitors the battery, and power management seems good, with estimated working time of around 6 - 8 hours (it fluctuates) with a light, but normal for me, load.

screenshot of battery discharge

Even more impressively, screen rotation works.

Audio works (not always a given with Linux).

Bluetooth works, and tethering my phone for mobile connectivity was a breeze. So far, it seems more reliable than doing the same thing on macOS, which is ironic given that my phone is an iPhone.

What doesn’t work so well

The cameras do not work. Not a complaint, as that is very clear from the ’linux-surface’ documentation, but a pain all the same. If these worked, the machine would be just about perfect. Since I spend so much of my working life now using video conferencing, I need to have options for this, and they boil down to:

Neither is ideal, but both are workable.

There seems to be some kind of brightness auto-adjustment which changes with irritating regularity. I suspect there is a setting which will solve this, but I have not gone looking yet. Update: disabling the “auto-brightness” setting in Tweaks has done the trick.

Suspend. It sort of works, and so I need to do a bit more testing. The bit which did not work for me was Wi-Fi coming back when it comes out of suspension. It wasn’t just a case of it not being connected, but that it didn’t seem to be aware of the Wi-Fi chipset at all, because I couldn’t even find available networks. A reboot cleared the problem. I’ve not dug into this either, other than to note that some Ubuntu users have reported a similar issue. I was not expecting it to work at all, so, really, not a complaint either.

The GUI (GNOME 3). Wow.

I’m not used to having a desktop environment with Debian 10, or indeed any other Linux, since I use it mostly over ‘ssh’, but I am blown away by how pleasant GNOME 3 (the default Debian 10 desktop environment) is.

It’s slick, and - personal opinion, of course - makes macOS feel dated.

It helps that Debian 10 comes with the ‘Tweaks’ package installed by default, as it was easy to make a few adjustments to get it tuned to my preferences. For example, I like to see the date in the top bar. I also like the ‘Night Light’ functionality (a bit like f.lux or Night Shift on macOS), to adjust the colour profile of the screen during darker hours of the day/night, to make it easier on the eyes.

Honestly, I’m tempted to either use the Surface Pro 6 connected to a couple of external monitors as my main computer for a while, or else configure a Raspberry Pi 4 (which I think will have more luck with two monitors, although I’m not of it, or the Surface Pro 6, will manage to 4k monitors at 60Hz) and use that. I’m that impressed.

My one hesitation is Microsoft Word. I’m just not sure LibreOffice is up to the job, when it comes to lengthy contracts with tracked changes, where I just can’t afford to miss something.

GNOME 3 and touch

It’s not optimised for a touch interface, but it works fine. But I’m in no doubt that this is a normal desktop computer with a touchscreen, and not a tablet optimised for touch navigation. And that’s fine for my needs.

GNOME 3 and keyboard shortcuts for window management

Niche, I know, but I am used to flicking windows around the screen and having them sit just where I want them with simple keyboard shortcuts.

GNOME 3 has this built in, so if I use the Windows key (called the “Super” key, apparently) and the up, down, left, or right arrow keys, I get what I want.

I know this sounds like such a trivial thing but, from a productivity point of view, having it set up to work for me, the way I like it, is so important.

WireGuard and Network Manager

WireGuard is not available by default in GNOME’s Network Manager. I followed these instructions, and they worked after a fashion.

I needed to install more packages to get it installed (and, sadly, I did not keep a good enough note of these; I followed the error messages though, so not rocket sciences) and, when I’d done that, a WireGuard configuration was available. However, even though I used the same configuration as I would have used in a normal WireGuard .conf file (apart from DNS servers, since the integrated tool doesn’t appear to recognises commas to separate servers), I could not get it to connect.

This is a pain, and is something I will investigate further, as configuring it this way would allow me (a) to enable WireGuard from the GUI, rather than running it from a terminal, and (b) to have WireGuard connect automatically when I connect to my phone, which would be a nice touch.

Further work needed.


My initial impressions are incredibly positive. What seems to be quite excellent hardware matched with superb software support.

There are some bits I still need to test, including connecting to an external monitor (e.g. for giving a presentation), but wow am I impressed so far.