Dell XPS 13 (9350)

From ArchWiki
(Redirected from Dell XPS 13 (2016))
Jump to: navigation, search
Note: This page refers to the early 2016 model of XPS 13. For the late 2016 model see Dell XPS 13 (9360).
Device Status Modules
Video Working i915
Wireless Working brcmfmac
Bluetooth Works after installing firmware btbcm
Audio Working snd_hda_intel
Touchpad Working  ?
Webcam Working uvcvideo
Card Reader Working rtsx_pci
Wireless switch Working intel_hid
Function/Multimedia Keys Working  ?
TPM 1.2/2.0 Working tpm

The Dell XPS 13 2016 (9350) is the third-generation model of the XPS 13 line. The laptop is available in both a standard edition with Windows installed as well as a Developer Edition which only differs in that it comes with Ubuntu installed as well as the Broadcom WiFi card replaced with an Intel WiFi card. Just like the older versions (Dell XPS 13 (9333) and Dell XPS 13 (9343)) it can be bought in different hardware configurations.

The installation process for Arch on the XPS 13 does not differ from any other PC. For installation help, please see the Installation guide and UEFI. This page covers the current status of hardware support on Arch, as well as post-installation recommendations.

As of kernel 4.3, the Intel Skylake architecture is supported.

Content adaptive brightness control

In the XPS 13 the display panels (both FHD and QHD+) come with adaptive brightness embedded in the panel firmware, this "content adaptive brightness control" (usually referred to as CABC or DBC) will adjust the screen brightness depending on the content displayed on the screen and will generally be found undesirable, especially for Linux users who are likely to be switching between dark and light screen content. Dell has issued a fix for this however it is only available to run in Windows and for the QHD+ model of the laptop so this precaution should be taken before installing Linux, the FHD model of the XPS 13 (9350) cannot be fixed. This is not a problem with the panel but rather a problem with the way the panels are configured for the XPS 13, as the same panel exists in the Dell's Latitude 13 7000 series (e7370) FHD model but with CABC disabled. The fix is available directly from Dell.


The most convenient way to install Arch Linux is by disabling "Secure Boot" (Secure Boot > Disable). However it is possible to self-sign your kernel and boot with it enabled. For further information have a look at the Secure Boot article.

In case your efivars are not properly set it is most likely due to you not being booted into UEFI. Should the problem persist be sure to consult the UEFI#UEFI Variables section.


BIOS update 1.4.17 was released on 2017-05-23. Store the update binary on your EFI partition (/boot/EFI) or on a USB flash drive, reboot, and choose BIOS Update in the F12 boot menu. This might also help if your machine will not resume after suspend.

Firmware Updates

Dell provides firmware updates via Linux Vendor Firmware Service (LVFS). Refer to Flashing BIOS from Linux#fwupd for additional information. A package is readily available at fwupdAUR.

Thunderbolt 3 / USB 3.1

The USB-C port supports Thunderbolt 3, Displayport-over-USB-C and USB power delivery as well as USB 3.1.

In the event of devices not working correctly, ensure that you have updated to the latest BIOS (above) and Thunderbolt firmware (below).

Dell is working on a fwupd extension (github repository) that allows updating Thunderbolt software from Linux.

Alternatively, the Thunderbolt 3 Firmware Update, A04 was released on 2016-08-10. Unlike the BIOS update and the Thunderbolt-nvm Linux update, this is a graphical application which must be run in a modern Windows environment (MS-DOS will not suffice).

Hotplug support for this port requires a bug fix which landed in kernel version 4.7. It also requires the kernel to be built with CONFIG_PCI_HOTPLUG=y.

External screen

Support for external screens either using an USB-C to HDMI or USB-C to Mini Display ports adapters may not be working properly. Commonly the screen when plugged is reported to either:

  • display an image for a few milliseconds then switch to a black screen;
  • have no image at all;
  • being flickering after a few minutes to the extent this is basically unusable.

Refer to the according Arch Forum entry for an exhaustive discussion about working adapters and the Dell forum entry.

SATA controller

When the SATA-controller is set to RAID On in Bios, the hard disk (at least the SSD) is not recognized. Set to Off or AHCI (AHCI is recommended) before attempting to install Arch.

Dual booting Linux and Windows

