You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We now have a build system for packages for Arch, Debian and Fedora which should make it easier for us to release new kernel versions. The pkg directory also contains the packaging files that you can use to rebuild the kernel on your own.
Automated repositories
We have set up https://pkg.surfacelinux.com/ as the official source for patched kernel packages and other utilities. If you were using the package repositories before, please update your local setup.
The package repositories are now the recommended way to install the kernel. That way you will automatically receive future updates.
We are officially supporting Arch, Debian and Fedora builds.
The config files are moved to the device-specific/known issues wiki pages and are no longer automatically copied over.
The setup.sh script now basically does nothing.
As a result of these changes, installation is now as easy as adding the package repository, installing a bunch of packages and following the guide to add any necessary config files for your device.
New IPTS driver (pen or single-touch)
5.5 patchsets also feature a new IPTS driver which works without the Intel GuC submission APIs that were removed upstream. The caveat is that it supports either pen OR single-touch. If you want to continue using multi-touch, either use the LTS release (4.19) or please manually install the latest 5.3 release.
By default pen support is enabled. If you want to switch to single-touch create a file under /etc/modprobe.d/ipts.conf:
options ipts singletouch=y
Note: The new driver works on gen7 (SL3 Intel & SP7) as well!
mwifiex: power_save now disallowed by default to improve connection stability
v5.5: fedora-31-5.5.9-3, fedora-30-5.5.9-3, debian-5.5.9-2, arch-5.5.9-2
v5.6: Since the first release of the v5.6 kernel
v4.19: debian_lts-4.19.110, arch_lts-4.19.110
You may have already noticed, since commit linux-surface/kernel@7182ea0b4b5e9a, power_save is disallowed by default. There have been many reports that configuring powr_save from userspace tools (e.g. via NetworkManager config file or udev rule) is not so solid. Now, no need to configure it manually.
If you want to try to allow power_save, pass allow_ps_mode=Y parameter to the mwifiex driver. This only allows it to be enabled. To actually enable it, run sudo iw dev $devname set power_save on or by any other tools and check if it's actually enabled by sudo cat /sys/kernel/debug/mwifiex/mlan0/debug | grep "ps_"
"v4.19: IPTS (touchscreen driver) stops working (SP4 and SB1)" has been hopefully fixed
v4.19: debian_lts-4.19.123-1, arch_lts-4.19.123-1
Since commit linux-surface/kernel@8b45a31eb5977d, touch input on all kinds of SP4/SB1 devices should work without crashing. The no_feedback quirk has been finally removed🎉 thanks to @StollD
If you find any issues, please open an issue and let us know.
EDIT: This fix is for "touch input crashing after some use" or "touch input broken when no_feedback=1". You may still encounter the other issues, especially regarding suspend.
Noteworthy changes in the v5.7.7 and v4.19.131 releases
There have been some changes to the Surface Aggregator Module driver that have now been integrated into the v5.7.7 and 4.19.131 releases (and also the 5.4 patches). More specifically:
The first parts of the Surface Book 3 support have been merged: You can now control the dGPU power via surface-control or alternatively directly via sysfs, exactly like on the Surface Book 2. Further support (especially keyboard and touchpad) is currently still under development, so if you're using a Surface Book 3, you probably still want to head over to the Surface Aggregator Module repo and install the module from the feature/sb3-v2-branch.
The Surface Pro 6 with MSHW0111 as SID-device-ID is now correctly set up. This means that the lid and performance-mode setting should now work correctly on those devices.
The internals of the Surface Serial Hub (surface_sam_ssh) driver have been completely re-implemented with the goal of having an intrinsically asynchronous communication framework. This should ideally result in smoother communication with the EC and less hick-ups. More restructuring is yet to come, but this is a first big step towards getting the Surface Aggregator Module driver upstream. Additionally, some code has been cleaned up.
New packaging structure for Debian/Ubuntu packages
The packaging approach for .deb packages has changed with debian-5.7.7-2 and debian_lts-4.19.131-2. Previous packages did not remove outdated initrd files, unnecessarily consuming space on the boot partition. To fix this, we have now switched to meta-packages, meaning that each kernel is packaged with its version in the package name (e.g. linux-image-5.7.7-surface) and meta packages (linux-image-surface, linux-headers-surface, linux-image-surface-lts, linux-headers-surface-lts) can be used to keep the kernels up to date.
Unfortunately, this means that to upgrade the kernels (only this time, after that everything should work normal/as before), you'll have to manually uninstall the current kernel packages (linux-image-surface, linux-headers-surface, linux-image-surface-lts, and/or linux-headers-surface-lts) and re-install them afterwards. If you've already tried to upgrade, you can also complete the upgrade running sudo apt-get --fix-broken install, which should solve the issue for you automatically.
Additionally, we recommend you manually remove outdated initrd files after the upgrade. These files can be found under /boot, for example:
Please remove only those that are outdated ending with -surface or -surface-lts, as indicated by their version. It is probably best, if you do this after uninstalling the old packages and before installing the new ones, as then you can remove all -surface/-surface-lts initrd files since installing the packages afterwards will re-build the new ones.
In addition, we have decided to drop the custom linux-libc-dev packages. The necessary version of these packages should be provided by your distribution, so you should replace those (linux-libc-dev-surface, linux-libc-dev-surface-lts) by installing linux-libc-dev from the repository of your distribution.
Additionally a bug in the dGPU part of the Surface Aggregator Module driver have been fixed, which caused the driver to deadlock when resuming from suspend with a dGPU turned on at boot time via module parameters (https://github.com/linux-surface/linux-surface/issues/223).
Noteworthy changes in the v5.7.8-2 and v4.19.132-2 releases
Unfortunately, the previous release introduced a bug, leading to HID devices handled via the SAM module (i.e. keyboard and touchpad) on the Surface Laptop not working any more. This should be fixed with the new releases. If this issue persists with those releases, please let us know at linux-surface/surface-aggregator-module#45.
Performance modes have been enabled for Surface Laptop 1 and 2.
Support for D0-exit/D0-entry notifications, sent to the SAM controller when suspending (D0-exit) or resuming (D0-entry) on newer (gen. 7+) devices, has been added. This may (or may not) change suspend behavior slightly on those devices.
Other internal changes and bug-fixes in the SAM driver.
More details can, as always, be found in the respective commit messages (e.g. for v5.7).
We switched IPTS support from built-in single-touch to our new-ish iptsd daemon. This means, that to get touch support, you'll have to install the iptsd package and start/enable the systemd iptsd.service (systemctl enable --now iptsd.service).
The iptsd daemon is still in somewhat early stages, but it should already provide a good replacement for the previous single-touch-only driver. It does support multi-touch (and stylus at the same time), but contact-area/pressure calculation is currently still missing, and things like jitter in contact points may need some improvement. Unfortunately, there have been no changes for Gen7 devices (SL3, SB3, SP7) yet.
Changes in v5.8.1-3 (Arch non-LTS), v5.8.1-2 (other), v4.19.139-3 (Arch LTS), and v4.19.139-2 (other)
In these versions, a new bus and device type has been added for System Aggregator Module (SAM) devices. Due to this, a couple of things have been changed with regards to userspace:
First of all, the surface_sam_sid module has been replaced by surface_sam_device_hub. If you rely on this module name (e.g. in your mkinitcpio.conf for an encrypted device setup on the Surface Laptop 3 or Book 3), please make sure to update the name there.
Second, the device path of the performance mode device has been changed. It can now be found under /sys/bus/ssam/devices/03:01:00:02/. The surface-control tool has been updated accordingly with version 0.2.7, so please make sure that it is up-to-date if you encounter any issues with the performance mode.
Known issues: On 7th generation devices (SP7/SL3/SB3), there currently is a warning emitted to the kernel log when the charger is connected or disconnected. This can be safely ignored and will be addressed in the next release. This has been fixed in the v5.8.3 and v4.19.141 releases.
A bug has been fixed in the SAM driver regarding initialization of driver when probing against the battery in the base of the device.
The sb1_dgpu_sw module has been integrated into the kernel/patches. This means you can now control your dGPU power directly via echo 1 | sudo tee /sys/bus/platform/devices/MSHW0041:00/dgpu_power to turn it on and echo 0 | sudo tee /sys/bus/platform/devices/MSHW0041:00/dgpu_power to turn it off. The acpi-call module is no longer required.
These releases contains two major changes that may need manual intervention:
The device path for the performance-mode device has changed to /sys/bus/surface_aggregator/devices/01:03:01:00:01/. If you are using the surface-control utility, you will need to update that to v0.2.8. Specifically, the bus has been renamed to surface_aggregator and a domain ID has been introduced for Surface Aggregator Module (SAM) client devices.
All SAM modules have been renamed. If you rely on their names, e.g. via intird/initram/..., you will need to update that when updating the kernel. The specific changes are:
A bug has been fixed where SAM client devices would not be registered on the Surface Book 3, causing keyboard, touchpad, and battery information to not work.
Kconfig options for the Surface Aggregator Module have been renamed in accordance to renaming the modules. Consult the updated config files if you rely on those.
Known Issues: There is a bug that may be triggered under certain conditions, preventing the Surface Aggregator Module drivers to load. This will be fixed with the next releases, new kernels with the fix applied are already being built.
This update to iptsd brings a very significant change: It replaces the old basic / advanced algorithms with a new algorithm that is a combination of both. This new algorithm is more robust towards noise (like the advanced one), while using vastly less resources (like the basic one).
If you have calibrated iptsd, you must remove the old calibration, as the values will no longer be accurate.
This update also changed the available config options. If you have a custom configuration, please check the values against the reference configuration.
We have updated our Fedora packages to follow the upstream packages more closely. This fixes some issues with our old package, for example akmods should now work properly. Like the stock kernel, it will also keep around the last 3
versions automatically.
However, because the transition between the old and new packages is hitting an edge case in DNF, you MUST temporarily disable the running kernel protection. Otherwise DNF will refuse to remove the old package and install the new one.
You can do this by either rebooting into a stock kernel to do the upgrade, or by running the following command:
Add initial Support for the Surface Laptop Studio 2. In particular it's SAM EC, unlocking support for the keyboard, HID-based sensors, battery information, (ACPI) platform profiles, and tablet-mode/display orientation. Note that we do not support the touchpad yet.
Changes in v6.6.10 (Arch Linux) / v6.6.11 (Ubuntu/Fedora)
Add driver for reading the fan speed on newer Surface devices with a fan. This driver is currently only enabled on the Surface Pro 9. Credits go to @iwanders (https://github.com/linux-surface/kernel/pull/144).
Add a driver for reading out temperature sensors connected via the Surface Aggregator Module. This driver is currently only enabled on the Surface Pro 9.
Add initial support for the Surface Laptop 6. This includes basic SAM EC support, unlocking the keyboard, other HID-based devices, battery information, platform profiles (including fan), and additional temperature sensors. Touchpad support is still work in progress (see https://github.com/linux-surface/linux-surface/issues/1432).
Activity
archseer commentedon Feb 27, 2020
5.5.6 was released!
Build system
We now have a build system for packages for Arch, Debian and Fedora which should make it easier for us to release new kernel versions. The
pkgdirectory also contains the packaging files that you can use to rebuild the kernel on your own.Automated repositories
We have set up
https://pkg.surfacelinux.com/as the official source for patched kernel packages and other utilities. If you were using the package repositories before, please update your local setup.The package repositories are now the recommended way to install the kernel. That way you will automatically receive future updates.
We are officially supporting Arch, Debian and Fedora builds.
The config files are moved to the device-specific/known issues wiki pages and are no longer automatically copied over.
The
setup.shscript now basically does nothing.As a result of these changes, installation is now as easy as adding the package repository, installing a bunch of packages and following the guide to add any necessary config files for your device.
New IPTS driver (pen or single-touch)
5.5 patchsets also feature a new IPTS driver which works without the Intel GuC submission APIs that were removed upstream. The caveat is that it supports either pen OR single-touch. If you want to continue using multi-touch, either use the LTS release (4.19) or please manually install the latest 5.3 release.
By default pen support is enabled. If you want to switch to single-touch create a file under
/etc/modprobe.d/ipts.conf:Note: The new driver works on gen7 (SL3 Intel & SP7) as well!
kitakar5525 commentedon May 16, 2020
mwifiex: power_save now disallowed by default to improve connection stability
v5.5: fedora-31-5.5.9-3, fedora-30-5.5.9-3, debian-5.5.9-2, arch-5.5.9-2
v5.6: Since the first release of the v5.6 kernel
v4.19: debian_lts-4.19.110, arch_lts-4.19.110
You may have already noticed, since commit linux-surface/kernel@7182ea0b4b5e9a, power_save is disallowed by default. There have been many reports that configuring powr_save from userspace tools (e.g. via NetworkManager config file or udev rule) is not so solid. Now, no need to configure it manually.
If you want to try to allow power_save, pass
allow_ps_mode=Yparameter to the mwifiex driver. This only allows it to be enabled. To actually enable it, runsudo iw dev $devname set power_save onor by any other tools and check if it's actually enabled bysudo cat /sys/kernel/debug/mwifiex/mlan0/debug | grep "ps_"kitakar5525 commentedon May 16, 2020
"v4.19: IPTS (touchscreen driver) stops working (SP4 and SB1)" has been hopefully fixed
v4.19: debian_lts-4.19.123-1, arch_lts-4.19.123-1
Since commit linux-surface/kernel@8b45a31eb5977d, touch input on all kinds of SP4/SB1 devices should work without crashing. The
no_feedbackquirk has been finally removed🎉 thanks to @StollDIf you find any issues, please open an issue and let us know.
EDIT: This fix is for "touch input crashing after some use" or "touch input broken when
no_feedback=1". You may still encounter the other issues, especially regarding suspend.qzed commentedon Jul 2, 2020
Noteworthy changes in the v5.7.7 and v4.19.131 releases
There have been some changes to the Surface Aggregator Module driver that have now been integrated into the v5.7.7 and 4.19.131 releases (and also the 5.4 patches). More specifically:
surface-controlor alternatively directly via sysfs, exactly like on the Surface Book 2. Further support (especially keyboard and touchpad) is currently still under development, so if you're using a Surface Book 3, you probably still want to head over to the Surface Aggregator Module repo and install the module from thefeature/sb3-v2-branch.MSHW0111as SID-device-ID is now correctly set up. This means that the lid and performance-mode setting should now work correctly on those devices.surface_sam_ssh) driver have been completely re-implemented with the goal of having an intrinsically asynchronous communication framework. This should ideally result in smoother communication with the EC and less hick-ups. More restructuring is yet to come, but this is a first big step towards getting the Surface Aggregator Module driver upstream. Additionally, some code has been cleaned up.qzed commentedon Jul 5, 2020
New packaging structure for Debian/Ubuntu packages
The packaging approach for
.debpackages has changed withdebian-5.7.7-2anddebian_lts-4.19.131-2. Previous packages did not remove outdated initrd files, unnecessarily consuming space on the boot partition. To fix this, we have now switched to meta-packages, meaning that each kernel is packaged with its version in the package name (e.g.linux-image-5.7.7-surface) and meta packages (linux-image-surface,linux-headers-surface,linux-image-surface-lts,linux-headers-surface-lts) can be used to keep the kernels up to date.Unfortunately, this means that to upgrade the kernels (only this time, after that everything should work normal/as before), you'll have to manually uninstall the current kernel packages (
linux-image-surface,linux-headers-surface,linux-image-surface-lts, and/orlinux-headers-surface-lts) and re-install them afterwards. If you've already tried to upgrade, you can also complete the upgrade runningsudo apt-get --fix-broken install, which should solve the issue for you automatically.Additionally, we recommend you manually remove outdated initrd files after the upgrade. These files can be found under
/boot, for example:Please remove only those that are outdated ending with
-surfaceor-surface-lts, as indicated by their version. It is probably best, if you do this after uninstalling the old packages and before installing the new ones, as then you can remove all-surface/-surface-ltsinitrd files since installing the packages afterwards will re-build the new ones.See also linux-surface/repo#3 for the issue reporting this problem.
In addition, we have decided to drop the custom
linux-libc-devpackages. The necessary version of these packages should be provided by your distribution, so you should replace those (linux-libc-dev-surface,linux-libc-dev-surface-lts) by installinglinux-libc-devfrom the repository of your distribution.qzed commentedon Jul 13, 2020
Noteworthy changes in the v5.7.8 and v4.19.132 releases
More Surface Book 3 support has been merged, specifically:
This means, that (apart from the known issues) only support for the detachment daemon is missing, which can be found in an experimental stage in https://github.com/linux-surface/surface-aggregator-module/tree/feature/sb3-v3.
Additionally a bug in the dGPU part of the Surface Aggregator Module driver have been fixed, which caused the driver to deadlock when resuming from suspend with a dGPU turned on at boot time via module parameters (https://github.com/linux-surface/linux-surface/issues/223).
More details can be found in the commit messages: https://github.com/linux-surface/linux-surface/commit/b70e5fb1c1c9e652a006c2e74c12dca67b6a7fa9 (v5.7), https://github.com/linux-surface/linux-surface/commit/7a41e166e1febfae1bbaa6efd9e2862bc5d86f87 (v5.4), and https://github.com/linux-surface/linux-surface/commit/f866ce0e3f03e2d1243bf12121d13757257614ec (v4.19).
qzed commentedon Jul 15, 2020
Noteworthy changes in the v5.7.8-2 and v4.19.132-2 releases
Unfortunately, the previous release introduced a bug, leading to HID devices handled via the SAM module (i.e. keyboard and touchpad) on the Surface Laptop not working any more. This should be fixed with the new releases. If this issue persists with those releases, please let us know at linux-surface/surface-aggregator-module#45.
qzed commentedon Jul 30, 2020
Noteworthy changes in the v5.7.11-1 and v4.19.135-1 releases
The most notable changes are:
More details can, as always, be found in the respective commit messages (e.g. for v5.7).
qzed commentedon Aug 15, 2020
Changes in v5.8.1
We switched IPTS support from built-in single-touch to our new-ish iptsd daemon. This means, that to get touch support, you'll have to install the
iptsdpackage and start/enable the systemdiptsd.service(systemctl enable --now iptsd.service).The iptsd daemon is still in somewhat early stages, but it should already provide a good replacement for the previous single-touch-only driver. It does support multi-touch (and stylus at the same time), but contact-area/pressure calculation is currently still missing, and things like jitter in contact points may need some improvement. Unfortunately, there have been no changes for Gen7 devices (SL3, SB3, SP7) yet.
If you experience any issues, let us know. You can always revert to the previous, single-touch-/stylus-only implementation by installing the old driver from https://github.com/linux-surface/intel-precise-touch/tree/old-driver (see "Building (DKMS)").
qzed commentedon Aug 18, 2020
Changes in v5.8.1-3 (Arch non-LTS), v5.8.1-2 (other), v4.19.139-3 (Arch LTS), and v4.19.139-2 (other)
In these versions, a new bus and device type has been added for System Aggregator Module (SAM) devices. Due to this, a couple of things have been changed with regards to userspace:
surface_sam_sidmodule has been replaced bysurface_sam_device_hub. If you rely on this module name (e.g. in yourmkinitcpio.conffor an encrypted device setup on the Surface Laptop 3 or Book 3), please make sure to update the name there./sys/bus/ssam/devices/03:01:00:02/. The surface-control tool has been updated accordingly with version 0.2.7, so please make sure that it is up-to-date if you encounter any issues with the performance mode.Known issues: On 7th generation devices (SP7/SL3/SB3), there currently is a warning emitted to the kernel log when the charger is connected or disconnected. This can be safely ignored and will be addressed in the next release. This has been fixed in the v5.8.3 and v4.19.141 releases.
qzed commentedon Aug 28, 2020
Changes in v5.8.5 and v4.19.142
qzed commentedon Sep 8, 2020
Changes in v5.8.7 and v4.19.143
sb1_dgpu_swmodule has been integrated into the kernel/patches. This means you can now control your dGPU power directly viaecho 1 | sudo tee /sys/bus/platform/devices/MSHW0041:00/dgpu_powerto turn it on andecho 0 | sudo tee /sys/bus/platform/devices/MSHW0041:00/dgpu_powerto turn it off. The acpi-call module is no longer required.qzed commentedon Sep 17, 2020
Changes in v5.8.10 (Fedora v5.8.9) and v4.19.146
These releases contains two major changes that may need manual intervention:
/sys/bus/surface_aggregator/devices/01:03:01:00:01/. If you are using thesurface-controlutility, you will need to update that to v0.2.8. Specifically, the bus has been renamed tosurface_aggregatorand a domain ID has been introduced for Surface Aggregator Module (SAM) client devices.Additionally:
Known Issues: There is a bug that may be triggered under certain conditions, preventing the Surface Aggregator Module drivers to load. This will be fixed with the next releases, new kernels with the fix applied are already being built.
60 remaining items
StollD commentedon Apr 19, 2023
iptsd 1.2.0 has been released
This update to iptsd brings a very significant change: It replaces the old basic / advanced algorithms with a new algorithm that is a combination of both. This new algorithm is more robust towards noise (like the advanced one), while using vastly less resources (like the basic one).
If you have calibrated iptsd, you must remove the old calibration, as the values will no longer be accurate.
This update also changed the available config options. If you have a custom configuration, please check the values against the reference configuration.
For a full list of (user-facing) changes, look here: https://github.com/linux-surface/iptsd/releases/tag/v1.2.0
qzed commentedon Apr 20, 2023
Changes in v6.2.12 and v6.2.11 (Fedora)
StollD commentedon Jun 9, 2023
Changes in v6.3.6 (Fedora)
We have updated our Fedora packages to follow the upstream packages more closely. This fixes some issues with our old package, for example akmods should now work properly. Like the stock kernel, it will also keep around the last 3
versions automatically.
However, because the transition between the old and new packages is hitting an edge case in DNF, you MUST temporarily disable the running kernel protection. Otherwise DNF will refuse to remove the old package and install the new one.
You can do this by either rebooting into a stock kernel to do the upgrade, or by running the following command:
qzed commentedon Oct 22, 2023
Changes in v6.5.8
qzed commentedon Nov 20, 2023
Changes in v6.6.1/v6.5.11-2
qzed commentedon Jan 13, 2024
Changes in v6.6.10 (Arch Linux) / v6.6.11 (Ubuntu/Fedora)
qzed commentedon Jun 9, 2024
Changes in v6.9.3
qzed commentedon Jun 11, 2024
Changes in v6.9.3-2
qzed commentedon Jun 30, 2024
Changes in v6.9.7:
sign-filebinary statically to fix external module/DKMS build issues. Seeqzed commentedon Jul 19, 2024
Changes in v6.9.7:
qzed commentedon Mar 9, 2025
Changes in v6.13.6
unprivileged_userns_clone(Enable unprivileged_userns_clone in the kernel #1657).qzed commentedon Dec 31, 2025
Changes in v6.17.13-2
qzed commentedon Dec 31, 2025
Changes in v6.17.13-3 / v6.18.2-1
qzed commentedon Jan 7, 2026
Changes in v6.18.3-2 (Arch/Debian) and v6.17.13-4 (Fedora)
qzed commentedon Jan 25, 2026
Changes in v6.18.7:
surface-controlpackage (v0.5.0).