Infosec Scribbles

March 1, 2018, updated on July 28, 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

Besides boot issues, nouveau lacks support of power management features, is buggy and underperforming. Some RMS-fanatics try to blame it on nVidia for enforcing crypto signatures on their driver stack and not cooperating with the FOSS community on this. I think we are lucky to have any support from nVidia at all, given how small the consumer GPU market is on Linux.

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-driver-390

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

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

Keep in mind, using the nVidia card makes your laptop as hot as the surface of the sun and the fans will be running really loud most of the time.

Your alternative is to ignore the discrete GPU and only use the Intel one. It is a bit slow and requires some black magic to improve that, but you laptop will remain cold and will last three times as long on a fully charged battery.

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, also affecting Windows users, and crashing routers (!!).

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. On 18.04 LTS the second option is included out of the box.

  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.

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, but reduntant in 18.04 LTS as Bluetooth works out of the box on it.

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 over 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.

whoami

I'm Georgi (Russian: Георгий). Although I do various software security things for work, I particularly enjoy reverse engineering and breaking native code on Android and embedded systems. Check out more about me.