Dell XPS 15 9560
|Device||Make/model||Status||Kernel driver(s)||Kernel version|
|CPU||Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz||Works||4.12.5|
|Hard disk||512GB PCIe Solid State Drive||Works||nvme|
|Video card||NVIDIA Corporation GP107M GeForce GTX 1050 Mobile (4GB GDDR5)||Works||nvidia, fbsimple||4.14.8|
|Video card||Intel Corporation Device 591b (rev 04)||Works||i915||4.13|
|Wireless||Killer 1535 802.11ac 2x2 WiFi (Qualcomm Atheros QCA6174)||Works||ath10k_core ath10k_pci linux-firmware|
|Touchscreen||ELAN Touchscreen||Works||usbhid hid_multitouch||4.15.4|
|Bluetooth||Killer 1535 Bluetooth||Works||bluetooth btrtl btintel bnep btbcm rfcomm btusb linux-firmware||4.15.4|
|Thunderbolt 3||2 lanes of PCI Express Gen 3. Supports: Power In / Charging, PowerShare, 40Gbps Bi-Directional, 3.1 USB Gen 2 (10Gbps), VGA, HDMI, Ethernet and USB-A via Dell Adapter (Sold Separately)||Works||?|
|SD Card Reader||SD, SDHC, SDXC||Works||?|
|Webcam||Widescreen HD (720p)||Works||uvc||4.14.8|
|Microphone||Dual array digital microphones||Works||?|
|Fingerprint reader||138a:0091 Validity Sensors, Inc.||No||None (see below)|
Regarding the unsupported fingerprint reader, according to arch wiki, "The fingerprint reader is a Validity/Synaptics model with USB id 138a:0090. There currently is no Linux driver but an open source Linux driver is being developed by reverse engineering the Windows driver.". This implies some or earlier versions have the 138a:0090 version, which a driver is now functional for, however mine has the 138a:0091 version, which is unsupported. See driver development github repository for further information.
Some models have touch screens. Some models are 2-in-1 (break apart). I tested on a conventional (non break apart) model with touch screen, however the touch screen has not been tested. A dock exists however I have never seen it and wouldn't personally make use of it. Other reports have described docks in this series as functional, however.
BIOS version on receipt was
ePSA Build 4304.17 UEFI ROM.
We need the sys-kernel/linux-firmware package to operate the wireless chipset and to provide firmware to upload to the Intel graphics controller to enable things like proper power management.
We want to enable a few things in /etc/portage/make.conf ...
VIDEO_CARDS="nvidia" INPUT_DEVICES="evdev wacom libinput synaptics"
CONFIG_ATH10K=m=y CONFIG_ATH10K_PCI=m CONFIG_ATH10K_AHB=y CONFIG_ATH10K_USB=m
CONFIG_RTC_CLASS=y CONFIG_RTC_HCTOSYS=y CONFIG_RTC_SYSTOHC=y CONFIG_RTC_NVMEM=y CONFIG_RTC_INTF_SYSFS=y CONFIG_RTC_INTF_PROC=y CONFIG_RTC_INTF_DEV=y CONFIG_RTC_DRV_CMOS=y
CONFIG_DELL_SMBIOS=y CONFIG_DELL_WMI=y CONFIG_DELL_WMI_AIO=y CONFIG_DELL_WMI_LED=y CONFIG_DELL_SMO8800=y CONFIG_DELL_RBTN=y
Probably not all of these are needed, but I am too lazy to isolate the correct option. To test this is working, emerge acpid then run acpid && acpi_listen on the command-line. Pressing the various function keys such as F11/F12 for brightness up and down should show events like
BRTDN. If you don't have the correct kernel flags, these will simply shown zeroes and no named/registered ACPI events.
For x86 and AMD64 processors, the in-kernel framebuffer driver conflicts with the binary driver provided by NVIDIA. When compiling the kernel for these CPUs, completely remove support for the in-kernel driver as shown:
Device Drivers ---> Graphics support ---> Frame buffer Devices ---> <*> Support for frame buffer devices ---> < > nVidia Framebuffer Support < > nVidia Riva support < > Userspace VESA VGA graphics support < > VESA VGA graphics support <*> Simple framebuffer support < > EFI-based Framebuffer Support
Now make sure the
nouveau driver is disabled:
Device Drivers ---> Graphics support ---> < > Nouveau (NVIDIA) cards
Ensure MTRR and kernel module support are enabled.
[*] Enable loadable module support ---> Processor type and features ---> [*] MTRR (Memory Type Range Register) support
CONFIG_FB=y CONFIG_FB_BACKLIGHT=y CONFIG_FB_NVIDIA=n CONFIG_FB_RIVA=n CONFIG_DRM_NOUVEAU=n CONFIG_FB_EFI=n CONFIG_FB_VGA16=n CONFIG_FB_UVESA=n CONFIG_FB_SIMPLE=y
Unsure whether in-kernel AGP or builtin nvAGP is better on this device. Apparently this varies by device. The switch is this option.
Device Drivers ---> Graphics support ---> -*- /dev/agpgart (AGP Support) --->
Synaptics touch pad.
emerge --ask xf86-input-synaptics
You can tune this with a tool, see the arch linux page on synaptics touchpad for more details.
Bumblebee / Primus
Hybrid Graphics (GPU Switching) is available on the XPS 15 9560. Follow the Gentoo Bumblebee Wiki guide to installing it.
There is a known bug with Bumblebee whereupon the user cannot start an x server or make any PCI but calls while the GPU is switched off. Symptoms will be a complete system hang when running
lspci or similar while Bumblebee is ON, bbswitch is enabled, and the discrete GPU is off.
The answer lies in [this Reddit thread] and [this Arch forums post]. Add
GRUB_CMDLINE_LINUX_DEFAULT='acpi_rev_override=5 modprobe.blacklist=nvidia nvidia.modeset=0 pcie_port_pm=off acpi_osi="Windows 2009"' to a grub config file then rebuild grub.
It was necessary on my system to configure Xorg to use the Intel iGPU by default and to have the
nvidiamodule loaded in order to start an X server without the system hanging. See the Troubleshooting Section of the wiki.
Slow 2D graphics
According to this page slow 2D performance attributed to a BIOS setting can be identified via:
reg00: base=0x00000000 ( 2048MB), size= 2048MB, count=1, uncachable ...
If any line contains the word "uncachable" apparently you need to reboot, enter BIOS, and change an MTRR setting from 'continuous' to 'discrete'. However, on my machine while this is certainly the case, I cannot find such an option in the BIOS.
X11 fails to start with "No Screens Found"
This can be because you have enabled the
efifb EFI Framebuffer Driver in the kernel. Disable it. Only
CONFIG_FB_SIMPLE=y (Simple Framebuffer) is OK to leave enabled!
Crash on X11 startup
This can occur you have the
nouveau driver enabled. You can work around it by adding nomodeset to the kernel command line.
Excessive CPU Throttling
When the CPU runs continuously at 100% (say, for instance when emerging larger packages), it can become quite hot. When it crosses certain temperature thresholds, it throttles down the CPU frequency, which in turn makes it run cooler for a while, but at a vastly lower clock frequency. Dell XPS 15:s (and other XPS models) have historically have not had enough airflow to cool the CPU in its default configuration (or the discrete GPU for that matter).
Several workarounds have been attempted with modding the case with cooling pads, tape, better thermal paste, etc. One easy thing to try first is to adjust the voltage of the CPU (and/or the GPU) with the 'sys-power/intel-undervolt' package.
In the settings in
/etc/intel-undervolt.conf, try something like this:
undervolt 0 'CPU' -125 undervolt 1 'GPU' -75 undervolt 2 'CPU Cache' -125 undervolt 3 'System Agent' -75 undervolt 4 'Analog I/O' 0
Due to a lot of factors depending on your particular machine, you might still be able to get a stable system with even lower figures, or you might have to raise them a bit. It did make a huge difference in temperature, and the CPU did not throttle anymore after these settings.
- Closed source NVIDIA drivers and open source Nouveau drivers and how to switch between them.
- Qualcomm Atheros QCA6174 and Gentoo AMD64 Handbook Wireless Networking