Optimizing the Dell XPS 15 9550 for Ubuntu 16.04 / 16.10

This laptop is a combination of beauty and performance that many developers will appreciate. Therefore Windows is not alway the best choice and one might greatly benefit from a dual boot setting. This article describes how to setup efficiently Ubuntu 16.04 on the XPS 15 9550.

Installation

I followed the steps shown on this page and it seemed to work quite well. I suggest to use Rufus to create the Ubuntu bootable USB disk on Windows.
I just had to launch the Live CD first and then install from there (The direct install option was buggy somehow).
You get something quite convincing out of the box, but there is still some work to get everything work perfectly.

Freezes on Windows (dual boot)

After switching from Raid to AHCI - as suggested in this tutorial - you may encounter BSOD freezes - with the only hint being CRITICAL_PROCESS_DIED. It seems to be due to the SSD driver, installing the last Samsung 950 pro drivers solved the problem for me.

HiDpi

For 4K (HiDpi) screens, Gnome allows you to have everything scaled up (same as in windows 10). For this just go in System settings > Display and use the Scale for menu and bars slider to something like 2.25. This was good for me. Qt-based apps might not use this settings. (Example: Qt Creator / Tex Studio, ...)

For QT5 applications, ArchiWiki's HiDpi page rightfully suggests to create the file /etc/profile.d/qt-hidpi.sh, give it execution permission (sudo chmod +x /etc/profile.d/qt-hidpi.sh). You will need to restart Ubuntu to account for this change.

Multi-screen setup

I found it very painful to independently setup HiDpi settings for multiple screens. (For instance, one 1080p external monitor along with your 4k laptop screen). I did not find any solution using the Nvidia drivers (xrandr crashes), and the following setup - from here - works when switching over to Intel (using nvidia-settings).

xrandr --output eDP-1 --auto --output HDMI-1 --auto --panning 3840x2160+3840+0 --scale 2x2 --right-of eDP-1  

This will allow you to have your external monitor on the right of your 4k laptop. Make sure to increase the Scale in Ubuntu's Displays GUI as well.

Graphics

Nvidia drivers for Linux seemed pretty unstabled on the XPS until I tried version 375.xx which seems to work very well.

First, add the ppa containing up-to-date packages:

sudo add-apt-repository ppa:graphics-drivers/ppa  
sudo apt update  

Then you can install the drivers using

sudo apt-get install nvidia-375  

You can switch back and forth between different graphics drivers using the Additional drivers Gnome GUI.

Bluetooth

Out of the box, bluetooth can't find any device. Following this dark magic steps (from the ubuntuforum thread) fixed it for me, but I would recommend you to investigate this before blindly apply this fix.

  1. Download the firmware from an obscure dropbox https://www.dropbox.com/s/8goc4omhnzxij93/BCM-0a5c-6410.hcd?dl=0
  2. sudo cp BCM-0a5c-6410.hcd /lib/firmware/brcm/
  3. Reboot
Fixing Palm detection (tested on Ubuntu 16.04)

Something super annoying that happens when typing is that the palm of your hand accidently taps the touchpad. This has the undesirable effect of jumping the cursor to wherever the mouse is, selecting random chunks of texts and messing up with your input. It took me a while to find a proper solution, this seems to be working - from here.

Add to the file /etc/modprobe.d/blacklist.conf the following line:

blacklist i2c_designware-platform  

Reboot your linux system.

Energy comsumption

The battery lasts longer on Windows than Linux, so there is a lot of room for improvement on this aspect. It may be due to Skylake processors power management which still needs some tuning on Linux. The first thing to do to save battery is to use the Intel GPU (for this install nvidia-prime, then the program Nvidia Settings will allow you to switch). I run some battery tests using powertop and the best I can get with Ubuntu (With the 4K model) is 10.5W when idle with screen brightness on 20%, 12W with Wifi/Firefox on. About twice as much when using Nvidia GPU. I tested Linux kernel 4.4.2 and found no difference with 4.4.0 present in Xenial by default. I'll keep investigating this as it appears Windows manages to only use 5W when idle.

(Update May 2016) Testing Kernel 4.6

Linux Kernel 4.6 got released seemingly with improvements regarding Skylake architectures. Let's test it !
It is preferable to switch from Nvidia drivers to the free driver before install the new kernel (Got a bunch of errors before I switched), you can do that in the Ubuntu Additional drivers utility program. Unfortunately, energy consumption did not improve, however, I feel startup and shutdown times improved and dual screen setup is much more stable! (No more freezes).
Also, a very annoying bug was making any chromium-based IDE (Atom, Visual Studio Code) very laggy using Intel graphics, this seems to be fixed!

(Update Feb 2017) Ubuntu 16.10 Yakety Yak

Last Ubuntu update installs Kernel 4.8 which can only be good for your Skylake CPU. Did not have time for a quantitative analysis yet, but the system is stable.

Sources