In order to boot into Windows properly without getting an INACCESSIBLE_BOOT_DEVICE error with disabled RAID you must configure Windows to use the AHCI-speaking SATA storage controller, assuming you used AHCI for installing Linux. The driver is effectively disabled even though it is installed. Either of the following methods were reported to activate the drivers without reinstallation (your mileage may vary):

Consult the microsoft support page for additional information. Be aware that some manufactures propagate reinstalling Windows to be the only solution, which it is not.

NVM Express SSD

Cannot find root device

The location of the nvme module for "NVM Express" SSD has changed between linux kernel version 4.3 and 4.4. If you experience "cannot find root device" on boot, it may be due to the nvme module not being present in initramfs. In this case, the following may resolve your issue.

Edit your /etc/mkinitcpio.conf file:

   MODULES="... nvme"

Then update the bootloader.

   # mkinitcpio -p linux

where linux is the name of the image loaded on boot. If you installed linux-mainlineAUR then change that to linux-mainline.

Note on Mount Options

Using the discard mount option for your filesystem is not recommended, as mentioned in this warning and the forum. See also Solid State Drives/NVMe#Discards for further information.

NVME Power Saving Patch

Andy Lutomirski has created a patchset which fixes powersaving for NVME devices in linux. Currently, this patch is not merged into mainline yet. Until it lands in mainline kernel use the AUR or repository linked below. Linux-nvme — Mainline linux kernel patched with Andy's patch for NVME powersaving APST. || linux-nvmeAUR

As of kernel version 4.11, this patch is no longer needed.


For the non-developer edition, the built-in Broadcom BCM4350 is now supported in the current linux kernel (as of version 4.4.1-1). The wireless module brcmfmac also needs the firmware brcmfmac4350-pcie.bin from the related linux-firmware package.

The Broadcom adapter does not report its regulatory country and so, by default, the global settings for channels and frequencies will be set. See Wireless network configuration#Respecting the regulatory domain for more information about how this can be changed.

If your device is unable to find any networks try pressing the function key which toggles the wifi, then check `rfkill list` and run `rfkill unblock [device-number]` and try again.


Intel WiFi

If your WiFi card supports Bluetooth, then the BT interface should be available out-of-the-box, as the required firmware is included in linux-firmware.

Broadcom Wifi

Bluetooth should work right away. Load the module btusb and bluetooth if it was not already and start/enable bluetooth.service. Refer to Bluetooth for more information and configuration options.

Wireless headset: strange bluetooth behavior

If your Bluetooth behaves unstable, such as connection loss, stuttering sound. being able to connect but not to listen through it, etc. you probably need the proprietary firmware.

The Broadcom Bluetooth firmware is not available in the kernel (the same as for the 2015 model source), therefore you will have to retrieve it from a Windows .exe. You need to extract the .exe file with p7zip and then convert it to a .hcd file with hex2hcd from bluez-utils:

$ 7z x 9350_Network_Driver_XMJK7_WN32_12.0.1.720_A00.EXE
$ cp Win32/BCM4350C5_003.006.007.0095.1703.hex ./
$ hex2hcd BCM4350C5_003.006.007.0095.1703.hex
# mv BCM4350C5_003.006.007.0095.1703.hcd /lib/firmware/brcm/BCM-0a5c-6412.hcd

Alternatively, you may simply install bcm4350-firmwareAUR.

After a reboot, the firmware should be available for your Bluetooth interface.


The video should work with the i915 driver of the current linux kernel. Consult Intel graphics for a detailed installation and configuration guide as well as for Troubleshooting.

Blank screen issue after booting

If using "late start" KMS (the default) and the screen goes blank when loading modules, it may help to add i915 and intel_agp to the initramfs or using a special kernel parameter. Consult Intel graphics#Blank screen during boot, when "Loading modules" for more information about the kernel paramter way and have a look at Kernel mode setting#Early KMS start for a guide on how to setup the modules for the initramfs.

Linux kernel 4.8 or later power savings

Warning: The following options of the i915 module taint the kernel, use at your own risks!


i915.enable_rc6=1 seems to be stable, setting the value to a higher number will be ignored is therefore confusing, the deeper GPU power states that this option enables (RC6p and RC6pp) do not exist on gen7+ hardware.[1][2].

Panel Self Refresh

i915.enable_psr=1 allows for some really nice power savings by leaving the package longer in more efficient C-states. However, users experience freezes for a few seconds with this option fairly often, setting the value to 2 or 3 may yield to similar power savings but without the freezes. i915.disable_power_well=0 with i915.enable_psr=1 i915.enable_rc6=1 also seems to be a stable configuration for PSR.

