The Surface Go, the first of the name, is a nice little tablet that does what it can with a weak Pentium processor and a 10-inch screen. It’s lightweight and portable, the perfect size to put in a backpack and use anywhere and anytime.
After the release of three new product generations, the original version can now be found for not too much money on the second-hand market.
But the tablet still has its limits. First of all, although it has a TPM module, its processor is not compatible with Windows 11. So how do you prolong the life of a device that will not be supported in a few years? The answer is simple: run Linux on it!
Ubuntu, the best ally of the Surface Go
Of course, that’s easier said than done. Microsoft does indeed use a lot of custom components in its Surface devices. Yes, you can run a standard Linux kernel on the Surface Go, but it’s a bit limited. Fortunately, the Surface Linux Project has developed a Surface-optimized kernel that can integrate with most existing distributions.
Well, having said that, the next question is: which Linux distribution is it smart to choose? After some research, it seems that Ubuntu (and its derivatives) represent the best option. Surface Go may not have all the security criteria required to install Windows 11, but like most Windows devices since the launch of Windows 8, it uses Secure Boot to protect your data. This means that you should always use a Linux system that ships with an appropriate code-signing certificate, unless you want to spend time fiddling with the Surface Go’s UEFI settings, disabling most hardware security features, and follow a long and complex process to install and start Linux.
The first Surface Go of the name. Photo by Munzimus_Octavius at Wikimedia Commons.
By choosing Ubuntu, you can download the LTS (long term support) 22.04 version of the system, before using the Rufus bootable USB creation tool. The latter allows you to turn the downloaded ISO into a media USB drive that supports UEFI GPT systems. It’s best to have a USB-C drive handy though, as the Surface Go only has one USB-C port, and installing Linux through a USB hub can be a hassle.
How to install Ubuntu on Surface Go?
Installation is quite easy. You must first go to the advanced restart options of Windows 10, in Settings > Update & Security > Recovery. There you will get the option to boot your device from a USB device. Here then, on the Ubuntu system image.
Windows advanced restart options. Screenshot by Corentin Béchade.
Once the USB key is inserted, it is possible to start by choosing Linpus Lite. Please note, this is not really the Linpus distribution, the Surface bootloader is affected by a bug that identifies any Grub-based bootable Linux media as Linpus. So choose this option to start the Ubuntu installation, starting by launching the desktop environment, so you can see what it will look like on your Surface.
Although it is possible to opt for a dual-boot installation by repartitioning the Surface Go disk, the lack of space on the eMMC or SSD disks makes it easier to simply erase Windows and start from scratch. zero with a fresh install. Ubuntu will partition and format the disk, changing from Windows NTFS file system to Linux ext4 file system.
There is still a small problem to be aware of during installation: the 10-inch screen of the Surface Go is not fully supported by the Ubuntu installation wizard. When you go through the steps for configuring the wireless network, choosing the keyboard language and configuring the time zone, you will need to use the key table to reach the necessary buttons to go to the next step. You can also turn your tablet sideways and use touch to drag the windows until the buttons are visible. In fact, Surface Go touchscreen support is active from the first boot, which simplifies the use of your Surface during the installation phase, and eliminates the need to work with an external keyboard.
Install the Linux kernel for Surfaces
Once Ubuntu is installed and configured, your Surface will restart. At this point, you can remove your USB key. After the first boot, Ubuntu will scale to the Surface Go’s native resolution, but scale to 200%. It is recommended to go to Ubuntu display properties to switch to 125% or 150% zoom level depending on your preference. You will then need to make sure everything is up to date, using the dedicated manager, before installing a custom Surface kernel.
Next step, the Surface Linux software repository. There you’ll find instructions on how to install the latest kernel, as well as necessary headers and key dependencies, including a set of drivers to handle the Surface Go touchscreen.
You can copy-paste the commands detailed in the tutorial, taking care to follow the instructions for Debian-based Linux distributions. Start by repatriating the keys necessary to sign the packages, before adding the Surface Linux repositories.
Webcams, the black point of the experience
Once these are in place, you can then download and install the new kernel, enable the display drivers, and finally download the new kernel’s Secure Boot startup key. Be sure to follow the detailed information in the terminal before updating the Grub bootloader and restarting your Surface.
Verifying kernel installation using neofetch. Screenshot by Simon Bisso/ZDNet.
You should now have a custom Linux kernel in Ubuntu. Install and use the neofetch program to get details about your system. Then check that the kernel version includes the mention “Surface”.
Ubuntu works well on the Surface Go: the system is fast and efficient, offers good battery life and support for almost all hardware. Unfortunately, this “almost” means that there is no native support for cameras. You have to compile experimental drivers from the libcam project to use the different webcams. Fortunately, the GitHub Linux Surface repository has instructions for completing this project and indicates the commands to copy and paste into the terminal.
Breathe new life into your Surface Go
All required packages may not install with the provided apt command. This is because some have their own dependencies and therefore need to be installed separately. Once installed, it is possible to clone the libcamera git repository and compile the camera drivers. Once these are installed, you will have access to the front and rear cameras from any application that uses libcamera or gstreamer.
The whole process, including compiling the drivers for the cameras, took about an hour. Ubuntu 22.04 comes with LibreOffice suite and Firefox as default browser. It is possible to install Microsoft’s Edge browser as an alternative. This makes it possible to host PWAs like Outlook, OneDrive or Twitter, providing a sufficient toolset for a small all-purpose tablet. It’s even possible to use the stylus, by installing a modified version of Ubuntu’s Wacom tablet drivers.
Configuring Surface Pen support in Ubuntu. Screenshot by Simon Bisso/ZDNet.
Running Linux on hardware like this helps breathe new life into the Surface Go and ensure it has a future beyond Microsoft’s chosen expiration date. The process can even be considered in schools and companies, in order to give a facelift to equipment that would otherwise be discarded.