Microsoft Surface Pro 4 (microsoft-surface-pro4)
This port allows PostmarketOS to run normally on Microsoft Surface Pro 4 x86_64 hardware, as the device uses UEFI x64.
Currently, tests are being carried out using the kernel linux-surface branch v5.10-surface, as well as the Kernel Mainline 5.10.57 LTS applying the respective linux-surface patches.
Working: WiFi, Sound, Bluetooth, Buttons, 3D Acceleration, Accelerometer.
Not working: Touch Screen.
Not tested: TypeCover, Pencil, since I do not own them.
Users owning this device
The manufacturer is currently named microsoft in pmbootstrap. To install, do a normal SD card installation, and point it to the storage medium you need for the device (hard disk, USB thumbdrive, or SD card).
pmbootstrap install --sdcard=/dev/sdX
To run it, it is necessary to disable Secure Boot, and preferably set the USB memory as the default device.
In some desktop environments when trying to turn on the Bluetooth it will freeze, and will not perform any action, if that is the case run the following command in the terminal:
sudo service bluetooth start
It works without problems in Phosh, but in Gnome you have to execute that command, I assume that in some other environments the same.
To make the touch screen work it is necessary to compile and install
iptsd  which according to its own definition is:
"This is the userspace part of IPTS (Intel Precise Touch & Stylus) for Linux."
The following dependencies must be installed in order to compile:
$ sudo apk add git build-base linux-headers meson inih inih-dev openrc-dev
Run the uinput module:
$ sudo modprobe uinput
Use meson and ninja to build iptsd, and then run it with sudo.
$ git clone https://github.com/linux-surface/iptsd
$ cd iptsd
$ nano meson_options.txt
value: ['systemd'] to
value: ['openrc'] and save the file
$ meson build
$ ninja -C build
$ sudo ./build/iptsd
With this the touch screen should already work, if the LTS Kernel is used with the respective linux-surface patches
If you want to install it and have it run automatically as a service when the device starts up you need to run:
$ sudo ninja -C build install
$ sudo rc-update add iptsd
$ sudo nano /etc/modules.load.d/uinput-module.conf
Inside that file put the following:
# Load uinput at boot
Save it with Ctrl + X and restart the device, it should load the touch at each boot