Dell XPS 15 (9570)

This article or section does not follow the
Laptop page guidelines
.
Reason:
Hardware table misses a few IDs and the function key tables should be merged. Accessibility section is missing. (Discuss in
Talk:Dell XPS 15 (9570)
)
This article or section needs expansion.
Reason:
This page is far from completed. Some not mentioned items could be the same as
Dell XPS 15 (9560)
. Most of it also applies to the Precision 5530 (Discuss in
Talk:Dell XPS 15 (9570)
)
Hardware
PCI/USB ID
Working?
Touchpad
06CB:7A13
Yes
Keyboard
Yes
GPU (Intel)
8086:3e9b
Yes
GPU (NVIDIA)
10de:1c8c
Yes
Webcam
0c45:671d
Yes
Bluetooth
0cf3:e301
Yes
SD-card reader
10ec:525a
Yes
Audio
8086:a348
Yes
Wi-Fi
168c:003e
Yes
Fingerprint reader
27c6:5395
No
TPM
Yes
Installation
Before installing it is necessary to modify some UEFI Settings. They can be accessed by pressing
F2
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 to allow Linux to boot. Alternatively, you can choose to set up
Secure Boot
so that it works with Linux and you can take advantage of its potential security benefits.
Installation of Arch Linux can proceed normally. Refer to the
Installation guide
for more information.
Note
Many Dell XPS UEFI do not support passing kernel line options directly to the kernel and will result in a frozen boot. Use a
boot loader
or Arch-EFIBoot
[1]
instead.
Firmware
They are 2 main ways to update the UEFI firmware:
through the running Linux session with
fwupd
,
through UEFI: firmware images can be found at
Dell support page
as
XPS_15_9570_X.Y.Z.exe
files:
Download the desired firmware from section "Dell XPS 15 9570 System BIOS"
Save it in
/boot/EFI/Dell/Bios/
(this path may vary, depending on your installation)
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.
Function keys
Key
Visible?
1
Marked?
2
Effect
Fn+Esc
No
Yes
Enables Fn lock
Fn+F1
Yes
Yes
XF86AudioMute
Fn+F2
Yes
Yes
XF86AudioLowerVolume
Fn+F3
Yes
Yes
XF86AudioRaiseVolume
Fn+F4
Yes
Yes
XF86AudioPrev
Fn+F5
Yes
Yes
XF86AudioPlay
Fn+F6
Yes
Yes
XF86AudioNext
Fn+F7
No
No
See
#Unmarked keybinds
Fn+F8
Yes
Yes
Inputs
Super+p
Fn+F9
Yes
Yes
XF86Search
Fn+F10
Yes
Yes
Enables/disables keyboard backlight
Fn+F11
Yes
Yes
XF86MonBrightnessDown
Fn+F12
Yes
Yes
XF86MonBrightnessUp
Fn+Print
Yes
3
Yes
XF86RFKill
, will hard-block Wi-Fi and soft-block Bluetooth. Press again to disable
Fn+Ins
Yes
3
No
XF86Sleep
, see
#Unmarked keybinds
Fn+RCtrl
Yes
Yes
Menu
Fn+Up
Yes
Yes
PageUp
Fn+Down
Yes
Yes
PageDown
Fn+Left
Yes
Yes
Home
Fn+Right
Yes
Yes
End
The key is visible to
xev
and similar tools
The physical key has a symbol on it, which describes its function
systemd-logind handles this by default
Unmarked keybinds
There are several keybinds handled by the BIOS
Key
Effect
Fn+F7
Unobtrusive mode. Has to be enabled in the BIOS in order to work. Deactivates
all
LEDs and turns off display and sound. Press again to disable.
Fn+Ins
Suspends device.
Can not be disabled/configured
Power Management
Suspend
See
Power management/Suspend and hibernate#Changing suspend method
.
Hibernate
Works out of the Box see
Power management/Suspend and hibernate
Powertop
powertop
is very efficient to manage power consumption. Run
powertop --auto-tune
and compare the Watt consumption variation (laptop must be unplugged and running on battery).
powertop --auto-tune
can be run at every boot.
See
Powertop#Apply settings
.
Graphics
The integrated Intel card works out of the box.
Various options for the integrated Intel-card
TLP
is recommended to save some power. However several more options can be activated for the Intel card in order to save power or prevent screen flickering.
Add the following line to:
/etc/modprobe.d/i915.conf
options i915 enable_fbc=1 disable_power_well=0 fastboot=1 enable_psr=0
Some guides suggest the option
enable_guc=3
, however some problem were evidenced with that option.
Before you add it to
/etc/modprobe.d/i915.conf
, try it first as a command-line option before you boot.
kernel modules
The nouveau module is known to cause kernel panics and freezes.
One way to mitigate this would be by adding
nomodeset
to the kernel options. However it is better to completely disable it with the blacklist method (recommended):
/etc/modprobe.d/blacklist.conf
blacklist nouveau
blacklist rivafb
blacklist nvidiafb
blacklist rivatv
blacklist nv
NVIDIA Optimus
See
NVIDIA Optimus#Available methods
.
Disable NVIDIA card when not in use
Another good option is to disable the default NVIDIA board and enable it only for off-loading for computation purposes using
PRIME
.
Note
This alternative drastically lowers the laptop's power consumption from around 13W to 6/7W.
It is possible to make it work with the proprietary NVIDIA driver, and there are probably several ways to make it work. See
[2]
.
Install
nvidia-580xx-dkms
AUR
and
nvidia-prime
. This should pull all necessary packages.
Create the following file and add the following to allow the GPU to power-off on boot:
/etc/tmpfiles.d/nvidia_pm.conf
w /sys/bus/pci/devices/0000:01:00.0/power/control - - - - auto
Several modules need to be blacklisted in order to prevent them from being loaded on boot. Add the following to
/etc/modprobe.d/blacklist.conf
blacklist nouveau
blacklist rivafb
blacklist nvidiafb
blacklist rivatv
blacklist nv
blacklist nvidia
blacklist nvidia-drm
blacklist nvidia-modeset
blacklist nvidia-uvm
blacklist ipmi_msghandler
blacklist ipmi_devintf
Create the following file:
/etc/modprobe.d/disable-nvidia.conf
install nvidia /bin/false
If you are using TLP, you might need to blacklist the discrete NVIDIA card by adding/uncommenting the following line inside the TLP config file:
RUNTIME_PM_DENYLIST="01:00.0"
Double-check the address with
lspci
.
In order to enable and disable the video card create the following 2 scripts:
enableGPU.sh
#!/bin/sh
# allow to load nvidia module
if [ ! -f /etc/modprobe.d/disable-nvidia.conf ]; then
	printf "File /etc/modprobe.d/disable-nvidia.conf does not exist.\n"
	printf "Is the GPU already enabled ?\n"
	exit 1
