Dell Xps 15 (9550) and Linux

The purpose of this page is to document my experience with the Dell XPS 15 (9550) and Linux. The emphasis is on the 9550 (current) model which uses Intel's Skylake Architecture and the information provided here is likely not applicable to prior versions of the XPS 15 (nor later versions).

Foreword (Warning)

I'm biased and maybe make things look easier or harder than they are. My decision to use Linux is a conscious choice and I'm living it by the attitude that I own the problem.

I should also say that the following is a summary of two "identical" Dell XPS 15 (9550). One that I own personally and one that was purchased by my employer.

Hardware

Base Model

I purchased the high-end model (CPU, 4K touch screen) with the lowest possible configuration in terms of RAM and SSD. The intention was to replace both from the get-go.

  • Dell XPS 15 (9550)
    • Intel Core i7-6700HQ Quad Core (Skylake)
    • 4K Ultra HD InfinityEdge touch
    • 16GB DDR4-2133MHz RAM
    • 256GB PCIe SSD
    • A bunch of other non-relevant stuff...

Upgrades

Other

Software

I've been using Arch Linux since I got my first Dell XPS 13 (L322X) Developer Edition. I can highly recommend Arch Linux (for reasons see below) but you must be willing to own the problem and the learning curve can be steep. In return you'll be rewarded with a lean and modern Linux. My high level configuration looks like this:

  • Arch Linux
  • GNOME

Linux & Skylake

I purchased this computer in February 2016 and the Linux Kernel was at version 4.4 at that time. I don't know if it's generally applicable to all Skylake based computers but I can't recommend to run a Linux distribution with a Kernel version older than 4.6. 

It Just works

Generally speaking: it just works. I attribute a great deal of it to Arch Linux and its frequent rolling release schedule. 

Ignoring Thunderbolt 3 for a second there's really nothing that doesn't work. The touchscreen including gestures such as pinching to zoom works. The light below the keyboard works and adjusts itself to the ambient light. All the meta keys such as mute, volume up & down work. WiFi and Bluetooth works (see known issues). The Anker USB to RJ45 Gigabit Ethernet Adapter works.

The HDMI port works and outputs 4K at 30Hz. The Cable Matters' USB 3.1 Type C to DisplayPort/HDMI adapters work and output 4K at 60Hz (at least the DisplayPort version does, not sure about HDMI). There is zero, zip, zilch, nada X11 configuration and hot plugging works as well. This gives me a total of 12K pixel desktop space with one gotcha (see below).

Update: My most recent addition is the Plugable Thunderbolt 3 dual DisplayPort adapter. The intention is to drive both external Monitors via Thunderbolt 3 @ 60Hz because the XPS' own HDMI 1.4 port is physically limited to 30Hz. I'm happy to say that it's working as well.

Some gotchas

Graphics

The XPS 15 has two built-in graphics chips. An Intel HD Graphics 530 chip and a Nvidia GeForce GTX 960M chip. This created initially a great deal of confusion (at least for me). The Nvidia chip has no physical connection to any of the ports and everything has to go thru the Intel chip. For further information please see Nvidia's Optimus platform and you can use something like Bumblebee to make use of it. 

HiDPI and Monitors

If you have a XPS 15 with the 4K screen then get external Monitors that are 4K as well. If you don't then don't. Mixing different DPI densities will not work very well. 

NON-HIDPI

This is speculative because I have never tried the non-HiDPI version of the XPS 15 but I'd assume everything will just work and there will be none of the issues mentioned below.

HiDPI and X11

GNOME recognizes on its own that it's a HiDPI screen and it will upscale everything by a factor of 2 because 1:1 scaling would be a bit too tiny on a 15" screen. It looks crisp and beautiful.

The scaling applies unfortunately globally and everything will appear slightly too big on the larger external Monitors (in my case 27"). It's not too bad but noticeable. You can use the GNOME Tweak Tool to change the scaling but you basically need to decide if you want everything to look great on the built-in 15" screen and OK on the external Monitors or way too tiny on the 15" and great on the external Monitors. Pick you battle.

If you don't have an external Monitor then it's possible to use the following "hack" to regain some of the pixels that get lost with GNOME's 2x scaling. This method should work (in theory) for multiple Monitors as well but so far I haven't been able to to apply it without turning everything into garbage.

#!/bin/sh
xrandr --output eDP1 --scale 1.25x1.25 --panning 4800x2700

For more information see Arch Linux's HiDPI page.

HiDPI and Wayland

GNOME or rather Wayland supports display independent scaling. And it works! GNOME will use 2x scaling on the smaller 15" screen and 1x scaling on the larger external screens. 

The only problem is that only 2 of the 3 Monitors will turn on. Either combination will work and it's possible to switch any Monitor on or off at runtime but only 2 can be on at a time. Go figure. 

If I had only one external monitor I'd probably go with Wayland.

Known issues

There appears to be problem with the default WiFi/Bluetooth chip. Its power output is too high and interferes with Thunderbolt 3 devices. It went as far as Dell recalling its own Thunderbolt 3 Docks.

There are numerous Threads about it on the Internet but here's a good summary. I've personally not encountered it (yet) but if I do I'll likely proceed with replacing the WiFi/Bluetooth chip. It's easy and cheap and a no-brainier from my point of view.

Warnings

It's possible to physically damage the built-in speakers with a software such as Audacity. I tried to play back and amplify some really low frequencies and blew the speakers. It was really dumb and I'm not sure who to blame or what should have prevented it but Dell was kind enough to fix it.

Recommendations

Before your proceed to installing Linux and wiping the SSD I'd recommend to do the following things first:

  1. Update the BIOS
  2. Update the Thunderbolt 3 Firmware
  3. Create a bootable Windows USB stick for future BIOS and TB3 firmware updates
    1. Download the Windows 10 ISO from Microsoft
    2. Download all the current drivers from Dell's website (in particular the WiFi driver)
    3. Use a tool such as Rufus to make a "Windows to Go" bootable USB stick
    4. Boot from the USB stick to make sure it works, and you know how to do it, and install the drivers (in particular the WiFi driver)
  4. Create a bootable GParted USB stick (or keep the Arch Linux's one around) after installation.

Note: It's possible to update the BIOS with FreeDOS. I've personally used the "dd" method with Christan Taube's FreeDOS images. It's easy and very fast but doesn't work for the Thunderbolt 3 Firmware updates.

In my opinion it's best to keep three USB sticks around. One for Windows, one for Linux and one for something like FreeDOS.