My dad bought a Surface laptop for me. Can run Ubuntu on it? I tried and the keyboard does not work, so is there any version available that solves this problem?

  • 1
    Providing your OS/release details may help us to help you.
    – guiverc
    Jan 29, 2020 at 8:19
  • medium.com/@cl4855/… I read different materials in regard of this issue and combined them together here. I hope this can help you!
    – Angel Liu
    Sep 5, 2020 at 2:19

4 Answers 4


Noo linux distro contains drivers for any of surface machines. Only way to make it work is with those guys https://github.com/jakeday/linux-surface


Check out this tutorial on how to install Linux on a Microsoft Surface laptop.

In summary, the Secure Boot needs to be disabled and then the Surface laptop can be booted from a USB that has an Ubuntu image flashed on it.

The tutorial suggests first to "Try Out Ubuntu" instead of installing it at the start, to make sure that Ubuntu loads up successfully, which is a good idea. The tutorial also warns that:

WiFi does not work out of the box, so you will need to connect to the internet using a USB to ethernet converter to grab the Marvell WiFi driver.

There may be some commands to run in a terminal to get the hardware functional with the Ubuntu OS, such as the WiFi driver for the Surface laptop.

To troubleshoot the keyboard problem, try to plug an external keyboard into the USB port and test it. Maybe the kernel needs to be updated (see this question here and this tutorial here).

  • 1
    The Surface Laptop is a standard laptop, this is the Surface Pro, which is a 2-in-1 and an entirely separate product.
    – xjcl
    Mar 12, 2019 at 16:11
  • Tutorial link is broken
    – Erich
    May 12, 2021 at 19:03
  • @xjcl, I didn't see any info that the OP mentioned a Surface Pro. May 14, 2021 at 0:29
  • @Erich, correct, the link is now 404. I summarized the important info in my answer in case that happened, instead of just linking to the website without any summary, as per community guidelines. Maybe the following link can be of similar help. May 14, 2021 at 0:32
  • 2
    @engineerRed OP didn't mention the Surface Pro, but your link was about the Surface Pro. (OP mentioned the Surface Laptop)
    – xjcl
    May 14, 2021 at 0:37

I bought an SP4 ages ago just to put Linux on it. At first, I used the Tigerite kernel, which worked well with no issues for me. After updating to 18.04 and getting the first official 5.0 kernel I have ever used on my SP4, almost everything works.

The only thing that does not work is the touchscreen, which includes the pen, which I couldn't care less about. No complaints on the current Ubuntu version. I have a working keyboard, touchpad, power saving (suspend, hibernate), Bluetooth, graphics drivers and more!

However, I tried to use the Jakeday kernel and had nothing but WiFi issues. The WiFi kept dropping and giving an auth error, but the touchscreen did work. So, I switched back to the official kernel and had no more problems. Use these custom kernels at your own risk.


You didn't provide any information as to what type of surface you own, so I'll give you a blanket solution, and refine it if you edit your question. Before you try this, please try giving us more information, such as your Ubuntu version(16.04,19.10, etc.), the output of lsusb and what type of surface you own(year, model number, serial number, and most importantly, keyboard serial number).

According to the surface linux subreddit

Type Cover (2017): Partially Working, touchpad Multi-Touch works, sometimes detaching/re-attaching results in a buggy experience, little to no debugging has been done on the issue. The keyboard itself does not work. This is almost certainly remediable by adding the device ID's into the Linux kernel, so, please report the device ID's (and please differentiate your model of Type Cover (i.e. with Biometrics, without Biometrics, Signature, etc.)

Surface Laptop Integrated Keyboard/Trackpad: Partially Working, touchpad Multi-Touch works, the keyboard itself does not work. This is almost certainly remediable by adding the device ID's into the Linux kernel, so please report the device ID's.

this thread is a good example of the process of adding and ID to the kernel.

So what does this mean for you? It means that if you haven't tried already, this may be remedied by installing the custom surface linux kernel

Not the answer you're looking for? Browse other questions tagged or ask your own question.