Linux on the Dell XPS 15 (9530)

05 January 2015

Midway through December of 2014 Windbringer suffered a catastrophic hardware failure following several months of what I've come to term the Dell Death Spiral (nontrivial CPU overheating even while in single user mode, flaky wireless, USB3 ports fail, USB2 ports fail, complete system collapse). Consequently I was in a bit of a scramble to get new hardware, and after researching my options (as much as I love my Inspiron at work they don't let you finance purchases) I spec'd out a brand new Dell XPS 15.

Behind the cut I'll list Windbringer's new hardware specs and everything I did to get up and running. Distribution: Arch Linux, installed from the 2014.07.03-dual ISO image.

Kernel: 3.17.6-1-ARCH #1 SMP PREEMPT Sun Dec 7 23:43:32 UTC 2014 x86_64 GNU/Linux

Hardware:

  • CPU: Intel Core i7-4712HQ CPU @ 2.30GHz x8
  • RAM: 16 GB Dual Channel DDR3L 1600MHz (PC3L, 12800S, 204 pin) (8GBx2)
    • This model can support at most 16 gigabytes of RAM only.  Don't bother trying to go over this, the laptop won't even boot.
  • Chipset: Intel Xeon E3-1200 v3/4th Gen Core Processor DRAM Controller (rev 06)
  • Video: Optimus
    • Intel 4th Gen Core Processor Integrated Graphics Controller (rev 06)
    • Nvidia GK107M [GeForce GT 750M] (rev ff) (I'm using the closed-source official drivers from Nvidia, installed from the Arch Linux official repository)
  • Audio:
    • Intel Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller (rev 06) (primary)
    • Intel 8 Series/C220 Series Chipset High Definition Audio Controller (rev 05) (HDMI)
  • SATA: Intel 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] (rev 05)
  • Ethernet: None.
  • Wireless: Intel Wireless 7260 (rev 6b)
  • Webcam: Realtek Semiconductor Corporation (Device ID 0bda:573c) using native uvcvideo kernel driver
  • SD card reader: Realtek Semiconductor Corporation RTS5249 PCI Express Card Reader (rev 01)
  • Bluetooth: Intel ID 8087:07dc (It Just Worked(tm), I turn it off to extend battery life because I use it so rarely)
  • Touchpad: Synaptics SynPS/2 Touchpad (It Just Worked(tm), including gesture support)
  • Touchscreen: Synaptics Large Touch Screen (Device 06cb:0ac3) (I installed touchegg from the AUR and It Just Worked(tm), including multitouch and gestures)
  • NFC: Intel ID 8087:07dc (It Just Worked(tm), I turn it off to extend battery life because I use it so rarely)
  • Power cell: Fully internal 61 Wh LiPoly

Drives:

  • /dev/sda: Toshiba MQ02ABF1 1 TB laptop SATA drive
    • 2.5" form factor.
    • This model can only accept  drives 9mm thick or less.
  • /dev/sdb: LiteOnIt LMS-32S 32 GB solid state drive
  • Optical: None

System configuration tweaks I made:

  • Prior to installation, I accessed the system UEFI firmware and kicked it into BIOS compatibility mode so I could get up and running as fast as possible.
  • I made sure that the SATA drive system was in AHCI mode for optimal efficiency.
  • I configured the function keys for multimedia mode by default (volume control, audio playback control, screen brightness) rather than program mode (sending F-? events to applications)
  • The firmware is configured to boot from the 32 GB SSD first, then try to boot the 1 TB conventional drive. When installing Linux I put the /boot directory on this device and everything else on the 1 TB conventional drive.

No real gotchas this time. I tried very hard to find a laptop that didn't have Optimus built in but failed in the attempt. So I bit the bullet again and followed the instructions for setting up Bumblebee in the Arch Linux Wiki. I didn't fool around with it this time, I just got the job done and much to my surprise It Just Worked(tm). Same with the touchscreen (which I'm having way too much fun with).

I had to use gdisk to partition the drives instead of the traditional fdisk utility because storage media has pushed the old DOS style partition table to its functional limits and the drives were already set up with the new-style GUID partition tables. gdisk is included in the Arch Linux installation toolkit and I used the above tutorial to set everything up. Time to do this successfully was about ten minutes because I had to look up how to do it and get used to a new piece of software. I suppose that it you really want to you could keep using the MS-DOS style partition tables by completely flattening the drives and starting over, but I didn't bother.

By default, the ALSA drivers treat the HDMI port as the default audio output and not the system's built-in speakers or headphone jack. I had to fiddle with the driver's arguments a little bit but got it working the way I wanted. To save everybody some trouble I checked the file into one of my Github repositories so you don't have to mess with it. Just drop this text into a file called /etc/modprobe.d/alsa-base.conf (create it if it doesn't exist already) and reboot. Then unmute your audio per usual.

Incidentally, if you want to see what I did to configure Windbringer the way I like you can poke around in this repository and install any or all of the files you need: https://github.com/virtadpt/arch-boxen/tree/master/windbringer

Rather than playing with setting up Linux Laptop Tools or anything like that I installed two packages out of the Arch repositories to do that job for me, xfce4-power-manager to handle things when I'm logged in and powertop to analyze Windbringer's hardware and drivers and figure out the best set of options automatically to get the most out of the (Apple-style built in and unremovable without major surgery) power cell. Powertop can be run at boot-time to automatically set power usage options as documented on this wiki page. I'm very pleased with them.

I'll admit that I was somewhat surprised that this laptop has a Near-Field Communication device under the touchpad. The functionality appears built into the Bluetooth chipset (which I normally disable because I don't use it much (nor do I particularly trust Bluetooth's security (or lack thereof, to be honest))). There is a package in the AUR called neard which implements an API for interacting with NFC devices but I don't know anything about it. I'm toying with the idea of getting an NFC enabled ring, like this one that will automatically unlock my screen when my hands are on the keyboard, but I haven't decided yet.

Postscript: If you're interested in getting a custom laptop sleeve for this make and model for a little extra protection, the 15 inch laptop sleeves on Zazzle fit quite well and seem fairly sturdy.


This work by The Doctor [412/724/301/703/415][ZS] is published under a Creative Commons By Attribution / Noncommercial / Share Alike v3.0 License.