Dell XPS 15 9570

From ArchWiki
Jump to: navigation, search
Note: This page far from completed. Some not mentioned items could be same as XPS 15 9560
Device/Functionality Status
Suspend Working
Hibernate Working
Integrated Graphics Working
Discrete Nvidia Graphics Modify
Wifi[broken link: invalid section] Working
Bluetooth[broken link: invalid section] Working
rfkill[broken link: invalid section] Working
Audio Working
Touchpad[broken link: invalid section] Working
Webcam Working
Card Reader Working
Function/Multimedia Keys Working
Power Management[broken link: invalid section] Buggy
EFI firmware updates Working
Fingerprint reader[broken link: invalid section] Not working

Suspend

By default, the very inefficient s2idle suspend variant is incorrectly selected. This is probably due to the BIOS. The much more efficient deep variant should be selected instead:

 $ cat /sys/power/mem_sleep 
 [s2idle] deep
 $ echo deep|sudo tee /sys/power/mem_sleep
 $ cat /sys/power/mem_sleep 
 s2idle [deep]

To make the change permanent add mem_sleep_default=deep to your kernel parameters.

Read more regarding the sleep variants on the kernel documentation [1].

Warning: Some users have reported a problem where the CPUs get stuck in a high power state after resuming from S3 (deep) suspension [2].


Hibernate

Works out of the Box see Power management/Suspend and hibernate

Graphics

The nouveau module is known to cause kernel panics and freezes on this model. One way to mitigate this is by adding nomodeset to the kernel options, however it's best if you completely disable it.

/etc/modprobe.d/blacklist.conf
blacklist nouveau
blacklist rivafb
blacklist nvidiafb
blacklist rivatv
blacklist nv
blacklist uvcvideo

And make sure the discrete GPU powers off by default on boot.

/etc/tmpfiles.d/nvidia_pm.conf
w /sys/bus/pci/devices/0000:01:00.0/power/control - - - - auto

Integrated graphics works well out of the box.

Optimus Nvidia

Works but additional configuration is needed. (see *[3])

  • If tlp is installed, add the graphic card to RUNTIME_PM_BLACKLIST
  • Uninstall or disable bbswitch
  • Install bumblebee and set PMMethod=none in nvidia section
  • Install nvidia driver
  • Reboot

Note: This is just one configuration that worked. There are more configurations that might work just as well or even better. Sometimes nvidia driver can not be unloaded because some process is still using it.

bbswitch

Discrete (GeForce GTX 1050 Ti) graphics card do not work well with bbswich. It won't power on/off (see *[4]).

nvidia-xrun

The nvidia-xrunAUR package will not work because it relies on bbswitch, that is broken. The nvidia-xrun-pmAUR package provides an alternative version that works with this card. After installing the package a service can be enabled to automatically bring the card down during boot:

 systemctl enable nvidia-xrun-pm

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.


EFI firmware updates

This device is supported by Fwupd.

Tips and Tricks

Systemd doesn't wait for Network

Few months ago systemd added "after= .. .. network.target" in /usr/lib/systemd/system/systemd-user-sessions.service

This causes systemd to wait for network connection at boot, you can modify this file to remove network.target but it will be overwritten on systemd update. A better workaround is to add /etc/systemd/system/systemd-user-sessions.service with network.target removed.

/etc/systemd/system/systemd-user-sessions.service
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Permit User Sessions
Documentation=man:systemd-user-sessions.service(8)
After=remote-fs.target nss-user-lookup.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/lib/systemd/systemd-user-sessions start
ExecStop=/usr/lib/systemd/systemd-user-sessions stop