# linux-surface: the patched kernel for Microsoft Surface hardware on Linux

> The linux-surface project ships a patched Linux kernel and companion packages for Surface devices whose touch, pen, keyboard and camera hardware is not fully supported upstream. It is for people who already tried their distribution kernel and lost features.

**linux-surface/linux-surface** — Linux Kernel for Surface Devices

- Repository: https://github.com/linux-surface/linux-surface
- Stars: 7,754 · Forks: 364
- Language: Shell
- License: not declared
- Published: 2026-09-22 · Updated: 2026-09-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/linux-surface-linux-surface

## Why Surface hardware needs its own kernel

Linux supports many Surface devices out of the box, and the README says so plainly. The gap is in the parts that never made it upstream. From the fourth generation onward, Surface machines use a Microsoft embedded controller called the Surface Aggregator Module, or SAM. On newer models the keyboard and touchpad route their input through that controller, and because SAM-managed devices are not auto-discoverable, each new Surface model needs its own small patch before the input hardware responds. That is a per-device cost, not a one-time fix, and it explains why the project keeps a supported device list instead of claiming generic compatibility.

Touch and pen input is the second gap. Outside the Go series, fourth-generation and later Surface devices use a touch and pen system that requires user-space processing to produce multitouch, and the README states that this work has not been upstreamed. The webcam is the third: Surface relies on Intel's ISP for camera image processing, so the camera also needs user-space handling, and the README admits that not all devices are covered even with this project installed.

The intended audience is narrow and clearly stated. Try the standard distribution kernel first. If it works, stop. If features are missing, consult the feature matrix and then try this kernel and its packages. The project also positions itself as a staging ground: patches are prototyped here and sent upstream over time, and the maintainers say they cannot test every Surface model, which is an explicit warning that regressions are possible.

## How the repository is put together

This repository is not the kernel source tree. The top level holds patches/, configs/, pkg/, scripts/, contrib/ and .github/, and the README describes the contents as patches that are either derivative work targeting already licensed kernel source or new code added to the kernel. The kernel itself lives in a separate repository, linux-surface/kernel, which the README links as the kernel project. So the data flow is: patch sets and kernel configs live here, packaging recipes under pkg/ turn them into distribution packages, and scripts/ plus the release pipeline publish those packages. The releases listed for the project are distribution-tagged kernel builds, for example debian-6.19.8-3 and fedora-42-6.19.8-3, which tells you the project publishes per-distribution artifacts rather than one universal image.

contrib/ is where the smaller quality-of-life work sits. The README points readers to it after installation for useful tweaks, without enumerating them, so treat it as a directory to browse rather than a documented feature set. The wiki carries the material the README deliberately does not duplicate: installation and setup, compiling from source, disk encryption, and the supported devices and features matrix. If you are evaluating the project, the wiki is the real documentation and the README is the signpost.

## Installing linux-surface and getting a first boot

The README does not inline installation commands. It states that the project provides package repositories for the patched kernel and other utilities and directs readers to the detailed installation and setup guide on the wiki, where device-specific caveats also live. Because the exact repository URL and package names depend on your distribution, the honest first step is to open that guide and follow the section for your distribution rather than copying a command from a blog post.

What the README does give you is the shape of the workflow and the traps. If you use disk encryption or plan to, it says to follow the respective instructions in the installation guide and the separate wiki page on encryption. If you want to compile the kernel yourself, for example because your distribution is not supported, the README points to the compiling-from-source wiki page. If boot hangs while loading the ramdisk, the README's note is to install the Processor Microcode Firmware for Intel CPUs, usually found under Additional Drivers in Software and Updates.

After installation, the README suggests looking at the wiki and the contrib/ directory for tweaks. The README itself contains no command to run, so the first check is whatever your distribution's kernel version query is; the README does not document one. If it reports the version matching the linux-surface release you installed rather than the stock distribution kernel, the patched kernel is the one booting. If it reports the distribution version, the bootloader is still selecting the original kernel, and the installation guide is the place to resolve that.

## Where linux-surface fails or is the wrong choice

The most direct limitation is device coverage. The README lists supported models and then adds that the project cannot test on all Surface devices, that most testing happens on a Surface Book 2, and that your mileage may vary on other hardware. A device absent from the list is not a supported target; the README's advice is to open an issue rather than assume it will work.

Camera support is incomplete even on supported machines. The README states that while Intel ISP patches are being upstreamed, not all devices are supported even with this project, and more work remains. So a working touchscreen does not imply a working webcam.

Power management is a documented hazard. The README warns that using TLP can cause slowdowns, laggy performance and occasional hangs if it is not configured properly. That is a conflict between a third-party kernel and a common laptop power tool, and it is the kind of problem that shows up hours after installation rather than during it.

