Infosec Scribbles

March 1, 2018

Solving Ubuntu issues on a Dell XPS 15 9560

Being more happy than not with the experience I had at work with a Dell Precision 5520 running Ubuntu, I looked closer at Project Sputnik when time came to replace my beaten up Inspiron 17R. I decided to get myself an XPS 15 based on Intel’s 7th gen platform. Of course, given the opportunity to pick, I decided against a 4K UHD screen, against a touchscreen and picked a matte cover too instead of a glossy one. That solved my biggest woes right away.

In short, I’ve never had such a good experience with a power user laptop and the Project Sputnik team deserves all the fame, praises and customer money that they are getting. To all those engineers and hackers unhappy with Windows 10 and looking into Apple or Linux-based alternatives, I suggest that you look into Dell’s offering.

Below you will find workarounds for a few software issues that I had to resolve with it to get my perfect machine. As of March 2018, this applies to Ubuntu 16.04 LTS.

Boot Options

Out of the box, Ubuntu comes with the nouveau driver for nVidia cards. The nouveau driver is garbage that will make the LiveUSB freeze when it attempts to boot the kernel. To fix this, boot into GRUB and add the following to the kernel boot options: acpi_rev_override nouveau.modeset=0. You will need to repeat this for your first boot into the installed OS. After the first boot, make the change permanent by editing /etc/default/grub and adding it to GRUB_CMDLINE_LINUX and running sudo update-grub.

Other options that I find useful are net.ifnames=0 biosdevname=0 to make network devices use traditional naming schemes such as eth0 and wlan0 instead of the long-form ones. I also prefer to disable IPv6 on all my devices with ipv6.disable=1. I’ve only seen production IPv6 networks a handful of times and I don’t want the headache of dealing with IPv6 security issues if I am not using it.

Graphics Drivers

As I said, nouveau is garbage. Sorry devs, but as it stands this is a fact. Besides boot issues, it lacks support of power management features, is buggy and underperforming.

The downside of using nVidia drivers instead is that you will have to reboot every time you want to switch between an Intel and an nVidia GPU. If you are OK with this, enable the PPA and install the nVidia drivers:

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt install nvidia-384 nvidia-prime

Just in case, I also like to blacklist the nouveau driver:

echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf

Duplicate Touchpads

Out of the box, Ubuntu picks up two touchpads on this laptop. In my experience, this makes the touchpad overly sensitive to accidental touches and adding the following to /usr/share/X11/xorg.conf.d/51-synaptics-quirks.conf makes the experience much smoother:

Section "InputClass"
    Identifier "SynPS/2 Synaptics TouchPad"
    MatchProduct "SynPS/2 Synaptics TouchPad"
    MatchIsTouchpad "on"
    MatchDevicePath "/dev/input/event*" #9
    Option "Ignore" "on"
EndSection

This will tell X Org to disable the duplicate Synaptics device and use the Dell one. You will need to restart X in order for it to apply the change.

Wireless Performance

Some 9560s come with Killer 1535 wireless adapter famous for having multiple compatibility issues, including Windows users, and crashing routers (!!): 1, 2, 3, 4.

In my case, it was the overheating issue where the wireless card would stop working after a few minutes, causing the kernel to block all network operations and cascading into a lot of system responsiveness issues. There are two solutions to this:

  1. Get a replacement Intel 8265 card from Dell if your laptop is on warranty. The issues with Killer 1535 are so widespread that they have this in their runbooks and will offer a replacement immediately. If not, you can get it for £20 from Amazon.
  2. Install linux-firmware version 1.170 from upstream. The new driver contained within works much better.

TB16 Dock

I have not experienced hotplugging issues with the 9560 and the TB16 dock. On the 5520 it is a different story.

To get TB16 Ethernet to work reliably, the same workaround applies until the fix gets released for Xenial:

$ sudo ethtool -s eth0 speed 100 duplex full autoneg on
$ sudo ethtool --offload eth0 tx off
$ sudo ethtool --offload eth0 rx off

Bluetooth

Bluetooth issues on Ubuntu are not specific to this laptop model and I described my solution in a separate blog post. It is a bit involved and will probably get wiped out or made redundant with the next LTS release.

DisplayLink

For a short while, I needed to use a DisplayLink USB <-> VGA adapter. You can get it to work by installing the drivers from the website, manually enabling the evdi kernel module and selecting the Intel GPU in PRIME settings. It will work with the nVidia GPU too, but you will get a small artifact manifested as an invisible square box around the mouse cursor where frame buffer will not be updating. This is a bug with the nVidia driver that they don’t seem to be interested in fixing - it has been around for a year.

Due to how DisplayLink works on Linux, it sends the entire frame buffer to the USB graphics adapter instead of only the screen that is connected to it, as it does on Windows. This means that with two external screens you will already run into bandwidth issues. An easy solution to this is to use a solid color desktop background that compresses well and reduces bandwidth usage on the adapter.