{"id":13439817,"url":"https://github.com/linux-surface/linux-surface","last_synced_at":"2026-02-07T18:07:18.004Z","repository":{"id":37335783,"uuid":"155009767","full_name":"linux-surface/linux-surface","owner":"linux-surface","description":"Linux Kernel for Surface Devices","archived":false,"fork":false,"pushed_at":"2025-04-20T01:07:03.000Z","size":237928,"stargazers_count":5732,"open_issues_count":643,"forks_count":249,"subscribers_count":131,"default_branch":"master","last_synced_at":"2025-04-24T00:41:43.106Z","etag":null,"topics":["linux","linux-surface","surface-devices"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/linux-surface.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":"FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"liberapay":"linux-surface"}},"created_at":"2018-10-27T21:12:19.000Z","updated_at":"2025-04-23T19:54:04.000Z","dependencies_parsed_at":"2024-01-30T00:34:24.018Z","dependency_job_id":"a2d17cb5-2489-4329-bee5-f192587ade67","html_url":"https://github.com/linux-surface/linux-surface","commit_stats":null,"previous_names":[],"tags_count":1152,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linux-surface%2Flinux-surface","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linux-surface%2Flinux-surface/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linux-surface%2Flinux-surface/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linux-surface%2Flinux-surface/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/linux-surface","download_url":"https://codeload.github.com/linux-surface/linux-surface/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253990459,"owners_count":21995773,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["linux","linux-surface","surface-devices"],"created_at":"2024-07-31T03:01:17.336Z","updated_at":"2026-01-07T04:21:55.727Z","avatar_url":"https://github.com/linux-surface.png","language":"Shell","readme":"# Linux Surface\n\nLinux running on the Microsoft Surface devices.\nFollow the instructions below to install the latest kernel.\n\n[Announcements and Updates](https://github.com/linux-surface/linux-surface/issues/96) | [Upstream Status](https://github.com/linux-surface/linux-surface/issues/205)\n\n### Why / About this Project\n\nThese days, Linux supports a lot of devices out-of-the-box.\nAs a matter of fact, this includes a good portion of the Microsoft Surface devices—for most parts at least.\nSo why would you need a special kernel for Surface devices?\nIn short, for the parts that are not supported upstream yet.\n\nUnfortunately, Surface devices tend to be a bit special.\nThis is mostly because some hardware choices Microsoft made are rarely (if at all) used by other, more \"standard\", devices.\nFor example:\n- Surface devices (4th generation and later) use their own embedded controller (the Surface Aggregator Module, or SAM).\n  In contrast to other devices, however, some newer Surface devices route their keyboard and touchpad input via this controller.\n  Unfortunately, every new Surface device requires some (usually small) patch to enable support for it, since devices managed by SAM are generally not auto-discoverable.\n- Surface devices (4th generation and later, excluding the Go series) use a rather special system for touch and pen input.\n  In short, this requires user-space processing of touch and pen data to enable multitouch support and has not been upstreamed yet.\n- Surface devices rely on Intel's ISP for camera image processing.\n  This means that the webcam also requires some user-space processing.\n  While patches are being upstreamed, not all devices are supported (even with this project), and more work remains to be done.\n\nWe aim to send all the changes we make here upstream, but this may take time.\nThis kernel allows us to ship new features faster, as we do not have to adhere to the upstream release schedule (and, for better or worse, code standards).\nWe also rely on it to test and prototype patches before sending them upstream, which is crucial because we maintainers cannot test on all Surface devices (which also means we may break things along the way).\n\n_So should you install this custom kernel and the associated packages?_\nIt depends: We generally recommend you try your standard distribution kernel first.\nIf that works well for you, great!\nBut if you're missing any features or experiencing issues, take a look at our [feature matrix](https://github.com/linux-surface/linux-surface/wiki/Supported-Devices-and-Features#feature-matrix) and give our kernel and packages a try.\nIf your device is not listed as supported yet, feel free to open an issue.\n\n### Supported Devices\n\n* Surface Book\n* Surface Book 2\n* Surface Book 3\n* Surface 3\n* Surface Go\n* Surface Go 2\n* Surface Go 3\n* Surface Laptop\n* Surface Laptop 2\n* Surface Laptop 3\n* Surface Laptop 4\n* Surface Laptop 5\n* Surface Laptop 6\n* Surface Laptop Go\n* Surface Laptop Go 2\n* Surface Laptop Go 3\n* Surface Laptop Studio\n* Surface Laptop Studio 2\n* Surface Pro 1\n* Surface Pro 3\n* Surface Pro 4\n* Surface Pro (5th Gen) / Surface Pro 2017\n* Surface Pro 6\n* Surface Pro 7\n* Surface Pro 7+\n* Surface Pro 8\n* Surface Pro 9\n* Surface Pro 10\n* Surface Studio\n\n### Features / What's Working\n\nSee the [feature matrix](https://github.com/linux-surface/linux-surface/wiki/Supported-Devices-and-Features#feature-matrix) for more information about each device.\n\n### Disclaimer\n\n* For the most part, things are tested on a Surface Book 2.\n  While most things are reportedly fully working on other devices, your mileage may vary.\n  Please look at the issues list for possible exceptions.\n\n## Installation and Setup\n\nWe provide package repositories for the patched kernel and other utilities.\nPlease refer to the [detailed installation and setup guide][wiki-setup].\nThere, you may also find device-specific caveats.\nIn case you have disk encryption set up or plan to use it, take care to follow the respective instructions in the installation guide and have a look at the respective [wiki page][wiki-encryption].\nAfter installation, you may want to have a look at the [wiki][wiki] and the `contrib/` directory for useful tweaks.\n\nIf you want to compile the kernel yourself (e.g. if your distribution is not supported), please have a look at the [wiki][wiki-compiling].\n\n## Additional Information\n\n### Notes\n\n* If you are getting stuck at boot when loading the ramdisk, you need to install the Processor Microcode Firmware for Intel CPUs (usually found under Additional Drivers in Software and Updates).\n* Using TLP can cause slowdowns, laggy performance, and occasional hangs if not configured properly! You have been warned.\n* If you want to use hibernate instead of suspend, you need to create a swap partition or file, please follow your distribution's instructions (or [here][hibernate-setup]).\n\n### Support\n\nIf you have questions or need support, please join our [Matrix Space][matrix-space]!\nThis space contains\n- a [support channel][matrix-support] for general support and\n- a [development channel][matrix-development] for all development related questions and discussions.\n\n## License\nThis repository contains patches, which are either derivative work targeting a specific already licensed source, i.e. parts of the Linux kernel, or introduce new parts to the Linux kernel.\nThese patches fall thus, if not explicitly stated otherwise, under the license of the source they are targeting, or if they introduce new code, the license they explicitly specify inside of the patch.\nPlease refer to the specific patch and source in question for further information.\nLicense texts can be obtained at https://github.com/torvalds/linux/tree/master/LICENSES.\n\n[wiki]: https://github.com/linux-surface/linux-surface/wiki\n[wiki-setup]: https://github.com/linux-surface/linux-surface/wiki/Installation-and-Setup\n[wiki-compiling]: https://github.com/linux-surface/linux-surface/wiki/Compiling-the-Kernel-from-Source\n[wiki-encryption]: https://github.com/linux-surface/linux-surface/wiki/Disk-Encryption\n\n[matrix-space]: https://matrix.to/#/#linux-surface:matrix.org\n[matrix-support]: https://matrix.to/#/#linux-surface-support:matrix.org\n[matrix-development]: https://matrix.to/#/#linux-surface-development:matrix.org\n\n[hibernate-setup]: https://fitzcarraldoblog.wordpress.com/2018/07/14/configuring-lubuntu-18-04-to-enable-hibernation-using-a-swap-file\n[releases]: https://github.com/linux-surface/linux-surface/releases\n\n[linux-surface-kernel]: https://github.com/linux-surface/kernel/\n","funding_links":["https://liberapay.com/linux-surface"],"categories":["HarmonyOS","Tools","Shell"],"sub_categories":["Windows Manager","Linux Tools"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinux-surface%2Flinux-surface","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flinux-surface%2Flinux-surface","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinux-surface%2Flinux-surface/lists"}