Microsoft Surface Pro 4 (microsoft-surface-pro4)

From postmarketOS Wiki
Microsoft Surface Pro 4
Manufacturer Microsoft
Name Surface Pro 4
Codename microsoft-surface-pro4
Released 2015
Type detachable
Hardware
CPU Intel Core m3-6Y30
Intel Core i5-6300U
Intel Core i7-6650U
Display 12.3 inches 2736x1824 (267ppi) PixelSense display with 3:2 aspect ratio
Storage PCI-Express SSD: 128 GB, 256 GB, 512 GB, or 1 TB
Memory 4 GB, 8 GB, or 16 GB
Architecture x86_64
Software
Original software Windows Pro
Original version 10
postmarketOS
Category testing
Pre-built images no
Mainline yes
This device has been tested with postmarketOS, but its device package has not yet been added to the postmarketOS repositories.
This means that it cannot be selected in pmbootstrap.
Status: like the the steam deck it need special configuration on top the generic uefi device package but it seem there are no one made that package
Features
Flashing
Works
Internal storage
SD card
Battery
Broken
Screen
Works
Touchscreen
Works
Keyboard
Touchpad
Multimedia
3D Acceleration
Works
Audio
Works
Camera
Broken
Camera Flash
Connectivity
WiFi
Works
Bluetooth
Works
Ethernet
NFC
Miscellaneous
FDE
Broken
USB-A
USB OTG
HDMI/DP
Sensors
Accelerometer
Works
Magnetometer
Ambient Light
Proximity
Hall Effect
Haptics
Barometer


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.

Contributors

Users owning this device


Installation

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.

Notes

Bluetooth

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.

Touch Screen

To make the touch screen work it is necessary to compile and install iptsd [1] 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

Here change 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

uinput

Save it with Ctrl + X and restart the device, it should load the touch at each boot

See also