There is also a maintenance cost baked into the design. Because this is a kernel, every kernel update on your distribution either replaces it or races with it, and the project publishes its own releases per distribution branch. If your distribution or version is not among the published targets, the README's answer is to compile from source, which is a substantially larger commitment than adding a package repository. Finally, the README notes that maintainers ship features faster here precisely because they do not have to follow upstream release schedules or code standards. That is the trade: faster fixes, less review.

## linux-surface against the stock distribution kernel

The real alternative is the kernel your distribution already ships, and the project itself recommends it as the first thing to try. The difference is in what each one contains. A stock kernel carries only what has been merged upstream, so on a Surface device it may boot fine while leaving the touchscreen, pen, keyboard or camera non-functional, depending on the model and generation. The linux-surface kernel carries the SAM device patches, the user-space-dependent touch and pen support, and the Intel ISP camera work that the README says has not been fully upstreamed.

The consequence is not that one is better in general. The stock kernel is maintained by your distribution, updated through its normal channels, and tested against the rest of the system. The linux-surface kernel is maintained by a small group who state they cannot test every device, published as separate per-distribution releases, and paired with packages you also install. Choosing it means trading distribution-managed updates for feature coverage on specific hardware. If your Surface already works, the stock kernel wins on every axis except the features you do not need.

## Maintenance, releases and licensing

The repository is not archived, and its last push was on 2026-05-18. The most recent releases are dated 2026-05-09 and carry distribution and kernel version tags: fedora-43-6.19.8-3, fedora-42-6.19.8-3 and debian-6.19.8-3. The pattern matters more than any single tag. Packages are built per distribution and per kernel version, so upgrading your distribution release can move you outside the published set until a matching build appears. Budget for that: reinstalling or rebuilding the kernel after a distribution upgrade is part of running this, not an edge case.

On licensing, the repository does not declare a single project-wide licence, and the README explains why. The patches are either derivative work targeting an already licensed source, meaning parts of the Linux kernel, or they introduce new code. Unless a patch states otherwise, it falls under the licence of the source it targets, and new code falls under whatever licence the patch specifies internally. The README directs readers to the specific patch and source for details and points to the kernel LICENSES directory for licence texts. Practically, this means you cannot read one licence file at the repository root to know your obligations; you have to check the patches you actually use. That is a description of the arrangement, not legal advice, and anyone redistributing these patches should read the individual files.

## Conclusion

Adopt linux-surface if you run Linux on a listed Surface device and your distribution kernel leaves the touchscreen, pen, keyboard or camera unusable, and if you accept that a third-party kernel must be reinstalled on every kernel update. Do not adopt it on a device that is not in the supported list, or if your stock kernel already drives everything you need. Before installing, check the feature matrix for your exact model, read the disk encryption instructions if your root filesystem is encrypted, and confirm that a release exists for your distribution and version, since the published packages target Debian and Fedora branches.

## FAQ

### What is the linux-surface kernel?

It is a patched Linux kernel plus companion packages for Microsoft Surface devices, covering hardware that is not supported upstream yet. The README names three areas: the Surface Aggregator Module used for keyboard and touchpad input on newer models, touch and pen processing, and Intel ISP camera support.

### How do I install the linux-surface kernel?

The README does not inline the commands. It says the project provides package repositories for the patched kernel and other utilities and refers readers to the detailed installation and setup guide on the wiki, which also lists device-specific caveats.

### Can I install Linux Mint on my Surface Pro 7?

The README does not discuss Linux Mint. It lists the Surface Pro 7 among supported devices and says the project publishes package repositories for the patched kernel, with installation instructions in the wiki guide, so whether Mint is covered depends on what that guide supports.

### What is the best Linux distro for a Surface Pro?

The README does not rank distributions. It recommends trying your standard distribution kernel first and only installing the linux-surface kernel and packages if features are missing, checking the feature matrix for your device.

### Is there an alternative to the linux-surface kernel?

Yes: your distribution's stock kernel, which the README recommends trying first. The difference is coverage, since the stock kernel lacks the SAM device patches, the touch and pen user-space support and the Intel ISP camera work that this project ships.

### How do I install the linux-surface kernel on Ubuntu?

The README does not give Ubuntu-specific steps. It says the project provides package repositories for the patched kernel and other utilities and points to the installation and setup guide on the wiki, which is where distribution-specific instructions live.

## Sources

- [Issues](https://github.com/linux-surface/linux-surface/issues)
- [linux-surface/linux-surface on GitHub](https://github.com/linux-surface/linux-surface)
- [README](https://github.com/linux-surface/linux-surface/blob/master/README.md)
- [Releases](https://github.com/linux-surface/linux-surface/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/linux-surface-linux-surface