fi
printf "Allowing to load NVIDIA modules...\n"
mv /etc/modprobe.d/disable-nvidia.conf /etc/modprobe.d/disable-nvidia.conf.disable
printf "Changing power control...\n"
# remove NVIDIA card (currently in power/control = auto)
echo -n 1 > /sys/bus/pci/devices/0000\:01\:00.0/remove
sleep 1
# change PCIe power control
echo -n on > /sys/bus/pci/devices/0000\:00\:01.0/power/control
sleep 1
# rescan for NVIDIA card (defaults to power/control = on)
printf "Rescanning....."
echo -n 1 > /sys/bus/pci/rescan
if [ -x "$(command -v nvidia-smi)" ]; then
	printf "\n"
	nvidia-smi
fi
printf "\nNVIDIA CARD IS NOW ENABLED.\n"
disableGPU.sh
#!/bin/sh
printf "Unloading NVIDIA modules...\n"
modprobe -r nvidia_drm
modprobe -r nvidia_uvm
modprobe -r nvidia_modeset
modprobe -r nvidia
printf "Changing power control...\n"
# change NVIDIA card power control
echo -n auto > /sys/bus/pci/devices/0000\:01\:00.0/power/control
sleep 1
# change PCIe power control
echo -n auto > /sys/bus/pci/devices/0000\:00\:01.0/power/control
sleep 1
# lock system from loading nvidia module
if [ -f /etc/modprobe.d/disable-nvidia.conf.disable ]; then
	mv /etc/modprobe.d/disable-nvidia.conf.disable /etc/modprobe.d/disable-nvidia.conf
	printf "\nNVIDIA CARD IS NOW DISABLED.\n"
else
	printf "\nFile /etc/modprobe.d/disable-nvidia.conf.disable does not exist.\n"
	printf "Is the GPU already disabled ?\n"
