浪人
DE | EN
Linux on the Surface Go — The linux-surface Kernel
tech

Linux on the Surface Go — The linux-surface Kernel

Back to Blog
2 min read

Linux on the Surface Go — The linux-surface Kernel

After the base installation, Ubuntu runs surprisingly well on the Surface Go — but critical things are missing. Audio doesn’t work, the Surface Pen barely responds, and the camera is inaccessible. The reason isn’t a configuration error, but something structural: the standard Ubuntu kernel simply doesn’t know the Surface Go’s specific hardware well enough.

The solution is the linux-surface kernel — and it’s the cornerstone of this entire migration.

What is the linux-surface Kernel?

Microsoft Surface devices use hardware that’s rarely found in other laptops and tablets. The mainstream Linux kernel therefore gets support for this hardware slowly and incompletely. The linux-surface project maintains its own set of patches based on the current Linux kernel, specifically for Surface hardware. These patches are offered as finished, signed packages via a dedicated apt repository — for Ubuntu it’s the primary target platform.

Important to know: the original Ubuntu kernel remains as a fallback after installation. In the GRUB boot menu, you can always switch back to it if needed.

Installation

First, import the signing key so that apt accepts the repository as trustworthy:

wget -qO - https://raw.githubusercontent.com/linux-surface/linux-surface/master/pkg/keys/surface.asc \
  | gpg --dearmor | sudo dd of=/etc/apt/trusted.gpg.d/linux-surface.gpg

Then add the repository:

echo "deb [arch=amd64] https://pkg.surfacelinux.com/debian release main" \
  | sudo tee /etc/apt/sources.list.d/linux-surface.list

And install the packages:

sudo apt update
sudo apt install linux-image-surface linux-headers-surface libwacom-surface iptsd

Along with the kernel itself, two important packages come with it:

  • iptsd — the touch input daemon that manages multitouch and pen input
  • libwacom-surface — extends Wacom tablet support with Surface-specific pen profiles

Then reboot:

sudo reboot

After the Reboot

The reboot was uneventful — the system came up cleanly. To verify that you’ve actually landed in the new kernel:

uname -r
# Returns something like: 6.x.x-surface

What immediately stood out: the system felt more fluid than the live system from the USB stick — but to be honest, that was already the case after the base Ubuntu installation. The actual difference of the surface kernel showed itself in the hardware: audio worked right away, the special keys on the Type Cover responded correctly, the trackpad worked as expected, and the Surface Pen was ready to use.

The switch was technically the most important step of the entire migration — in practice it was almost uneventful. Anyone expecting the worst will be pleasantly surprised.

Hardware Status After Phase 2

HardwareStatus
Type Cover Keyboard✅ Works
Type Cover Trackpad❌ Broken (fixed in Phase 3)
Touchscreen✅ Works
Display / Scaling✅ Works
WiFi✅ Works
Audio✅ Works
Surface Pen (Basic)✅ Works
IR Camera / Face Login🔲 Coming in Phase 4

One caveat: the Type Cover’s trackpad stopped working after the kernel switch — which is odd, because it worked perfectly in the live system. What’s behind it and how to fix it will be in the next article.