Given Dell's work on Project Sputnik, it should come as no surprise that some of that work has been applied to the XPS 15/M3800. D. Jared Dominguez posted on the Dell TechCenter blogs on 14 November 2013 about Ubuntu and the M3800 (the workstation version of the XPS 15). Fedora 21 runs out of the box, from booting up from USB to booting up the system.
If you are trying to get the touchscreen working, note that Dominguez links in that article to a couple .deb files contributed by Canonical to get Ubuntu to recognize the touchscreen. These may not be needed if running kernel 3.12 or later.
Subsequently, on 27 November 2013, Dominguez posted more specifically about Linux support for the M3800's touchscreen and SD card reader, the conclusion of which being that people are actively working to integrate Linux support for XPS hardware at the kernel level. If your Linux system is not recognizing the SD card reader, ensure that you are running kernel 3.13 or later (which can be downloaded from the Ubuntu kernel site if running Ubuntu or a derivative).
Another relevant resource is a wiki about the M3800, machine almost identical to the XPS 15, just varying in the graphics card. This includes information such as SSD tuning and other interesting tweaks: KDE, touchpad, etc.
What works and what does not Edit
In a nutshell, this is what works and what does not.
What is working:
- Almost everything (wifi, webcam, touchpad)
- HiDPI works fine if you use a recent version of a DE. Otherwise you will need some tweaks (see HiDPI section below).
- Sleep and wake up work fine, as long as you use a stable OS (i.e. don't mix a too new version of Gnome with an older OS)
What is not working:
- The touch screen works as a mouse (you can click and that), it doesn't have the behaviour one would expect from a touch screen (drag to scroll, pinch to zoom).
- For some reason, battery life is lower than reported in Windows. Which is strange, as in my system most of the battery is consumed by the screen, even if the brightness is decreased.
- Optimus works, but it is not automatic. One has to choose which card to use, either per session (with the official drivers) or via the command line (with Bumblebee). Bumblebee is not very stable in my system when I use the Nvidia card: applications often hang.
- Hibernation (feel free to share your experiences)
- Works fine on XPS 15 9550 with Ubuntu GNOME 16.04.
What also works under Fedora 21 with GNOME:
- NFC ( The driver is present, but no software for that
- HighDPI works without any setting, however, for non-system software, you have to set it in Gnome-Tweak Tool
-Touch Screen and multi-touch works, Fedora has a page for that, for example drag to scroll, pinch to zoom, or you can twist the screen with three fingers and it opens up the overview etc. , basic multi-touch functions works for touchpad also, but not the fancy ones
- Under GNOME only, you get the FN keys working, including Fn+F9, to switch between displays
Booting from USB drives may not be possible if Secure Boot is enabled (at least with Ubuntu 13.10 and Mint 16), so it is suggested to disable Secure Boot before installing Linux. It can probably be enabled again after install [untested].
Update: I am using EFI Secured Boot. The enhancement is the fact, that you are not required any additional bootloader like grub, or rEFIt, etc. You pass the basic kernel command:
CONFIG_CMDLINE="root=/dev/sda4 init=/usr/lib/systemd/systemd snd-hda-intel.index=1,0"
The last snd-hda-intel command is to switch the PCH and HDMI audio devices at boot time, so first is PCH. This is due some issues with sound.
If you are dual-booting Linux and Windows 8.X, then you should expect what Microsoft calls a 'watermark' message to appear on your desktop (lower right corner) to nag you about the disabled Secure Boot. You can ignore it, but Microsoft has issued a patch to get rid of it.
At least one user (who installed Fedora + Gnome 3 on his XPS) confirmed that Ubuntu 13.10 Live USB boots straight into GUI without problems (after setting BIOS to legacy mode). However, setting BIOS to legacy mode may prevent the factory-installed Windows to boot, (as it is installed in UEFI mode), unless GRUB does some magic. Also, boot times with UEFI are usually better than with BIOS legacy mode .
UbuntuHandbook offers a generic tutorial for installing Ubuntu 13.10 from a USB stick, which can then be used as a Live USB for testing Ubuntu without installing it (or for troubleshooting a system whose OS has become unreliable). Mint 16 Cinnamon Live USB also boots fine, as does Ubuntu GNOME and others recent distributions.
However, never use Mint 16's partition tool for resizing the Windows partition, as it will destroy its contents. This may also be the case with the partitioning tools of the setup tools of other distributions. Instead, use Windows' own partitioning tool (which cannot shrink the partition beyond a point), or the gparted tool from a recent distribution [tested by adlerhn].
The touchpad works better in Linux than in Windows. No fancy gestures (other than the two-finger scrolling), but it is very precise. Clicking doesn't make the cursor move at all.
A series of properties can be enabled or disabled. Amongst them, some which work great are:
synclient VertTwoFingerScroll=1 HorizEdgeScroll=1 TapButton1=1
One suggestion is to add this to the Startup Applications as:
bash -c "synclient VertTwoFingerScroll=1 HorizEdgeScroll=1 TapButton1=1"
Adding it to /etc/rc.local won't work, as that is loaded before the X.Org server.
Alternatively, this configuration can also be set in /usr/share/X11/xorg.conf.d/50-synaptics.conf, as explained in the M3800 wiki.
[Palm detection does not seem to work at all using the synclient settings for it for this user on Fedora 20 KDE.]
Michael Larabel, in an article published at Phoronix on 01 October 2013, suggested enabling SNA when using Intel's xf86 driver, as it gives superior performance compared against UXA and GLAMOR. WebUpd8 published a guide for enabling Intel SNA acceleration in Ubuntu on 24 Oct 2012.
SNA is enabled by default in Ubuntu 13.04 and higher, what can be checked by running:
grep SNA /var/log/Xorg.0.log [ 6.295] (II) intel(0): SNA compiled: xserver-xorg-video-intel 2:2.99.907-0ubuntu1 (Maarten Lankhorst <email@example.com>) [ 8.308] (II) intel(0): SNA initialized with Haswell (gen7.5, gt2) backend
Automatic nVidia's Optimus switch is nonfunctional in Linux, as of December 2013. The nVidia proprietary driver is starting to get Optimus support as of version 319.12 (even though it's not completely there yet ). It still requires manually selecting per session which graphics card to use.
You may wish to use Bumblebee to disable the nVidia card when booting into Linux on battery; Bumblebee's aim is to achieve full Optimus functionality in Linux.
There is a nice little tutorial available at http://wiki.belmankraul.com/linux/mint16_bumblebee regarding setting up Ubuntu 13.10 and the Bumblebee drivers.
To address scaling and font readability issues, AskUbuntu has a web page titled How do I change fonts and adjust their size?
There is some tweaking required. The X server doesn't derive the physical dimensions of the screen properly so you need to edit it's config file to tell it that the screen is 345x194 milliliters. Note that adlerhn has been unable to modify this setting, as Desktop Environments tend to ignore it. Xorg still detects the DPI as 96x96. The current setting can be checked with:
xdpyinfo | grep -B2 resolution screen #0: dimensions: 3200x1800 pixels (846x476 millimeters) resolution: 96x96 dots per inch
Although some of those desktop shells don't work well, GNOME apps work just fine when you get things configured.
- KDE works well at this resolution, but one needs to spend a few minutes going through the settings and tweaking things so that your titlebars, icons, scroll bars and other controls are a reasonable size:
- Font scaling settings
- Scroll bar width
- Bottom panel height
- GNOME 3.8 has got improved HiDPI support, which has been further enhanced in 3.10 and 3.10.1. GNOME 3.10 is available for Ubuntu in a PPA , and included by default in the 14.04 alphas. Nevertheless, it is still necessary to tweak the font sizes:
- Font scaling settings
- The only outstanding issue is the scroll bars, which are very thin. It may be needed to modify the theme in order to adjust this.
- Cinnamon developers are working in improving the HiDPI support for Mint 17. This is already available using the nightly PPA. With that version, no further tweaks are needed. Otherwise, it is possible to get an acceptable environment with some font tweaking:
- Font scaling settings
- Bottom panel height
- Scroll bar width, like in GNOME 3, is only changeable modifying the theme.
- Apparently, no HiDPI support in Ubuntu's Unity. This has actually not been confirmed. It may be possible to get a decent experience changing the font settings, and scaling the Unity dash .
The only full featured web browser that currently works well at this resolution is Firefox. But you'll want to edit the "layout.css.devPixelsPerPx" setting in "about:config" to something like 1.75 to increase the size of your controls. The Default Full Zoom Level addon allows you to set the default zoom level for web sites (even though this is not really necessary).
Chrome's high DPI support hasn't made it to Linux yet.
The controls in the Youtube flash player still appear tiny. Using the HTML5 interface seems to work around this issue for Youtube, even though other flash-based sites may still have issues.
Optimize Power consumptionEdit
You can optimize the power consumption under Linux using the settings in this script.
I was able to get down to 10.2W (under Linux 3.13.7, F20), but then you'll need a dark place. The display seems to draw most of the power...
#!/bin/sh # VM writeback timeout echo '1500' > '/proc/sys/vm/dirty_writeback_centisecs' # Intel integrated graphics controller echo 'auto' > '/sys/bus/pci/devices/0000:00:02.0/power/control' # Audio controller echo '1' > '/sys/module/snd_hda_intel/parameters/power_save' echo 'auto' > '/sys/bus/pci/devices/0000:00:1b.0/power/control' echo 'auto' > '/sys/bus/pci/devices/0000:00:03.0/power/control' # DRAM Controller echo 'auto' > '/sys/bus/pci/devices/0000:00:00.0/power/control' # Thermal management controller echo 'auto' > '/sys/bus/pci/devices/0000:00:1f.6/power/control' # SMBus controller echo 'auto' > '/sys/bus/pci/devices/0000:00:1f.3/power/control' # MEI (Management engine interface) controller echo 'auto' > '/sys/bus/pci/devices/0000:00:16.0/power/control' # HM87 Express LPC Controller echo 'auto' > '/sys/bus/pci/devices/0000:00:1f.0/power/control' # PCI Express Controller und Ports echo 'auto' > '/sys/bus/pci/devices/0000:00:01.0/power/control' echo 'auto' > '/sys/bus/pci/devices/0000:00:1c.0/power/control' echo 'auto' > '/sys/bus/pci/devices/0000:00:1c.2/power/control' echo 'auto' > '/sys/bus/pci/devices/0000:00:1c.3/power/control' # NMI Watchdog echo '0' > '/proc/sys/kernel/nmi_watchdog'; # SATA Controller echo 'auto' > '/sys/bus/pci/devices/0000:00:1f.2/power/control' for i in /sys/class/scsi_host/*/link_power_management_policy; do echo 'min_power' > $i done # Touch Screen echo 'auto' > '/sys/bus/usb/devices/3-6/power/control' # Realtek Card reader (ID:5249) echo 'auto' > '/sys/bus/pci/devices/0000:07:00.0/power/control' # USB Controller echo 'auto' > '/sys/bus/pci/devices/0000:00:14.0/power/control' echo 'auto' > '/sys/bus/pci/devices/0000:00:1a.0/power/control' echo 'auto' > '/sys/bus/pci/devices/0000:00:1d.0/power/control' echo 'auto' > '/sys/bus/usb/devices/usb1/power/control' echo 'auto' > '/sys/bus/usb/devices/usb2/power/control' echo 'auto' > '/sys/bus/usb/devices/usb3/power/control' echo 'auto' > '/sys/bus/usb/devices/usb4/power/control' # Wireless Controller (Intel) echo 'auto' > '/sys/bus/pci/devices/0000:06:00.0/power/control' # Intel UNKNOWN controller (ID 8086:0C03) echo 'auto' > '/sys/bus/pci/devices/0000:00:04.0/power/control' # ID:0C03 # Intel USB Bluetooth controller (ID 8087:07DC) echo 'auto' > '/sys/bus/usb/devices/3-9/power/control' # Enable laptop mode (delay and bundle writes by 5 seconds) echo 5 > /proc/sys/vm/laptop_mode # Enable i915 (Intel IGD) frame buffer compression echo 1 >/sys/module/i915/parameters/i915_enable_fbc # DRM vblank off delay echo 1 >/sys/module/drm/parameters/vblankoffdelay # Disable NFC NFC_NO=`rfkill list | grep nfc0 | cut -d: -f 1` rfkill block $NFC_NO # Disable Bluetooth BT_NO=`rfkill list | grep hci0 | cut -d: -f 1` rfkill block $BT_NO # Lower initial brightness echo 10 >/sys/class/backlight/acpi_video0/brightness