fi
If the video card is not disabled on shutdown, then the modules will be loaded again at next boot even though they are blacklisted. Therefore we need to create a service which shuts down the NVIDIA card at shutdown. Create the following file:
/etc/systemd/system/disable-nvidia-on-shutdown.service
[Unit]
Description=Disables Nvidia GPU on OS shutdown
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/bin/bash -c "mv /etc/modprobe.d/disable-nvidia.conf.disable /etc/modprobe.d/disable-nvidia.conf || true"
[Install]
WantedBy=multi-user.target
Finally we need to do a
daemon-reload
and
enable
disable-nvidia-on-shutdown.service
.
Reboot
After rebooting, doublecheck that the nvidia module is not loaded:
$ lsmod | grep nvidia
Now you can enable the NVIDIA card by running the aforementioned script
enableGPU.sh
. The script will verify if the NVIDIA card is enabled. Finally you can run a command with prime-run:
$ glxinfo | grep "OpenGL renderer"
OpenGL renderer string: Mesa DRI Intel(R) UHD Graphics 630 (Coffeelake 3x8 GT2)
$ prime-run glxinfo | grep "OpenGL renderer"
OpenGL renderer string: GeForce GTX 1050 Ti with Max-Q Design/PCIe/SSE2
Disable the card with
disableGPU.sh
to lower the power consumption.
Troubleshooting
xbacklight
To get xbacklight working and not conflicting with NVIDIA Optimus:
/etc/X11/xorg.conf.d/20-intel.conf
Section "Device"
	Identifier  "Intel Graphics"
        Driver      "intel"
        Option      "Backlight"  "intel_backlight"
