Microsoft Surface Book 2
Hardware | PCI/USB ID | Working? |
---|---|---|
GPU (Intel) | Yes | |
GPU (Nvidia) | Yes | |
Wireless | Yes | |
Audio | Yes | |
Touchpad | Yes | |
Touchscreen | Yes | |
Camera | No | |
Card reader | Yes | |
Bluetooth | Yes |
This page contains instructions, tips, pointers, and links for installing and configuring Arch Linux on Microsoft Surface Book 2 devices.
Compatibility
The laptop works surprisingly well with Arch Linux, but requires a kernel with modules and updated drivers, available on GitHub.
What works?
- Touchscreen
- Requires kernel with modules/drivers in link above.
- Pen Input
- Requires kernel with modules/drivers in link above.
- Removal of keyboard base
- A few seconds slower in Linux than in Windows
- May cause touchscreen to stop working until reboot
- May cause issues with dedicated graphics (if equipped)
- Keyboard function and media keys, including volume and brightness adjustment of the keyboard and screen backlights.
- Wireless Networking
- Requires the installation of the
linux-firmware-marvell
package for the wireless network interface to be recognized by the kernel - May need a tweak from #WiFi if Wireless Networking hardware disconnects during use
- Requires the installation of the
- Speakers / Headphones
- Speakers sometimes have a hissing noise that can be fixed, details in #Audio
- Dedicated Nvidia graphics (If equipped)
- Hibernation
- Only when the touchscreen is disabled, see #Hibernation
- ACPI, Battery stats, power saving, etc.
What does not work?
- Cameras
Nvidia
The Nvidia 1050 and 1060 cards in the Surface Book 2 Performance Base are recognized by the kernel and supported by `nvidia` and `nvidia-dkms` drivers. Without the kernel ([linux-surface https://github.com/qzed/linux-surface]), there was a bug which causes it to be effectively useless because when a load is put on the Nvidia graphics hardware, it immediately and severely throttles down to around 139MHz. The reason, as reported by `nvidia-smi`, is software thermal throttling. The cause is that, apparently, the fan cannot be controlled automatically, nor through `nvidia-smi` or `nvidia-settings`, even when the nvidia xorg `Coolbits` option is set to 8.
UEFI Setup and Disabling Secure Boot
Disabling Secure Boot is not necessary, but makes things easier.
Follow The manufacturer's directions for accessing UEFI setup:
- Shut down your Surface and wait about 10 seconds to be sure it is off.
- Press and hold the volume-up button on your Surface, and, at the same time, press and release the power button.
- When you see the Surface logo, release the volume-up button. The UEFI menu will appear within a few seconds.
Booting
The information in Boot loaders applies here. refind and Systemd-boot work well.
Boot from USB
Booting from USB is possible by reordering boot devices in the UEFI setup.
Graphics Drivers
The standard xf86-video-intel driver works with the Surface Book devices.
For devices equipped with dedicated Nvidia graphics, the nvidia or nvidia-dkms driver supports the dedicated GPU.
Audio
Surface Book 2 devices exhibit a hissing noise at times. This can be fixed by installing alsa-utils and running the following commands:
$ amixer -c 0 sset 'Auto-Mute Mode' Disabled # alsactl store
WiFi
Since September 2018, Surface Book 2 WiFi may power off during use. When this happens, it is not visible in lspci and rebooting is a way to get it back on. However, this behavior can be prevented (temporarily) by installing iw and running the following command as root:
# iw dev wlp1s0 set power_save off
To permanently fix the issue with NetworkManager, add this to your NetworkManager config. (Such as /etc/NetworkManager/NetworkManager.conf)
[connection] wifi.powersave = 2 [device] wifi.scan-rand-mac-address=false
Console fonts
Because of the screen's resolution, the console font is barely readable - refer to Linux console#Fonts on how to change them.
Using terminus-font with 32pt looks good on Surface Book 2 on the vconsole (add FONT=ter-m32n
to /etc/vconsole.conf
after installing).
Hibernation
Hibernation with the qzed kernel only works when the touchscreen firmware loading is disabled (adding i915.enable_guc=0
to the kernel parameters).