Frame Buffer Compression

i915.enable_fbc=1 is stable but does not seem to yield significant power saving results.


GuC loading with i915.enable_guc_loading=1 i915.enable_guc_submission=1 seems stable too.

Linux kernel 4.3 or earlier

If you are using an older kernel 4.3 or earlier, you also require the kernel parameter i915.preliminary_hw_support=1, see Intel graphics#Skylake support. (For later kernels 4.3+ or linux-bcm4350AUR the parameter is unnecessary.)

Linux kernel 4.5 or earlier

If you have the newer i7-6560 CPU with Iris 540 graphics, the GPU hangs every few minutes with kernel versions before 4.6. This is probably due to this bug and can be countered by either disabling DRI in your Xorg configuration:

Section "Device"
	Identifier  "Intel Graphics"
	Driver      "intel"
	Option	    "DRI"	"false"

or by adding i915.enable_rc6=0 to the kernel boot parameters.


Only key-presses work out of the box. Installing xf86-input-libinput is sufficient for proper mouse support plus it also handles the touchscreen - see libinput for configuration. Features such as tap-to-click are usually adjustable within the desktop environment.

Alternatively you may want to install xf86-input-synaptics as driver but "it is on maintenance mode and xf86-input-libinput must be preferred over" (installation note from the package itself). Plus it may lack the ability to be easily adjustable within your desktop environment (see Dell Studio XPS 13). Restarting the X server might be required.

Remove psmouse errors from dmesg

If dmesg | grep -i psmouse returns an error, but your touchpad still works, then it might be a good idea to disable psmouse. First create a config file:

   # nano /etc/modprobe.d/modprobe.conf
   blacklist psmouse

Then add this file to /etc/mkinitcpio.conf:


