Dell XPS 15 (9560)

This article or section does not follow the
Laptop page guidelines
.
Reason:
Hardware table needs adjustments, missing function key table (Discuss in
Talk:Dell XPS 15 (9560)
)
Note
This page refers to the 9560 revision of the XPS 15. Most of it also applies to the Precision 5520 and the XPS 15 9570.
Hardware
PCI/USB ID
Working?
GPU (Intel)
Yes
GPU (NVIDIA)
Yes
Wireless
Yes
Bluetooth
Yes
Audio
Yes
Touchpad
Yes
Webcam
Yes
Card reader
Yes
Fingerprint reader
138a:0091
Yes
This page contains recommendations for running Arch Linux on the Dell XPS 15 9560 (late 2016). With some configuration almost all the hardware is well-supported. Exceptions are the fingerprint reader, occasional locks on resuming from suspend experienced by some users, and the lack of support for PRIME render offload to the discrete GPU in the NVIDIA proprietary driver.
Installation
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 re-installation
.
Change Fastboot to
Thorough
in
POST Behaviour
. This prevents intermittent boot failures.
Disable
Secure 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
, more commonly on kernels since 4.10.
The suspend function key is not printed on the keyboard, but it is actually mapped to
Fn
+
Insert
.
Fan and temperature monitoring and control
Many of the thermometers can be read with
lm_sensors
.
Fan speeds can be monitored with
i8kctl
from
i8kutils-git
AUR
. This laptop is not in the supported list so it is necessary to load the
i8k
kernel module with the
force=1
module option. See
Kernel modules#Setting module options
. It is also possible to manually control fan speeds (at your own risk) however with manual control only a subset of the possible speeds are available (0rpm, 2500rpm, 4800rpm) instead of (0rpm, 2500rpm, 3200rpm, 3700rpm, 4800rpm, and 5100rpm) in the firmware's automatic control. See
Fan speed control#Dell laptops
.
The built-in fan modes can also be controlled directly by editing the setting in the bios. The
libsmbios
package provides many tools for reading and modifying certain settings on the computer. The
smbios-thermal-ctl
command can be used with the
--set-thermal-mode
flag to change the fan between modes
performance
,
cool-bottom
,
quiet
and
balanced
. For example:
# smbios-thermal-ctl --set-thermal-mode quiet
this changes the fan mode to quiet, which makes the fan curve less aggressive.
The thermometer on the discrete NVIDIA GPU can be monitored with the
nvidia-smi
utility, which is part of
nvidia-utils
.
Sensor kernel module and configuration
One avenue worth investigating is the use of the native kernel module dell-smm-hwmon:
$ modinfo dell-smm-hwmon | grep '^description'
description:    Dell laptop SMM BIOS hwmon driver
If the module does not load, try the passing the option
ignore_dmi=1
when running modprobe:
# modprobe dell-smm-hwmon ignore_dmi=1
Upon successfully loading it you should see the following in your kernel logs and/or
dmesg
:
185:[    9.806060] dell_smm_hwmon: not running on a supported Dell system.
186:[    9.806061] dell_smm_hwmon: vendor=Dell Inc., model=XPS 15 9550, version=x.y.z
Now the sensors command should be able to display some useful data:
$ sensors -f
dell_smm-virtual-0
Adapter: Virtual device
Processor Fan: 2490 RPM
Video Fan:     2501 RPM
CPU:           +105.8°F
Ambient:       +109.4°F
Ambient:       +104.0°F
Other:         +104.0°F
You can make these settings permanent by adding the following to
/etc/modprobe.d/dell.conf
:
options dell-smm-hwmon ignore_dmi=1
And also by making the
HWMON_MODULES
variable appears like so in
/etc/conf.d/lm_sensors
:
HWMON_MODULES="coretemp dell-smm-hwmon"
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
and
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
# dmesg | grep bbswitch
[    4.253642] bbswitch: loading out-of-tree module taints kernel.
[    4.253833] bbswitch: version 0.8
[    4.254093] bbswitch: Found integrated VGA device 0000:00:02.0: \_SB_.PCI0.GFX0
[    4.254163] bbswitch: Found discrete VGA device 0000:01:00.0: \_SB_.PCI0.PEG0.PEGP
[    4.254225] bbswitch: detected an Optimus _DSM function
[    4.254282] bbswitch: Succesfully loaded. Discrete card 0000:01:00.0 is on
[    4.256651] bbswitch: disabling discrete graphics
acpi_call method
An alternative set of steps, not requiring
bbswitch
or
bumblebee
is as follows:
Install the Intel video driver using the
xf86-video-intel
package.
Blacklist the
nvidia
&
nouveau
modules
Kernel modules#Blacklisting
Power down the GPU
with an ACPI command
Standard power saving configuration
It is a good idea to install a tool to tune common settings to save power. See
Power management#Userspace tools
.
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. The
USB_AUTOSUSPEND
must be set to 1 for this to have an effect. This will leave touchscreen enabled for usage and will consume much less battery.
Enable NVMe APST
Starting from linux 4.11, NVMe APST is supported and enabled by default, allowing NVMe SSDs to be switched to lower power states when idle, achieving significant power savings. See
Solid state drive/NVMe#Allow drive to enter low-power states (APST)
. Depending on the specific SSD, it may also be necessary to adjust the
default_ps_max_latency_us
parameter to the
nvme_core
module in order to make ASPT work. This is necessary with the Toshiba THNSN5512GPUK for example.
Enable power saving features for the i915 kernel module
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.
Wi-Fi and Bluetooth
For the Precision 5520 which has an Intel 8265 Wi-Fi 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 Wi-Fi can separately be disabled with rfkill. See
Wireless network configuration#Rfkill caveat
.
Undervolt intel CPU and GPU
It is possible to reduce the voltage supplied to the CPU and integrated intel GPU in order to reduce their power consumption. Usually some reduction is possible without any instability, depending on the specific system. Often the first signs of instability come during suspend, resume, and transitions between load and idle, not necessarily during extended periods of high load. See
intel-undervolt
and
linux-intel-undervolt-tool
AUR
which can automate the process of undervolting on each boot/resume.
Graphics
The integrated Intel HD 630 GPU works well out of the box. Optionally you may install
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
.
Intel card only
See
#Disable discrete GPU
above.
Open source driver with PRIME render offloading
With this setup it is possible to use the integrated GPU by default and to offload GPU intensive applications to the discrete GPU by the use of the
DRI_PRIME
environment variable. See
PRIME
for details. Note that the open source NVIDIA driver
Nouveau
currently
does not support
power management on Pascal GPUs such as the GTX 1050, so performance is very poor with this driver. See
Nouveau#Power management
.
Proprietary driver with bumblebee
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.
Proprietary driver with PRIME output offloading
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
so tearing is eliminated. Remove
bumblebee
and follow the instructions in
NVIDIA Optimus
,
NVIDIA README
, or
PRIME Synchronization thread
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
).
Touchpad
The Synaptics Touchpad's basic functionality works out of the box.
Depending on which package handles your touchpad input, the methods to extend the functionality varies.
libinput driver configuration
The full documentation for
libinput
seemed to work quite well for this touchpad. While the driver already contains logic to process advanced multitouch 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
and install the
libinput-gestures
AUR
package.
Synaptics driver configuration
You can use
synclient
to list the touchpad's capabilities and change them for the session.
Configure middle button
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
With the recent deprecation of synaptics, it is possible to use existing GUI (for instance, GNOME Tweak Tool) to change the behavior. Using gnome-tweaks, under Keyboard & Mouse section, Mouse Click Emulation is set by default to "Fingers". Changing it to the "Area" option, which uses the bottom right of the touchpad for a right click, fixes the problem.
Thunderbolt docks
TB16
TB16 works fine if either Thunderbolt security is disabled in the BIOS or using
bolt
to temporarily authorize or permanently enroll Thunderbolt devices with Thunderbolt security activated.  Various quirks are detailed on the
Dell TB16
page.
Dell docks
Some Dell docks (tested with the D6000) experience behavior whereby the displays periodically disconnect. Unplugging and plugging the dock back in again causes the displays to come back to life, but the displays will disconnect again. The more permanent fix for this is to comment out the following line in PulseAudio configuration:
/etc/pulse/default.pa
### Automatically suspend sinks/sources that become idle for too long
load-module module-suspend-on-idle
A discussion around this issue can be found
here
, including the discussion around fixes.
Firmware
Tooled
Firmware updates are provided by Dell and can be installed with
fwupd
.
Manual
Alternatively, firmware images can be found at
Dell support page
as
XPS_15_9560_X.Y.Z.exe
files.
In order to install:
Download the desired firmware from section "Dell XPS 15 9560 System BIOS"
Save it in
/boot/EFI/Dell/Bios/
(this path may vary, depending on your installation) or to a FAT32-formatted USB key
Reboot the system, and enter the boot menu by pressing repeatedly
F12
on Dell logo
Choose "Bios Flash Update"
Select the file previously saved, and start the process
The process will take about five minutes, during which the system will have some reboots and push fans at maximum speed. Finally, the system will reboot normally.
Fingerprint reader
The fingerprint reader support was added as of libfprint v1.92.0. To setup and configure the fingerprint reader, see instructions in
fprint
.
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.
Audio / headphones
If audio output through the headphone jack suddenly stops working and restarting the computer does not help, try suspending/resuming it. It may be necessary to unplug headphones before suspending and then plug them in after the computer fully wakes up (based off of
this
AskUbuntu answer and users experience on Arch). If headphone audio seems permanently missing even after suspend/resume tricks and plugging/unplugging the cable,
alsactl restore
can bring it back. The last suggested thing to try is booting to Windows and muting/unmuting audio with headphones connected.
If audio volume is low through the speakers/headphones, you may need to reboot into Windows and increase the volume in Windows. Then reboot into Linux and your speakers/headphones should be louder.
No audio devices detected
If no audio devices are detected after updating the kernel to 6.7.0 or later, this may be due to the
snd_soc_avs
module (See
thread
for more information). Check the output of
pactl list cards
. If the line for driver name shows
alsa.driver_name = "snd_soc_avs_probe"
, try
blacklisting
the module from the kernel.
One way to do this is to create the file
/etc/modprobe.d/blacklist.conf
and add the line
blacklist snd_soc_avs
. After rebooting, the module
snd_hda_intel
should be loaded and the audio devices detected successfully.
PCIe Bus Error in system logs
If you have an NVMe disk and depending on 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=00e0(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
pcie_aspm=off
which appears to have minimal to no effect on power consumption. If that does not work, try
pci=nommconf
(see
here
for explanation).
lspci causes CPU lockups
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
.
[1]
General slowness & stuttering
If you experience a large degradation of general performance and responsiveness it may be due to the CPU getting stuck throttled at 800Mhz. This also happens for other similar XPS models like the XPS15 9550 and might be because of non-OEM power adapters. To check, run
watch -n1 'lscpu | grep MHz'
and perform some tasks. If the CPU frequency is stuck at 800Mhz the whole time, then you have this problem.
To fix, there are three options:
No reboot necessary, instant fix: Read and set the register controlling this throttling back to the maximum frequency, see
Lenovo ThinkPad T480#CPU stuck at minimum frequency
and
this superuser question
for how to do this.
Disconnect the power adapter and battery then hold the power button for 5-30 seconds
Drain the battery, disconnect the power adapter, and then hold the power button for 5-30 seconds
After restarting run the same command to check the CPU frequency again and it should be back to normal.
[2]
During Boot time(POST), devices attached to the USB-C port do not work
It can be a problem in some cases when devices attached to the USB-C port:
Cannot enter BIOS boot menu or BIOS setup with external keyboard.
Cannot deal with boot loader menu.
Cannot boot from external USB storage.
It caused by Dell firmware not initializing them during POST by default. But it can be turned on in BIOS setup (
System Configuration > Thunderbolt Adapter Configuration > Enable Thunderbolt Adapter Boot Support
).
Bug in rtsx driver for Card Reader as of kernel 6.4.11 and 6.1.46LTS prevents booting
A regression was introduced in kernel 6.4.11 and 6.1.46LTS related to the card reader rtsx driver that subsequently prevents the system from recognizing NVMe drives and booting normally.
A workaround is to
blacklists
the offending drivers (
rtsx_pci
and
rtsx_pci_sdmmc
) then
regenerate the initramfs
, until the kernel issue is fixed.
This will disable the card reader and the system will boot normally.
See
FS#79439
for more details.
External links
Dell XPS 15 9560 (Early 2017) Thread on the Arch Forums
Optimizing Dell XPS
Tutorial about how to change CPU thermal paste on XPS15 to avoid throttling
[3]
Configuring the XPS to play nice with Linux thermal sensors (lm_sensors)