Linux Kernel for Surface Devices
Go to file
2017-12-24 14:04:35 -05:00
firmware cleaning up firmware file locations 2017-12-09 20:00:01 -05:00
kernel cancel pending work on shutting down wifi to prevent hangs 2017-12-24 14:04:35 -05:00
root resets are not needed for hibernate 2017-12-10 12:46:24 -05:00
config updating to mainline 4.14.8 2017-12-21 08:12:38 -05:00
README.md Update Readme with new firmware location 2017-12-13 18:45:36 +01:00

Linux Surface

Linux running on the Surface Book, Surface Book 2, Surface Pro 4, Surface Pro 2017 and Surface Laptop. Follow the instructions below to install the latest kernel and config files.

What's Working

  • Keyboard (and backlight)
  • Touchpad
  • 2D/3D Acceleration
  • Touchscreen
  • Pen
  • WiFi
  • Bluetooth
  • Speakers
  • Power Button
  • Volume Buttons
  • SD Card Reader
  • Cameras (partial support, disabled for now)
  • Hibernate
  • Sensors (accelerometer, gyroscope, ambient light sensor)
  • Battery Readings
  • Docking/Undocking Tablet and Keyboard
  • DisplayPort
  • Dedicated Nvidia GPU (Surface Book 2)

What's NOT Working

  • Dedicated Nvidia GPU (if you have a performance base on a Surface Book 1, otherwise onboard works fine)
  • Cameras (not fully supported yet)
  • Suspend (uses Connected Standby which is not supported yet)

Notes on What's Working

  • For the most part, things are tested on a Surface Book. While most things are reportedly fully working on other devices, your mileage may vary. Please look at the issues list for possible exceptions.

Download Pre-built Kernel and Headers

Downloads for ubuntu based distros (other distros will need to compile from source in the kernel folder):

https://goo.gl/QSZCwq

You will need to download both the image and headers deb files for the version you want to install.

Instructions

For the ipts_firmware files, please select the version for your device.

  • v76 for the Surface Book
  • v78 for the Surface Pro 4
  • v79 for the Surface Laptop
  • v101 for Surface Book 2 15"
  • v102 for the Surface Pro 2017
  • v137 for the Surface Book 2 13"
  1. Copy the files under root to where they belong:
  • $ sudo cp -R root/* /
  1. Make /lib/systemd/system-sleep/hibernate.sh as executable:
  • $ sudo chmod a+x /lib/systemd/system-sleep/hibernate.sh
  1. Extract ipts_firmware_[VERSION].zip to /lib/firmware/intel/ipts/
  • $ sudo mkdir -p /lib/firmware/intel/ipts
  • $ sudo unzip firmware/ipts_firmware_[VERSION].zip -d /lib/firmware/intel/ipts/
  1. Extract i915_firmware.zip to /lib/firmware/i915/
  • $ sudo mkdir -p /lib/firmware/i915
  • $ sudo unzip firmware/i915_firmware.zip -d /lib/firmware/i915/
  1. (Ubuntu 17.10) Fix issue with Suspend to Disk:
  • $ sudo ln -s /lib/systemd/system/hibernate.target /etc/systemd/system/suspend.target && sudo ln -s /lib/systemd/system/systemd-hibernate.service /etc/systemd/system/systemd-suspend.service
  1. (all other distros) Fix issue with Suspend to Disk:
  • $ sudo ln -s /usr/lib/systemd/system/hibernate.target /etc/systemd/system/suspend.target && sudo ln -s /usr/lib/systemd/system/systemd-hibernate.service /etc/systemd/system/systemd-suspend.service
  1. Install the latest marvell firmware:
  • git clone git://git.marvell.com/mwifiex-firmware.git
  • sudo mkdir -p /lib/firmware/mrvl/
  • sudo cp mwifiex-firmware/mrvl/* /lib/firmware/mrvl/
  1. Install the custom kernel and headers:
  • $ sudo dpkg -i linux-headers-[VERSION].deb linux-image-[VERSION].deb
  1. Reboot on installed kernel.

NOTES

  • If you are getting stuck at boot when loading the ramdisk, you need to install the Processor Microcode Firmware for Intel CPUs (usually found under Additional Drivers in Software and Updates).
  • If you are having issues with the position of the cursor matching the pen/stylus, you'll need to update your libwacom as mentioned here: https://github.com/jakeday/linux-surface/issues/46

Donations Appreciated!

PayPal: https://www.paypal.me/jakeday42

Bitcoin: 1AH7ByeJBjMoAwsgi9oeNvVLmZHvGoQg68