|
| 1 | +# Derivatives for Microsoft Surface notebooks |
| 2 | + |
| 3 | +These derivatives use the patches from the [linux-surface repo](https://github.com/linux-surface/linux-surface/tree/master/patches). |
| 4 | + |
| 5 | +## Kernel |
| 6 | + |
| 7 | +The kernel needs several patches to make it work correctly with some of the hardware on various |
| 8 | +Surface models, e.g. keyboard/trackpad, camera, wifi. |
| 9 | + |
| 10 | +Not all hardware is fully supported, but the |
| 11 | +[linux-surface feature matrix](https://github.com/linux-surface/linux-surface/wiki/Supported-Devices-and-Features#feature-matrix) |
| 12 | +provides details on which devices are supported on which types of machine. |
| 13 | + |
| 14 | +The kernel-specific derivations are under the `kernel/` sub-directory. |
| 15 | +In order to simplify maintenance of the Nix code, only the most-recent kernel patch-set is expected |
| 16 | +to be maintained in this repo. |
| 17 | + |
| 18 | +_*NOTE:*_Some built-in Kernel config items need to be set, that aren't set by default: |
| 19 | +- https://github.com/linux-surface/surface-aggregator-module/wiki/Testing-and-Installing |
| 20 | + |
| 21 | +## Firmware, Drivers and Support Tools |
| 22 | + |
| 23 | +### WiFi |
| 24 | + |
| 25 | +For the Surface Go, please see the "Issues" sections below. |
| 26 | + |
| 27 | +### IPTS |
| 28 | + |
| 29 | +IPTS is used on most of the Surface range, except for Surface Go and Surface Laptop 3 (AMD version). |
| 30 | + |
| 31 | +Older kernels used specialised firmware which used a method that's no longer supported by the |
| 32 | +more-recent kernels. |
| 33 | + |
| 34 | +Newer kernels use the kernel-space `intel-precise-touch` driver and user-space `ipstd` daemon. |
| 35 | + |
| 36 | +The `iptsd` daemon works with the `intel-precise-touch` driver to convert raw touch data from the |
| 37 | +kernel-space driver into events for the HID / input sub-system. |
| 38 | + |
| 39 | +- https://github.com/linux-surface/iptsd |
| 40 | +- https://github.com/linux-surface/intel-precise-touch |
| 41 | + - _*NOTE:*_ The patches from this repo are included in the above kernel patches, already. |
| 42 | + |
| 43 | +### DTX, `surface-control` |
| 44 | + |
| 45 | +*TODO* |
| 46 | + |
| 47 | +# ToDo's Not Done |
| 48 | + |
| 49 | +See: [TODO.org](./TODO.org) |
| 50 | + |
| 51 | +# Issues |
| 52 | + |
| 53 | +## TLP daemon |
| 54 | + |
| 55 | +TLP is known to cause problems on Surface unless correctly configured. |
| 56 | +See: https://github.com/linux-surface/linux-surface/blob/master/README.md |
| 57 | + |
| 58 | +## Wifi Firmware for Surface Go |
| 59 | + |
| 60 | +On the Surface Go, the standard firmware from the official Linux Firmware repo has issues with the |
| 61 | +`ath10k` QCA6174 Wifi device. |
| 62 | +You will see messages like "Can't ping firmware" *TODO - Copy messages from console* |
| 63 | + |
| 64 | +The most effective fix to-date is to remove the `board-2.bin` file or replace it with a copy of the |
| 65 | +`board.bin` file. |
| 66 | + |
| 67 | +References: |
| 68 | +- https://github.com/jakeday/linux-surface/issues/441 |
| 69 | +- https://www.reddit.com/r/SurfaceLinux/comments/e8quqg/surface_go_official_wifi_fix/ |
| 70 | +- https://hackmd.io/@dasgeek/ryA5i5Dor |
| 71 | +- https://github.com/thebitstick/surfacego-wifi |
| 72 | +- https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/ath10k |
| 73 | +- https://wireless.wiki.kernel.org/en/users/drivers/ath10k/firmware |
0 commit comments