Professional Documents
Culture Documents
Note: This page refers to the 9560 revision of the XPS 15. Most of it also applies to the Precision
5520
This page contains recommendations for running Arch Linux Device/Functionality Status
on the Dell XPS 15 9560 (late 2016). With some configuration
almost all the hardware is well supported. Exceptions are the Suspend Buggy
UEFI
Before installing it is necessary to modify some UEFI Settings. They can be accessed by pressing
the F2 key repeatedly when booting.
Change the SATA Mode from the default "RAID" to "AHCI". This will allow Linux to detect
the NVME SSD. If dual booting with an existing Windows installation, Windows will not
boot after the change but this can be fixed without a reinstallation.
Change Fastboot to "Thorough" in "POST Behaviour". This prevents intermittent boot
failures.
Disable secure boot to allow Linux to boot.
Installation of Arch Linux can proceed normally. Refer to the Installation guide for more
information.
Power Management
Suspend and Hibernate
Suspend and Hibernate work out of the box, although some users have reported occasional
system hangs on resuming from suspend (https://bbs.archlinux.org/viewtopic.php?id=22305
6), more commonly on kernels since 4.10.
The thermometer on the discrete Nvidia GPU can be monitored with the nvidia-smi utility,
which is part of nvidia-utils (https://www.archlinux.org/packages/?name=nvidia-utils).
Power Saving
Disable discrete GPU
bbswitch method
The discrete Nvidia GTX 1050 GPU is on by default and cannot be disabled in the UEFI settings.
Even when idle, it uses a significant amount of power (about 7W). To disable it when not in use it
is necessary to install bbswitch (https://www.archlinux.org/packages/?name=bbswitch) and
bumblebee (https://www.archlinux.org/packages/?name=bumblebee), add acpi_rev_override=1 to the
Kernel parameters, enable bumblebeed.service , and reboot (you may need to reboot twice for
the firmware to notice acpi_rev_override ).
$ cat /proc/acpi/bbswitch
$ OFF
and
acpi_call method
Disable/autosuspend of touchscreen
Disabling the touchscreen can be done in the UEFI settings and results in significant power
savings. If touchscreen is required it can be placed into autosuspend by TLP by adding
04f3:24a1 to USB_WHITELIST in tlp config file. This will leave touchscreen enabled for usage and
will consume much less battery.
Before Kernel 4.11 Linux does not support NVME APST, so the NVME SSD is in its highest power
state all the time. Significant power savings can be achieved by running a Kernel with patches
and appropriate parameters to enable APST. See Solid State Drives/NVMe#Power Saving APST.
Even when running such a kernel, it may be necessary to adjust the default_ps_max_latency_us
parameter to the nvme_core module in order to make ASPT work.
Passing the following options to the i915 kernel module results in significant power savings:
enable_fbc=1 enable_psr=1 disable_power_well=0 . Some users with the HD matte screen have
reported that these parameters cause screen flickering. Frame buffer compression ( enable_fbc=1
) is enabled by default starting from kernel 4.11.
For the Precision 5520 which has an Intel 8265 wifi card, the power_save option for the iwlwifi
kernel module can be set from 1 to 5 with potential power savings. See Kernel modules#Setting
module options. Bluetooth and Wifi can seperately be disabled with rfkill. See Wireless
network configuration#Rfkill caveat.
Graphics
The integrated Intel HD 630 GPU works well out of the box. Optionally you may install xf86-
video-intel (https://www.archlinux.org/packages/?name=xf86-video-intel) but this is no longer
recommended, since the built in kernel modesetting driver is more reliable. If you do not want to
use the discrete Nvidia GPU, no extra setup is necessary. Otherwise there are a few options. All of
the display outputs are connected to the integrated GPU so there is no need to set up output from
the discrete GPU. It may be necessary to compile a custom kernel as described in #Power Saving.
With this setup the integrated GPU is used by default but some applications can be rendered on
the discrete GPU with the optirun or primusrun launchers. See Bumblebee for detailed
instructions. The lack of proper v-sync support means that with this method applications
rendered on the discrete GPU exhibit tearing. There is also some overhead introduced as a result
of moving data inefficiently between the discrete and integrated GPUs, but the Nvidia GPU
performs much better than it does with Nouveau. The current stable NVIDIA release (378.13)
does not work (rmInitAdapterFailed in dmesg), however the latest beta drivers nvidia-beta (http
s://aur.archlinux.org/packages/nvidia-beta/)AUR, nvidia-utils-beta (https://aur.archlinux.org/p
ackages/nvidia-utils-beta/)AUR, and lib32-nvidia-utils-beta (https://aur.archlinux.org/package
s/lib32-nvidia-utils-beta/)AUR are working. To use them with a custom kernel it is necessary to
use the DKMS version nvidia-beta-dkms (https://aur.archlinux.org/packages/nvidia-beta-
dkms/)AUR and to edit the PKGBUILD to update it to the same version as the utils package.
Alternatively the current long lived branch release (375.66) works too (nvidia-llb-dkms (https://
aur.archlinux.org/packages/nvidia-llb-dkms/)AUR, nvidia-utils-llb (https://aur.archlinux.org/pa
ckages/nvidia-utils-llb/)AUR, lib32-nvidia-utils-llb (https://aur.archlinux.org/packages/lib32-
nvidia-utils-llb/)AUR).
With this setup the discrete GPU is used for all rendering and the integrated GPU is used only to
display the rendered output. Power consumption is much higher during light usage because the
discrete GPU cannot be disabled. Performance for graphics intensive applications is significantly
better than with Bumblebee, and v-sync works due to PRIME Synchronization (https://devtalk.
nvidia.com/default/topic/957814/linux/prime-and-prime-synchronization/1) so tearing is
eliminated. Remove bumblebee (https://www.archlinux.org/packages/?name=bumblebee) and follow
the instructions in NVIDIA Optimus, Nvidia README (http://us.download.nvidia.com/XFree8
6/Linux-x86_64/375.66/README/randr14.html), or PRIME Synchronization thread (https://de
vtalk.nvidia.com/default/topic/957814/linux/prime-and-prime-synchronization/1) using
PCI:1:0:0 as the BusID. Add the modeset=1 parameter to the nvidia_drm kernel module (on boot,
not with modprobe) to enable PRIME synchronization and remove tearing (see Kernel
modules#Setting module options). It is necessary to use the long lived branch of the NVIDIA
driver (nvidia-llb-dkms (https://aur.archlinux.org/packages/nvidia-llb-dkms/)AUR, nvidia-utils-
llb (https://aur.archlinux.org/packages/nvidia-utils-llb/)AUR, lib32-nvidia-utils-llb (https://
aur.archlinux.org/packages/lib32-nvidia-utils-llb/)AUR) since the latest version (375.66) contains
bugfixes (https://devtalk.nvidia.com/default/topic/957814/linux/prime-and-prime-synchroni
zation/post/5141480/#5141480) making PRIME Synchronization usable on the GTX 1050, which
are not present in the latest stable (378.13) and beta (381.09) releases.
Touchpad
The Synaptics Touchpad's basic functionality works out of the box. Some desktop environments
ship with libinput and others with the xf86-input-synaptics driver. You can see which package
is installed by running:
Depending on which package handles your touchpad input, the methods to extend the
functionality varies.
The full documentation for libinput seemed to work quite well for this touchpad. While the
driver already contains logic to process advanced multi-touch events like swipe and pinch
gestures, the desktop environment or window manager might not have implemented actions for
all of them yet.
To get some three and four-touch gestures to work you may need to use the documentation at
libinput-gestures (https://github.com/bulletmark/libinput-gestures) and install the libinput-
gestures (https://aur.archlinux.org/packages/libinput-gestures/)AUR package.
You can use synclient to list the touchpad's capabilities and change them for the session.
The touchpad has a big click zone in the bottom that can be disabled or configured for 1, 2 or 3
buttons. For example, to have most of the touchpad seen as "button 1" but the middle lower zone
(middle button) and the right lower zone (right button), create
/etc/X11/xorg.conf.d/50-synaptics.conf with content:
Section "InputClass"
Identifier "touchpad catchall"
Driver "synaptics"
MatchIsTouchpad "on"
# enable clik zone and configure 3 buttons on bottom
Option "ClickPad" "1"
Option "SoftButtonAreas" "60% 0 82% 0 40% 60% 82% 0"
# other commons options than you may want to configure
# scroll with two fingers (enabled vertically, disabled horizontally)
Option "VertTwoFingerScroll" "1"
Option "HorizTwoFingerScroll" "0"
# enable tap as click: 1 finger -> left button, 2 fingers -> right, 3 fingers -> middle
Option "TapButton1" "1"
Option "TapButton2" "3"
Option "TapButton3" "2"
# idem but for click with 1,2,3 fingers. Use "0" to disable.
Option "ClickFinger1" "1"
Option "ClickFinger2" "3"
Option "ClickFinger3" "2"
# palm detection. These parameters somehow works, YMMV.
Option "PalmDetect" "1"
Option "PalmMinWidth" "10"
Option "PalmMinZ" "200"
EndSection
Thunderbolt docks
TB16 works fine if either Thunderbolt security is disabled in the BIOS or using bolt (https://aur.
archlinux.org/packages/bolt/)AUR to temporarily authorize or permanently enroll Thunderbolt
devices with Thunderbolt security activated.
Firmware updates
Firmware updates are provided by Dell and can be installed with fwupdate (https://www.archlinu
x.org/packages/?name=fwupdate) or fwupd (https://www.archlinux.org/packages/?name=fwupd).
Available firmware versions can be seen here (https://secure-lvfs.rhcloud.com/lvfs/device/345
78c72-11dc-4378-bc7f-b643866f598c).
Alternatively, firmware updates can be installed by copying the MS-DOS executable firmware file
to a FAT32-formatted USB key (or directly to your EFI boot partition) and booting into "BIOS
Flash Update" from the Boot Menu.
Fingerprint reader
The fingerprint reader is a Validity/Synaptics model with USB id 138a:0091 . There is currently a
working prototype of a driver capable of capturing prints, however direct integration with
libfprint is unlikely due to the manner in which the matching algorithm is implemented. [1] (htt
ps://github.com/hmaarrfk/Validity91).
There is also some people working on drivers for various other related readers. According to
them it should be fairly easy to implement a driver for this model as none of the traffic to or
from the device appears to be encrypted. Nevertheless, 138a:0091 is out of the scope of the
project. [2] (https://github.com/nmikhailov/Validity90)
Troubleshooting
xorg freezes at startup
If Xorg freezes as soon as it starts, even before printing any logs, and you are trying to use the
Intel card with the nvidia one disabled, you need to add kernel parameter acpi_rev_override=1
as explained in #Disable discrete GPU above.
If you have an NVMe disk and depending of your BIOS version (but even with 1.5.0 from october
2017), you may have a lot of system error logs like:
Nov 25 22:36:08 xxxxx kernel: pcieport 0000:00:1c.0: PCIe Bus Error: severity=Corrected, type=Data Link Layer, id=0
0e0(Transmitter ID)
Nov 25 22:36:08 xxxxx kernel: pcieport 0000:00:1c.0: device [8086:a110] error status/mask=00001000/00002000
Nov 25 22:36:08 xxxxx kernel: pcieport 0000:00:1c.0: [12] Replay Timer Timeout
This can be corrected with the kernel boot option pci=nommconf (see here (https://unix.stackexc
hange.com/questions/327730/what-causes-this-pcieport-00000003-0-pcie-bus-error-aer-bad-tl
p) for explanation).
The NVidia/nouveau driver may cause any runs of lspci , starting an X server, or otherwise
poking the graphics card to cause at least one CPU core to lock up, as well as seeming to
completely lock up PCIe access, for instance to the NVMe SSD. The kernel parameter
nouveau.modeset=0 may fix this. This is also related to the X freezes on startup (some machines
may require lspci/startx to be run twice so they freeze after nouveau is taken care of); the
solution in that case is to also set acpi_rev_override=1 . [3] (https://cnly.github.io/2017/08/25/fix-
system-hangs-xps-15-9560.html)
Notes
The suspend function key is not printed on the keyboard, but it's actually mapped to Fn + Insert .
External links
Dell XPS 15 9560 (Early 2017) Thread on the Arch Forums (https://bbs.archlinux.org/vie
wtopic.php?id=223056)
Optimizing Dell XPS (https://www.reddit.com/r/Dell/comments/6s2e3w/optimizing_dell
_xps_for_linux/)
Tutorial about how to change CPU thermal paste on XPS15 to avoid throttling (https://
www.ultrabookreview.com/14875-fix-throttling-xps-15/)