Microsoft’s Surface 3 is a really nice piece of hardware. Being an free software enthusiast, I want a working GNU/Linux installation running on it, with Debian being my preferred distribution, as I’ve been using it for over a decade on my desktops, laptops, and servers.
This document is about installing Debian (unstable) on a Surface 3 (non-pro 64GB version) alongside Windows. Some advanced Linux/Hardware skills are assumed.
DISCLAIMER: Do this at your own risk! You might damage you hard- or software. This is only a guide for experienced users.
Status (AFAIK, Updated 2016/4/26)
It’s possible to install Debian (testing) on the Surface 3 (non-pro, it seems to be even easier with the pro variants), but there are some problems left:
Needs extra work: EFI Boot
Missing/broken support: Power management (buttons, suspend, battery/charging indicator), sound, Wifi (needs firmware, still unstable)
Could not test yet (possibly missing/broken): touch-display, sensors, camera, stylus
What you’ll need
- Latest Debian GNU/Linux amd64 testing/unstable ISO on an USB-Stick
- USB-Hub for USB-Stick with Debian installer, and some network device, e.g. a smartphone with USB-Tethering or an USB ethernet adapter.
- Possibly a fast USB flash stick to install Debian on. That way you don’t have to mess with the existing partitions.
Partition
Before changing the partition, you should create a recovery stick inside Windows. For some reason, this was not possibly for me, but on Microsoft’s pages it’s said that you can download a Surface 3 recovery image from there.
Shrink the main windows partition to create space for your GNU/Linux installation.
If you have problems shrinking it, try to defrag the partition and remove the recovery partition using the Windows command line.
Booting the stick
First you have to disable Secure Boot and change the boot order in the BIOS. You get to the BIOS with holding the volume-up button when powering up your Surface.
“Fixing” network hardware detection while installing Debian
The Wifi needs special firmware which is normally not included with the (network) installation ISOs. For some reason, the installation might hang at the network hardware detection step of the installation. You’ll have to switch to another virtual console and kill the “ethdetect” process and proceed without configuring the network hardware.
Wifi
Wifi works after installing the “firmware-libertas” package and rebooting.
Disable suspend to fix freeze
To fix occasional freezes caused by the system trying to put the surface into suspend, you’ll have to disable suspend by editing /etc/systemd/logind.conf and changing/uncommenting/adding “HandleLidSwitch=suspend”.