Solution to making the Surface Laptop keyboard work with Ubuntu 20.04
Microsoft surface is a series of touchscreen-based personal computers and interactive white boards designed and developed by Microsoft. As a data scientist I rely on my laptop to do everything including my job. I’m only 5 ft tall and really don’t want to carry a heavy laptop around. So I love my Surface laptop because it’s super light and only weights 2.76 pounds. But when I tried to boot my laptop into Ubuntu I found that my keyboard didn’t work at all. I browsed through multiple websites and was unable to settle on a consistent solution and tutorial of how to install Ubuntu on Microsoft surface.
A lot of people have raised this issue but none of their questions were answered. And many peer data scientists are intimidated by this issue and choose not to get a Surface product. That’s why I think it would be helpful to write a complete tutorial on how to make the Surface laptop keyboard work with Ubuntu 20.04. The tutorial would have everything from creating live USB to installing Ubuntu even without a mechanical keyboard and eventually getting a keyboard work on the Ubuntu environment.
There’s already a lot of good text and video tutorials out there that you can refer to. I’ll recap those steps but it’s also good to read and watch those materials first to get some sense of how the whole installation process will be. The ones I recommend are How to install Ubuntu 20.04 alongside Windows 10 (Dual Boot) by Korbin Brown and How to Dual Boot Ubuntu 20.04 LTS and Windows 10 [ 2020 ] | UEFI — GPT Method by Ksk Royal. The following steps are mostly from Ksk’s video but the most important session is the substance after that.
Step 1: Go to Ubuntu official website and download Ubuntu Desktop.
Step 2: Go to Rufus website and download the last updated Rufus tool.
Save Rufus tool and ubuntu-20.04-beta-desktop-amd64.iso on the same and easy to access path.
Step 3: Plug in a USB drive and format it.
Right click the Rufus tool you just downloaded and click “Run as administrator”. Choose your USB drive as Device and the ubuntu-20.04-beta-desktop-amd64.iso as Boot selection. In the nutshell, follow everything in the image below. In the end, click START.
Step 4: Reboot your laptop.
Surface products are a bit different from other laptops and to do that you are going to make sure your device is shut down. Then press and hold the volume-up button on your Surface, and press and release the power button(keep holding the volume-up button!). You will be entering an interface as such:
Now, go to Boot configuration and then click your mouse and hold on the USB Storage and drag it to the top. Once you’re done you can click Exit and restart your laptop!
Step 5: Important!!!!! Starting from here will be steps that are slightly different from installation on other laptops.
If you follow these installation steps and keeps clicking continue you’ll find yourself stuck at the final step as below:
And this was where I gave up last time. Because, MY KEYBOARD WAS NOT WORKING!!!! How was I supposed to type in that information? And apparently I can’t click on Continue anymore if I don’t fill out all the information on this step. So, let’s go back to the first page of this installation interface:
Here you just need to simply quit this process. No, you didn’t hear me wrong, quit! And then you will enter Ubuntu while the Install Ubuntu 20.04 LTS logo is still on the desktop:
Now go to setting and turn on an on-screen keyboard. The official instructions are here:
- Open the Activities overview and start typing Settings.
- Click on Settings.
- Click Universal Access in the sidebar to open the panel.
- Switch on Screen Keyboard in the Typing section.
Step 6: Sneakily make the best use of LibreOffice Writer:
Yep, this little life saving icon. Since you already turn on your on-screen keyboard you can not only connect your Surface to WiFi but also type in your USERNAME and PASSWORD on LibreOffice Writer. Simply select those contents and right click your mouse to copy those text. You can’t do Ctrl+c since your keyboard is not working.
Step 7: Go back to the installation and follow through steps from the video.
Paste your username and password at the last step and then click Continue. Your installation is completed. OK now the tutorial is finished and fulfills its mission. Ha ha just kidding:) Because even if you successfully installed Ubuntu, your keyboard is STILL NOT WORKING :) The following step is also distinguished from the usual ones.
Step 8: Install the latest kernel and config files of Linux Surface.
You’re able to use terminal on Ubuntu with your on-screen keyboard. I know it’s painful to type commands with it but you need to endure some difficulties. Follow the instructions on that Github repository. Shout out to Jakeday for his contribution to this community. What a life-saver. I’m going to copy and paste those steps here to give you a more consistent impression:
- (Prep) Install Dependencies:
sudo apt install git curl wget sed
2. Clone the linux-surface repo:
git clone --depth 1 https://github.com/jakeday/linux-surface.git ~/linux-surface
3. Change directory to linux-surface repo:
cd ~/linux-surface
4. Run setup script:
sudo sh setup.sh
5. Reboot on installed kernel.
Yeah and that’s it! You can just copy and paste these commands and no need to type on the terminal manually.
Step 9: Go to Advanced options for Ubuntu while rebooting and then enter Ubuntu, with Linux 5.1.15-surface-linux-surface kernel.
Then you’re able to use Ubuntu with your keyboard now!
Step 10(Maybe): In my case I ran into an error: You need to load the kernel first after trying to enter the Linux surface kernel.
The solution to this issue is here. Go back to your Surface configuration mode AKA bios and disable secure boot. Now you’re all set to explore your Ubuntu 20.04 on your super light Surface product. Enjoy!

By the way what is this animal? Black panther? Okay I’m tearing up. Allow me to say, Wakanda forever!