EndSection
NVRM: Failed to enable MSI; falling back to PCIe virtual-wire interrupts
Sometimes it happens after suspend/resume. GPU could work fine without MSI
[3]
. You could disable MSI by adding the following in
/etc/modprobe.d/nvidia.conf
:
options nvidia NVreg_EnableMSI=0
Lock-ups when resuming from suspend with nvidia module
If your system locks up every time you resume from suspend with the following two lines in the output of
dmesg
:
[   42.447364] pci 0000:01:00.0: Refused to change power state, currently in D3
[   46.896493] pci 0000:01:00.0: Refused to change power state, currently in D3
You need to add the following to your
kernel command line
:
nouveau.blacklist=0 acpi_osi=! acpi_osi=\"Windows 2015\" mem_sleep_default=deep
See NVIDIA bug number: 2589324,
dell resolution
.
Wi-Fi and Bluetooth
These work well out of the box but you might need to update the firmware for better stability.  For Bluetooth, make sure you have everything installed as per the
Bluetooth
wiki page.
Troubleshooting
ath10k module crashes after suspend
You may notice driver crashes after suspend/resume, which for the most part does not seem to impact the running system, with coredumps similar to:
kernel: WARNING: CPU: 6 PID: 27936 at drivers/net/wireless/ath/ath10k/mac.c:5746 ath10k_bss_info_changed+0xf96/0x1120 [ath10k_core]
kernel: Modules linked in: uhid algif_hash cmac rfcomm fuse ccm ipt_MASQUERADE nf_conntrack_netlink nfnetlink xfrm_user xfrm_algo iptable_nat nf_nat_ipv4>
kernel:  snd_hda_intel dcdbas x86_pkg_temp_thermal dell_smm_hwmon snd_hda_codec intel_powerclamp cfg80211 kvm_intel snd_hda_core input_leds snd_hwdep snd>
kernel:  vfio_mdev mdev vfio_iommu_type1 vfio kvm irqbypass intel_gtt i2c_algo_bit drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops drm agpga>
kernel: CPU: 6 PID: 27936 Comm: kworker/u24:42 Tainted: G     U  W  OE     5.0.4-arch1-1-ARCH #1
kernel: Hardware name: Dell Inc. XPS 15 9570/0HWTMH, BIOS 1.8.1 02/01/2019
kernel: Workqueue: events_unbound async_run_entry_fn
kernel: RIP: 0010:ath10k_bss_info_changed+0xf96/0x1120 [ath10k_core]
kernel: Code: 24 8b 95 78 01 00 00 85 c0 0f 85 a7 00 00 00 89 d1 be 10 00 00 00 48 c7 c2 c0 b2 fa c0 4c 89 c7 e8 bf 68 00 00 e9 a5 f1 ff ff <0f> 0b 4c 89>
kernel: RSP: 0000:ffffb7a45422fcd0 EFLAGS: 00010282
kernel: RAX: 00000000fffffffe RBX: ffff98f6d44815a0 RCX: 0000000000000000
kernel: RDX: ffff98f6d4481938 RSI: ffffb7a45422fcf0 RDI: ffff98f6d81df418
kernel: RBP: ffff98f6d81df418 R08: 0000000000000001 R09: 0000000000000000
kernel: R10: 000000000000001f R11: 0000000000000000 R12: 0000000000000020
kernel: R13: ffff98f6d81df420 R14: ffff98f6d4482598 R15: ffff98f6d44815a0
kernel: FS:  0000000000000000(0000) GS:ffff98f6dc380000(0000) knlGS:0000000000000000
179 94%
kernel:  process_one_work+0x1eb/0x410
kernel:  worker_thread+0x2d/0x3d0
kernel:  ? process_one_work+0x410/0x410
kernel:  kthread+0x112/0x130
kernel:  ? kthread_park+0x80/0x80
kernel:  ret_from_fork+0x35/0x40
kernel: ---[ end trace 09ae3e174c178f98 ]---
Patched in some kernels and not others (which?), relevant links:
BBS: Suspend issue with Dell XPS 9570
(related)
bugzilla#201499: ath10k BUG on resume
Wi-Fi partially looses network connectivity every 1-2 hours
With some Wi-Fi routers, the network connection might get partially lost without any noticeable change in the network status. Existing connections (e.g. ssh sessions, Zoom video calls) keep working, but loading new web pages or even pinging the gateway do not work anymore. Restarting the network fixes the problem, which however reappears after 1-2 ours.
The issue can be fixed definitively by downgrading the Wi-Fi card firmware as explained
in post #17 of this forum thread
. To avoid repeating the downgrade every time
linux-firmware
is upgraded, see
pacman#Skip files from being installed to system
.
Bluetooth disappears (after suspend?)
Possibly related to the previous instability issue, sometimes the adapter seems to completely disappear.  As reported
here
(thanks
w.v.w.
, you can likely fix this by manually upgrading the firmware (to something newer than what is in
linux-firmware
:
1. Double check adapter (e.g. QCA6174, below)
$ lspci | grep Network
3b:00.0 Network controller: Qualcomm Atheros QCA6174 802.11ac Wireless Network Adapter (rev 32)
2. Confirm hardware and current firmware version (e.g. hw3.2, firmware RM.4.4.1.c3-00013-QCARMSWPZ-1, below)
# journalctl -b --grep='ath10k.*(firmware|qca)'
kernel: ath10k_pci 0000:3b:00.0: qca6174 hw3.2 target 0x05030000 chip_id 0x00340aff sub 1a56:1535
kernel: ath10k_pci 0000:3b:00.0: firmware ver RM.4.4.1.c3-00013-QCARMSWPZ-1 api 6 features wowlan,ignore-otp,no-4addr-pad,raw-mode,mfp crc32 fc0096a8
3. Follow the instructions at
https://wireless.wiki.kernel.org/en/users/Drivers/ath10k/firmware
[
dead link
2024-10-12—HTTP 404]
e.g. for the above adapter, download the latest firmware from
https://github.com/kvalo/ath10k-firmware/tree/master/QCA6174/hw3.0
[
dead link
2024-07-30—HTTP 404]
and
$ cd /lib/firmware/ath10k/QCA6174/hw3.0
# cp firmware-6.bin firmware-6.bin.bak
# cp ~/Downloads/firmware-6.bin_RM.4.4.1.c3-00013-QCARMSWPZ-1 firmware-6.bin
Either
rmmod ath10k_core ath10k_pci && modprobe ath10k_pci
(as the root user) (may not work, check
dmesg
) or reboot.
ath10k-fixer
A possible workaround for some of the above issues is to reload the
ath10k_pci
kernel module when it crashes:
# modprobe -r ath10k_pci && modprobe ath10k_pci
This workaround is automated by the
ath10k-fixer
AUR
daemon.
Touchpad and Touchscreen
Wacom touchscreen and Synaptics touchpad:
$ xinput
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ SYNA2393:00 06CB:7A13 Touchpad            id=16   [slave  pointer  (2)]
⎜   ↳ Wacom HID 488F Finger                     id=15   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
[truncated]
Both are i2c devices:
$ udevadm info /dev/input/mouse3 # touchscreen
P: /devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-10/i2c-WCOM488F:00/0018:056A:488F.0006/input/input47/mouse3
N: input/mouse3
L: 0
E: DEVPATH=/devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-10/i2c-WCOM488F:00/0018:056A:488F.0006/input/input47/mouse3
E: DEVNAME=/dev/input/mouse3
E: MAJOR=13
E: MINOR=35
E: SUBSYSTEM=input
E: USEC_INITIALIZED=5501073
E: ID_INPUT=1
E: ID_INPUT_TOUCHSCREEN=1
E: ID_PATH=pci-0000:00:15.0-platform-i2c_designware.0
E: ID_PATH_TAG=pci-0000_00_15_0-platform-i2c_designware_0
$ udevadm info /dev/input/mouse6 # touchpad
P: /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-11/i2c-SYNA2393:00/0018:06CB:7A13.0007/input/input38/mouse6
N: input/mouse6
L: 0
S: input/by-path/pci-0000:00:15.1-platform-i2c_designware.1-mouse
E: DEVPATH=/devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-11/i2c-SYNA2393:00/0018:06CB:7A13.0007/input/input38/mouse6
E: DEVNAME=/dev/input/mouse6
E: MAJOR=13
E: MINOR=38
E: SUBSYSTEM=input
E: USEC_INITIALIZED=4683741
E: ID_INPUT=1
E: ID_INPUT_TOUCHPAD=1
E: ID_SERIAL=noserial
E: ID_PATH=pci-0000:00:15.1-platform-i2c_designware.1
E: ID_PATH_TAG=pci-0000_00_15_1-platform-i2c_designware_1
E: DEVLINKS=/dev/input/by-path/pci-0000:00:15.1-platform-i2c_designware.1-mouse
If you experience problems with the touch pad it might be worth disabling psmouse
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.
Caldigit TS3 Plus
The TS3 Plus 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. There is an issue where the USB ports will not work if unplugged and then plugged in again. This can be fixed by rebooting into the UEFI and using BIOS assisted enumeration (NOT native nor auto-switch), you may need to disable auto-switch, apply, then choose BIOS assisted, then apply again.
Thermal management
Thermal design is poor in the 9570, primarily due to higher-end chips being used inside the original system design without compensating for extra heat. This impacts numerous areas:
Performance
: at higher temperatures, CPU cores are throttled down to avoid damage.  At best your system will not run as fast as it can, and at worst (and quite commonly), slower than cheaper chips and with sluggish performance.
Battery life
is unnecessarily decreased.
System longevity
: running at constantly high temperatures will negatively impact equipment lifetime.
User discomfort
: uncomfortable heat and uncomfortable fan noise.
Fortunately these can all be improved significantly to get your system running powerfully and quietly.
Diagnosis
You probably have a lot of
dmesg
output like this (for all CPUs), even with fairly light usage:
kernel: CPU8: Package temperature above threshold, cpu clock throttled (total events = 8451)
kernel: CPU8: Package temperature/speed normal
Use
lm_sensors
and do some
stress testing
(with
stress
and
mprime
) to see what is happening with CPU core temperatures and fanspeed under different loads.
Undervolting
See
Undervolting CPU
on the wiki.  Reduces heat and extends battery life.
Warning
Versions 1.16.0 and newer of the BIOS interfere with undervolting. See
this issue
for more information and potential workarounds.
Possible configurations for
/etc/intel-undervolt.conf
:
i9-8950HK* (last updated 2019-03-30)
undervolt 0 'CPU' -140
undervolt 1 'GPU' -75
* Tested extensively for moderate use.  Was not stress tested for > 24 hours.  Anecdotal reports of up to -200.
This has a more minor impact than repasting but is significantly easier to do.
Repasting & padding
Significant improvements are possible by replacing the thermal grease used by Dell with better options available from Amazon, and adding some extra thermal padding. This might sound overwhelming but is well worth the effort, especially for newer CPUs. If you cannot do this yourself consider finding a shop / technician who can do this for you. See the following article as the user comments below it for more info:
UltraBookReview: How to Fix Throttling on the Dell XPS 15 9570 / 9560
Picture of 9570 VRMs
- from comments of the above article
Results
According to the author of the UltraBookReview article above:
Undervolting seems to reduce temps at max load by 7-10C, while repasting seems to reduce temps by between 4-10C depending on your original paste job and paste used.
From
this forum post
, much lower/softer fan speeds were needed to maintain the same temperatures, and temperature was a few degrees lower under similar loads. Fans were on less often and for less time when they were. Throttling was less prevalent and less severe.
Fingerprint reader
The fingerprint reader lacks Linux drivers.
Goodix will not provide them directly as stated on their forum and frequently blames the responsibility on
device manufacturers
.
Nonetheless Goodix stated (2020-04-30) that they are collaborating with Dell to
provide the support for Linux in the second half of 2020
for the XPS 9570.
There are also some people working on
reverse engineering the driver
.