Open archseer opened 4 years ago
5.5.6 was released!
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.
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.
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!
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: 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:
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.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.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:
-rw-r--r-- 1 root root 82644751 Mar 21 11:57 initrd.img-5.5.10-surface
-rw-r--r-- 1 root root 82672122 Apr 1 15:33 initrd.img-5.5.13-surface
-rw-r--r-- 1 root root 82116124 Mar 15 14:39 initrd.img-5.5.8-surface
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.
See also https://github.com/linux-surface/repo/issues/3 for the issue reporting this problem.
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.
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).
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 https://github.com/linux-surface/surface-aggregator-module/issues/45.
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).
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 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.
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)").
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_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./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.
Changes in v5.8.5 and v4.19.142
Changes in v5.8.7 and v4.19.143
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.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 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.surface_sam_ssh -> surface_aggregator
surface_sam_debugfs -> surface_aggregator_debugfs
surface_sam_device_hub -> surface_aggregator_registry
surface_sam_san -> surface_acpi_notify
surface_sam_sid_power -> surface_battery
surface_sam_dtx -> surface_dtx
surface_sam_sid_vhf -> surface_hid
surface_sam_hps -> surface_hotplug
surface_sam_vhf -> surface_keyboard
surface_sam_sid_perfmode -> surface_perfmode
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.
suspend (for S0ix and AP scanning fix)
firmware reset feature fix
enable_device_dump
module parameter and disabled device_dump by default
Before this change, device_dump was performed when resetting wifi. This took a little bit long time. Now disabled by default.auto_ds (auto deep sleep)
auto_ds
change (Now enabled by default again)
It seems that auto_ds
doesn't affect stability. Let's re-enable this and see what happens.
You can still disable it again by the disable_auto_ds
module parameter.Changes in v5.8.14 and v4.19.150
Changes regarding the Surface Aggregator Module
Changes in v5.8.15 (Arch v5.8.14-2) and v4.19.151
Changes regarding the Surface Aggregator Module:
surface_hid
). If you have a Surface Laptop 1 or 2 and rely on the keyboard driver being in initram to unlock any encrypted partition, make sure to update this.surface-control
to v0.3.0 and surface-dtx-daemon
to v0.2.0.Additionally a patch has been added to fix a boot issue on the Surface Go series devices.
Changes in v5.9.1, v5.8.16
Changes regarding IPTS:
Changes in v5.9.1, v5.8.16, v4.19.152
In addition to the changes above, there are the following changes have been made:
Changes in v5.9.3, v5.8.18, and v4.19.154
Changes regarding the discrete GPU (dGPU):
surface dgpu ...
), power control will now be fully handled by the kernel and its runtime-PM. Runtime PM is capable of turning the dGPU off completely by putting it into D3cold, however for this to work certain conditions need to be fulfilled (notably, runtime PM needs to be enabled for the dGPU and it must not be in use by anything, including X11/XWayland, which will usually prevent that). In general, if no drivers are loaded (e.g. due to them being blacklisted) and runtime PM is enabled for the device, the dGPU will be turned off. See the commit-message and updated wiki page for more details. Specifically, see the latter for help with configuration.Changes in v5.9.6, v5.8.18-2, and v4.19.155
Changes in v5.10
qcam
or cam
utilities) on the Surface Pro 4, 5, and 6, on the Surface Book 1 and 2, as well as on the Surface Go 2. Note that camera support is still in development, thus the image quality may not be as you expect (notably, the image will have a green tint due to missing white-balance algorithms). See https://github.com/linux-surface/linux-surface/wiki/Camera-Support for more details.After a long and exhausting battle against the evil forces of the CI I was finally victorious! Or so... Anyways.
iptsd 0.3 was released
With this release we ported the iptsd daemon from Go to C, which helps tremendously with resource usage. If you are packaging iptsd or compile it from source, you will have to adjust your build scripts. There are some other notable changes, mostly regarding the behaviour of the stylus. Check out the release notes for more details.
Changes in v5.10.2 (Arch, Debian) and v5.9.16 (Fedora)
Changes in v5.10.10
Changes in surface-control
v0.3.1
The surface-control
package will now add a surface-control
group and change permissions of the performance-mode sysfs attribute so that surface performance set
can be accessed from any user in that group (without needing sudo
).
Changes in v4.19.176 and v5.10.16-2
Some modules have been split. Specifically
surface_hid
has been split intosurface_hid_core
for common componentssurface_hid
for support of Surface Laptop 3 and Surface Book 3surface_kbd
for support of Surface Laptop 1 and 2surface_battery
has been split intosurface_battery
for battery supportsurface_charger
for AC supportYou may need to adjust your mkinitcpio
/initram scripts accordingly.
Changes in v5.10.16-3 and v5.10.17
Changes in v5.10.21 and v5.11.5
board.bin
and board-2.bin
can now be overwritten via module parameters.Changes in v5.11.10 and v4.19.183
Thanks to @jonas2515, this update contains some noticeable WiFi improvements:
Fixes for P2P and AP modes. This should get miracast working.
Have a look at the following PRs for more infos:
Changes in v5.11.16 and v4.19.188
Yet more WiFi improvements from @jonas2515:
Apart from that, there are also some small cleanups/code-fixes for the Surface Aggregator Module.
Upstream v5.12
Upstream v5.12 has been released. This release includes the core Surface Aggregator Module (via Surface Serial Hub/SSH) and Surface ACPI Notify (SAN) driver, which means that 5th- and 6th-generation devices will now work better on upstream kernels. Specifically, on the Surface Book 2, Surface Laptop 1 and 2, and Surface Pro 5 and 6, features that should now work are
The Surface Book 2 should now also not get unnecessarily hot due to a missing SAN driver causing an ACPI notify busy-loop.
Furthermore, the Surface Hotplug driver is now also upstream, which is responsible for notifying the PCI core when the dGPU is detached while turned off (i.e. in D3cold).
Other features still require the Surface kernels for now:
Changes in v5.11.18 and v4.18.189
A small fix in the Surface Aggregator Module battery driver:
Changes in v5.12 kernels
Surface Aggregator Module:
/sys/firmware/acpi/platform_profile
(see https://www.kernel.org/doc/html/v5.12/userspace-api/sysfs-platform_profile.html) for details, which aims to unify different firmware implementations in that regard (there's already some work in progress to support this interface in Gnome).Due to this, the surface performance
command of the surface-control tool will no longer work on those kernel versions. A new surface profile
subcommand has been added, wrapping this interface.
Camera
Changes in 5.11.19 (Fedora)
Surface Aggregator Module:
Changes in v5.12.5
Changes in v5.12.6 and v5.11.22-2
Changes in v5.12.8
Changes in v5.12.9
Add IRQ setup workaround for the 13" AMD version of the Surface Laptop 4. With this the 13" version of the Surface Laptop 4 should now have working keyboard and battery support as well.
Add workaround to prevent the touchscreen of the Surface Go indicating battery capabilities and notifying about a low battery charge (thanks to @zoltantamasvajda).
Surface Aggregator Module:
Changes in v5.12.10 and v4.19.194
atomisp
module on Ubuntu/Debian as it caused a notice to be logged, warning about the use of trace_printk()
. The module is in the staging directory and according to its TODO list not yet usable anyways.Changes regarding Support/Community and Development channels
Following (somewhat) recent events regarding freenode, we are now (finally) moving our IRC channel away from freenode to libera.chat (libera.chat/#linux-surface
). In the same step, we have decided to re-structure our Support and Community channels as well:
We will discontinue our Gitter and freenode channels, so please join those new Matrix/libera.chat channels.
Upstream v5.13
Upstream v5.13 has been released (some time ago but I didn't find the time to write this update earlier). With that, all major features provided by the Surface Aggregator Module drivers are now upstream. In addition to the updates made in v5.12 (see https://github.com/linux-surface/linux-surface/issues/96#issuecomment-826698672), this includes:
With that, you can now expect full upstream support for features provided by the Surface Aggregator Module on all current devices. There are still other areas that need patches though: Notably WiFi on devices with Marvel chips and the touch-screen. In other words, using upstream kernels should (on devices not using Marvel WiFi chips and if you don't need touch) be a viable option now.
Changes in v5.13.13
Changes in v5.14.6
Changes in v5.14.9
Changes in v5.14.10
Changes in v5.14.10-2
Changes in v5.14.11 / v5.14.10-4
Add basic support for the Surface Laptop Studio (thanks to @ukasuviok for testing/providing information):
HID input devices (e.g. keyboard and touchpad) do not work yet, but this will hopefully be fixed in the next release.
Changes in v5.14.11-2 / v5.14.10-5
Changes in v5.14.14-2
Changes in v5.14.14-3
Add Surface Aggregator Module support for the Surface Pro 8. This includes:
Thanks to @xG33Kx for testing!
Changes in v5.14.15
Subscribe to this issue to be notified of announcements, changelogs and manual upgrade notices.
(For update announcements only)