Rebuild your initial ramdisk image (see Mkinitcpio#Image creation and activation).


Refer to libinput#Gestures for information about the current development state and available methods.


Coil whine when using headphones

When using TLP and audio is not playing but headphones are plugged in you may experience extremely annoying whine when using the computer. This happens after the audio adapter power saving is enabled. By default TLP sets the timeout on battery to 1 second which will cause whining almost as soon as sound is paused. To remedy this you can edit /etc/default/tlp to set a higher timeout or disable it:


High noise floor when using headphones

Some people reported white hissing/crackling noises when using headphones. To get rid of them you can run alsamixer from alsa-utils. Select your soundcard with F6 and set the headset-gain to 22 (3rd lever from the left) or use the amixer command:

 $ amixer -c 0 cset 'numid=10' 1
 numid=10,iface=MIXER,name='Headphone Mic Boost Volume'
   ; type=INTEGER,access=rw---R--,values=2,min=0,max=3,step=0
   : values=1,1
   | dBscale-min=0.00dB,step=10.00dB,mute=0

Unfortunately PulseAudio will override the above setting every time you log in/out of your environment (or every time the PulseAudio service is restarted), even if the alsa-restore.service is enabled at start up.

To work around this issue, edit /usr/share/pulseaudio/alsa-mixer/paths/analog-input-headphone-mic.conf and comment out the section [Element Headphone Mic Boost]:

 #[Element Headphone Mic Boost]
 #required-any = any
 #switch = select
 #volume = merge
 #override-map.1 = all
 #override-map.2 = all-left,all-right

Similarly in /usr/share/pulseaudio/alsa-mixer/paths/analog-input-internal-mic.conf, comment out the same section:

 #[Element Headphone Mic Boost]
 #switch = off
 #volume = off

This will prevent PulseAudio to fiddle with the gain setting at all.

Note: Unfortunately, you must make the same modifications every time the PulseAudio package is updated. Additionally, this will entirely disable the internal microphone.


Note: Not all hardware has the "Digital" channel

For ALSA, increase "Digital" channel for microphone to work.


As shipped the Trusted Platform Module (TPM) can be configured easily following the steps at Trusted Platform Module and requires no otherwise special configuration. Handy packages to use with the TPM are tpm-toolsAUR and trousersAUR.

TPM 2.0

Originally the Dell XPS 13 (9350) shipped with TPM 1.2 - the TPM chip was configured to support the TPM Standard version 1.2. However, on 6 Jan 2017 Dell released a firmware update (internal version for the TPM chip that converts it to support the feature set of TPM Standard version 2.0. Unfortunately, as of this moment the update cannot be applied through Linux or the BIOS direct flashing capabilities. The only way to install it seems to be to apply it through a running Windows OS. The easiest method is to run a temporary Windows installation on a USB drive, boot into it and run the update from there.
Note: It should be noted that this update is reversible once applied. To revert back to TPM 1.2 by using a firmware update It also requires that the TPM memory and configuration is completely cleared.
Note: As for BIOS updates, please make sure the laptop is plugged in to a power source and that power source is stable.

To install the update one can follow the instructions on the above mentioned firmware update page to clear and reset the TPM chip and initiate the update. Users intending to later use the device in Linux, can skip the last steps 11 & 12 from section "Disable TPM Auto Provisioning in Windows". Another option is to just clear the TPM following this guide and just run the .exe file from Windows.

Once the update succeeds, the Linux kernel should automatically recognise the newly configured TPM device and enable it automatically on next boot. To make use of the now TPM 2.0 chip a couple of packages are worth installing - tpm2.0-tss-gitAUR and tpm2.0-tools-gitAUR. To make the TSS resource manager work on boot, a handy systemd service is provided and its variants discussed here.

CPU slowdown after resume from suspend

If you are experiencing a very slow computer after resume from suspend, you may be subject to a bug where your CPU frequency is capped to a very low value. Use cpupower frequency-info to check. If so, please read this forum thread for debug information, and a workaround.

lspci and lsusb

Tango-inaccurate.pngThe factual accuracy of this article or section is disputed.Tango-inaccurate.png

Reason: According links unter #See also should be sufficient. It is therefore not necessary to list the output here. (Discuss in Talk:Dell XPS 13 (9350)#)

The lspci and lsusb below were take from the following system:

[    0.000000] DMI: Dell Inc. XPS 13 9350/0PWNCR, BIOS 1.3.3 03/01/2016

on kernel:

Linux marv 4.5.4-1-ARCH #1 SMP PREEMPT Wed May 11 22:21:28 CEST 2016 x86_64 GNU/Linux


00:00.0 Host bridge: Intel Corporation Skylake Host Bridge/DRAM Registers (rev 08)
00:02.0 VGA compatible controller: Intel Corporation Skylake Integrated Graphics (rev 07)
00:04.0 Signal processing controller: Intel Corporation Skylake Processor Thermal Subsystem (rev 08)
00:14.0 USB controller: Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller (rev 21)
00:14.2 Signal processing controller: Intel Corporation Sunrise Point-LP Thermal subsystem (rev 21)
00:15.0 Signal processing controller: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #0 (rev 21)
00:15.1 Signal processing controller: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #1 (rev 21)
00:16.0 Communication controller: Intel Corporation Sunrise Point-LP CSME HECI #1 (rev 21)
00:1c.0 PCI bridge: Intel Corporation Device 9d10 (rev f1)
00:1c.4 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #5 (rev f1)
00:1c.5 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #6 (rev f1)
00:1d.0 PCI bridge: Intel Corporation Device 9d18 (rev f1)
00:1f.0 ISA bridge: Intel Corporation Sunrise Point-LP LPC Controller (rev 21)
00:1f.2 Memory controller: Intel Corporation Sunrise Point-LP PMC (rev 21)
00:1f.3 Audio device: Intel Corporation Sunrise Point-LP HD Audio (rev 21)
00:1f.4 SMBus: Intel Corporation Sunrise Point-LP SMBus (rev 21)
3a:00.0 Network controller: Broadcom Corporation BCM4350 802.11ac Wireless Network Adapter (rev 08)
3b:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS525A PCI Express Card Reader (rev 01)
3c:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller (rev 01)

Full output from sudo lspci -v

After plugging in a USB-C hub, a number of new PCI devices appear:

01:00.0 PCI bridge: Intel Corporation Device 1576
02:00.0 PCI bridge: Intel Corporation Device 1576
02:01.0 PCI bridge: Intel Corporation Device 1576
02:02.0 PCI bridge: Intel Corporation Device 1576
39:00.0 USB controller: Intel Corporation Device 15b5


Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 0c45:670c Microdia 
Bus 001 Device 003: ID 04f3:20d0 Elan Microelectronics Corp. 
Bus 001 Device 002: ID 0a5c:6412 Broadcom Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Full output from sudo lsusb -v

See also