Ubuntu on surface pro 3 or Linux at all?

I have a Surface pro 3 running ubuntu and archlinux.
Everything works fine, but for the things you want you have to compile your own Kernel, which sounds harder than it is.

Download 4.0.1 Kernel sources from here and the patches from here.
Extract both files to a new directory.

tar xvf archive.tar.gz /folder

Install tools with

sudo apt-get install libncurses5-dev kernel-package` 

Apply all the patches with

patch -p1 -i xxx.patch

Copy the current config with:

cp /boot/config-`uname -r` .config

Run:

make menuconfig

then press ESCESC to save and exit.

Start the compiling with:

make-kpkg clean
fakeroot make-kpkg --initrd --append-to-version=-surface-pro-3 kernel_image kernel_headers

Compiling can take 1-2 hours, depending on your pc. If you have a dualcore you can add -j 2 after make-kpkg, -j 4 if you have a quadcore.
Make will then use the number of cores you specify.

Once it is done you will have two .deb files.
Install them with sudo dpkg -i linux-image*.deb linux-headers*.deb

Reboot your system and select the newly compiled Kernel while booting.


I run ubuntu only on my sp3 (no dualbooting) with everything working, battery, cameras, all buttons, etc. I recompiled kernel with all archlinux patches, and they got patches to make everything work. If you still got problems with buttons or other things I can try to find that download link again for their patches.

EDIT: Found it - https://github.com/matthewwardrop/linux-surfacepro3

The only thing I am not happy with is that there is no split-keyboard in linux. Don't see how tablets could be a goal to support with no working keyboard for touchscreens above 7". For that I had to make one my self. Using python and gtk3 to make a clone of the win8.1 keyboards split-layout. Few buttons missing which I need to add and then I will be happy :)

Tip: sudo apt-get install powertop sudo powertop --auto-tune

This will fix a lot of battery-hungry settings to be adjust for laptopmode, makes the tablets battery last just as long, and even a little longer, than on windows. without it the battery drain faster. It has to be ran after every boot (so put it in /etc/rc.local without sudo), and after every waking up from suspend/hibernate (can be scripted too).

Tags:

Surface