Ubuntu 13.10 on a Dell XPS 13
I recently acquired a Dell XPS 13 and installed Ubuntu 13.10 on it. This is a log of my experiences. I plan to keep adding to this as things develop.
At the time of this writing (February 2014), the Dell XPS 13 is an Intel Haswell-powered ultrabook sold with either Windows 8.1 or Ubuntu 12.04 LTS. The Ubuntu version is also called Project Sputnik — Dell made the laptop fully compatible with Ubuntu. The Ubuntu version is a little cheaper (about $1,550 vs $1,616; no Microsoft tax), but taking the duration of support into account (I wanted 3 years at least), it was cheaper to get the Windows 8.1 version (the $1,550 price only included 1 year).
In general, I liked the look, feel, screen resolution, and build quality of the laptop, though there are several issues. The annoyances: seems a bit expensive for what I’m getting; the lid can’t be lifted without holding down the base with the other hand; the screen is glossy (apparently this can’t be avoided if it’s a touchscreen); no discrete graphics (this is probably a benefit from a compatibility POV, but I’ve always had discrete graphics); the bottom gets quite warm at the back with extended use so gets uncomfortable on the lap; the laptop’s size and contours feel uncomfortable when using on the lap; no dedicated PgUp/PgDn/End/Home keys (this really bothers me); the position of the trackpad and left Ctrl key makes it hard to press Ctrl+V; the font on the keyboard looks a bit weird and unprofessional to me; there’s a panel on the bottom that has “Windows 8” etched into it; memory is not upgradeable at all (soldered onto motherboard); 256GB SSD was expensive but feels very small; the power cord is in an awkward position; power cord doesn’t have a “charging” indicator led, just a “plugged in” indicator; and battery life of about 5 to 5.5 hours feels very short compared to the MacBook Air’s 12 hours. Having said that, other ultrabooks with comparable features are equally (or more) expensive.
I’m upgrading from an a Lenovo ThinkPad T61 running Linux Mint 14. I putzed around with live CDs for a few different Linuxes: Ubuntu 13.10, 12.04, Mint 16, and OpenSUSE 13.1. I considered Kubuntu 13.10 as well. In the end I decided to try Ubuntu 13.10 because the XPS 13 has a touchscreen.
Ubuntu 13.10 Installation
Installation of the OS itself had a few complications. I initially couldn’t figure out how to get the laptop to boot from USB. The laptop has a “secure” boot feature and uses UEFI. Turning off the secure boot and switching from UEFI to a legacy booting sequence, ignoring the dire warnings displayed when changing these settings, worked for me. (I pressed F2 right after turning on the ultrabook, when the Dell logo appeared to be taken to BIOS settings. Then navigated to Boot and made the changes.) I wrote the Ubuntu 13.10 live ISO to an external USB hard drive using the instructions and script here: http://ubuntuforums.org/showthread.php?t=1958073. The laptop booted the Ubuntu live USB fine from either USB port (despite what some reports say about the left side USB).
The first thing I did before installation of Ubuntu was to re-partition the disk. The XPS 13 came with a 256GB SSD hard drive that was partitioned into a number of tiny partitions, a huge one that had Win 8.1 on it, a recovery partition that was about 8GB and mostly full of data, and another 8GB partition that Win 8.1 presumably uses to hibernate. I used GParted (comes on the live ISO) to resize the Win 8.1 partition to about 50GB, added a root partition (ext4), a data partition (ntfs), deleted the recovery partition (since it can only be used to restore to factory settings), and created a single 16GB swap partition (the XPS 13 has 8GB RAM; double that).
After partitioning, I ran the installer. It asked for a few basic items of information and ran with no problems (except it took a long time to download various language packs — not sure I needed them). But after the installation was complete and I rebooted, some weirdness ensued. First, the ultrabook wouldn’t reboot — it got stuck in an unresponsive state with the screen blank but not turned off. I shut it down by holding down the power button. When I rebooted, a GRUB bootloader showed up (I think this was supposed to boot into Ubuntu immediately but somehow got installed with a wait time). The first couple of times I booted in and shut down, the unresponsive state and other odd problems (no mouse pointer, unable to boot, etc.) recurred. Rather than try to figure out what the problem was I reinstalled Ubuntu, and things seemed to work fine after that.
The Hardware: Initial Impressions and Tweaks
Things that worked
Most of the basic hardware worked right out of the box (as expected).
- Keyboard backlight
- Volume buttons
- Screen brightness buttons
- Basic trackpad functionality (moving a mouse pointer, left and right clicking)
Things that didn’t work
- The touchscreen and more advanced trackpad functionality were much more tricky. The touchscreen didn’t appear to respond to touches initially, but then began working without any intervention, and worked intermittently after that, turning on or off after suspending. Then, installing the recommended software updates broke something and the touchscreen stopped responding altogether. This bug report (see steps 1, 2, 3 at bottom of page) supposedly has a solution to problems with both touchscreen and trackpad. However, the erratic behaviour of the touchscreen persists on my setup after following those steps — it still responds in fits and starts, even when I don’t suspend. However, when it does work, it works pretty smoothly. Various troubleshooting discussions that didn’t fix the problem but were informative: 1, 2, 3.
- The trackpad worked, but initially without side-scroll or 2-finger scroll. I fixed the problem by following the simple instructions in this bug report (see steps 1, 2, 3 at bottom of page), which seems to have fixed all problems.
- WiFi networking is problematic. After resuming from suspend, it either takes too long to connect or doesn’t work at all. Using the command: “sudo nmcli nm sleep false” in a terminal seemed to help somewhat; this page lists a more permanent solution. However, WiFi still keeps cutting out and I frequently have to restart networking (disable and enable networking using the network applet) to get a connection.
- Many of the new (late 2013/early 2014) Dell XPS 13 ultrabooks have been widely reported to suffer from an “electric whine” sound that many people find aggravating. Mine has this problem too. The ultrabook makes a high-pitched sound that varies with the keyboard backlight, which is extremely distracting especially in quiet rooms. Turning off the keyboard backlight eliminates the noise. This kind of problem really shouldn’t be present in such an expensive machine.
Things that work
Here are some notable software features that work well.
- Font rendering works beautifully — much better than the font scaling functionality on Win 8.1, even on the same apps. For example, fonts in Google Chrome look crisp and clean even at very high zoom levels in Ubuntu, while in Windows 8.1 they pixelate. (It’s not a Chrome issue: they also pixelate in Internet Explorer.)
- User switching appears to work really well. This is something that always seemed to be broken in previous versions of linux — switching back and forth between users would cause alarming screen black-outs and flickers and eventually crash X. Here it appears to work smoothly — so far.
Things that don’t work so well
- There is a considerable amount of unstable behavior.
- Initially, apps frequently became unresponsive and needed to be forced to quit. This happened much more frequently than normal. Two months later, this behavior seems to have resolved itself and no longer happens. I’m not sure whether this was due to the few system updates I installed.
- Often, I get a popup that says “System program problem detected.” The popup offers to send a problem report to Ubuntu, which I’m glad to do if it helps improve Linux, but there’s no option to show me any information on what the problem was. This is due to old crash reports in /var/crash/ not being cleared. A quick fix is to clear that directory (“sudo rm /var/crash/*”), but the real problem is a system that provides no information to the user about the crash.
- Wifi is decidedly quirky, even with the fix referred to above. It occasionally drops the connection, and then fails to detect my wifi network (but detects my neighbours’ networks) until I disable and re-enable wifi. Update: this behavior got pretty bad, to the point where I had to reset the network almost every minute. However, it disappeared after I changed my router back to an older one. I haven’t diagnosed the problem. It could be something wrong with the router, or perhaps the driver doesn’t properly handle the latest protocols. Other devices (iPads, other laptops) occasionally had trouble with the newer router too, but not nearly as bad.
- The touchscreen is treated as mouse input. This means that certain tablet-like behaviours are not enabled. For example, swiping a page in the web browser selects the text, and does not scroll the page, since that’s what would happen if you dragged the mouse across the page. Still, a lot of things do work.
- Unity, Ubuntu’s window manager, is interesting but also has some major oversights.
- One of the big ones is that there is no way to start multiple instances of a given program by clicking the icon! Some programs provide an option to open a second window if you right-click the icon, but if a program doesn’t, you’re out of luck — you have to open a terminal and start it from the command line.
- There’s also no easy way to ungroup multiple instances of an application when using Alt+Tab. That is, Alt+Tab switches between different types of application only — if you have 3 terminals open, you can’t easily use Alt+Tab to access all three of them. Instead, you use Alt+Tab to select the application and then use Alt+` (key above Tab) to switch between instances of the same app. Maybe this will become natural with some use, but right now it’s pretty frustrating that Unity doesn’t provide a way to ungroup the windows at all. Some solutions are available here but they’re pretty awkward.
- A major problem with this laptop is that many applications aren’t designed to work in this resolution. The default font size selections are too small. To globally adjust font size settings, I installed the “Unity Tweak Tool” from the Ubuntu Software Center, and increased the Window Title Font and Text Scaling Factor. This fixes some but not all problems — it varies from app to app. Google chrome, for example, still has very tiny text on its tabs. Some apps also have a “zoom” setting which is useful.
- The battery doesn’t last as long as on some other laptops/operating systems, but it’s not too bad. I get about 5.5 hours on a charge. When in a suspended state, it seems to consume about 20% battery every 12 hours.
- Ubuntu uses the LightDM display manager to manage logins among other things. I set the LightDM display manager not to display usernames for users on the system, and to require users to type in their usernames, using the instructions here. There’s also a feature that lets you hide specific users but as of this writing it doesn’t work due to a bug in Ubuntu.
- One of the features I was hoping to see in Ubuntu by now is the ability to stream system audio output to a DLNA receiver over WiFi. This is supposed to be possible using some combination of the packages rygel, pavucontrol, paprefs, and gupnp-tools. Several sites provide instructions or discussions: 1, 2, 3, 4, 5. The instructions at this site work, after a fashion. (I use FLAC instead of WAV encoding for network efficiency.) The result is flaky, though. There is considerable lag (about 3-4 seconds), and I have to ask the DLNA receiver to restart playback after any pause in audio output (eg., if I’m playing something on YouTube and pause it for a moment, I need to restart playback on my DLNA receiver to begin hearing it again after un-pausing). Having gotten accustomed to Chromecast, Roku, and Apple TV, this feels very broken. However, I’m glad this is at least available as an option.
- The above problem is now partly resolved thanks to Google’s Chromecast, which is proving to be a breakthrough device for linux. I can now stream local music to Chromecast using the PLEX application (which is available in the Ubuntu repositories). PLEX provides a UI through Google’s Chrome browser that allows you to select local music specify that it should be streamed to Chromecast, and stream. It still doesn’t provide a way to stream system audio.
- I usually have a “data” separate partition that holds my data (pictures, documents, work). If I need to reinstall the OS, I can do so without having to restore the entire data partition. I like all users on the system to be able to modify anything on the data partition. If one user creates a file, I want other users to be able to read and write to that file. Now, this was automatic in the past because I used an NTFS data partition. This time around, I switched to Ext4, which makes it surprisingly difficult. However, I could do it using the instructions here, with some modifications:
$ sudo addgroup datapart # Create new group called "datapart" $ sudo adduser USERNAME1 datapart # Add user USERNAME1 to group datapart $ sudo adduser USERNAME2 datapart # Add user USERNAME2 to group datapart. Repeat as needed $ sudo chgrp -R datapart /data_partition # Change group of partition (recursively) $ sudo chmod g+s /data_partition # Set setuid bit for group $ sudo mount -o remount,acl /data_partition # Remount with ACLs enabled; alternatively add ",acl" to /etc/fstab permissions for a permanent solution $ sudo setfacl -R -d -m g::rwx /data_partition # Set access control: full access to group
- I experienced some occasional weird trackpad behaviour. After resuming from suspend, the trackpad acted as if I was using 2 fingers when I was actually using 1. Ie., it would scroll instead of move the mouse pointer. I fixed it using the instructions here:
$ sudo modprobe -r psmouse # Unload trackpad driver $ sudo modprobe psmouse # Restart trackpad driver
- When using headphones, I hear a loud background hiss, like white noise, underlying any music/sounds I’m playing. It makes the headphone jack pretty un-usable. I haven’t found a fix for this yet.
- Pairing with a bluetooth headset is flaky. Sometimes it works as expected, though I still have to go into audio controls after pairing and manually specify that the sound output should be through the headset (it seems natural to have this happen automatically as soon as pairing is complete). At other times, pairing seems to occur but the headset is not shown as an output option. When this happens, following instructions here, the command “pulseaudio -k” seems to make that output option appear again.
- Ubuntu has a feature called the HUD, which is basically like a text-based search within the menus of the current application. It looks useful, but uses the Alt key as its shortcut, which interferes with the Alt key bindings in various other applications. I disabled it using instructions here.
- The lock-screen functionality is poorly designed in Ubuntu 13.10. When the lid is closed and opened, the screen locks after the lid is opened. Before it locks, you see what was on the screen before the lid was closed for about half a second. And then it locks! This defeats the purpose of a lock-screen mechanism.
- Google added Chromecast functionality to the linux version of Chrome sometime in 2014. So, if you have a linux laptop and are trying to decide which media device to use (Chromecast, Apple TV, Roku, Amazon Fire TV, …), the Chromecast is a good option.
- Wine runs pretty well under this version of Ubuntu, but I had problems with audio, especially when playing games. This link describes the problem exactly. The solution in the second answer there worked for me. The solution is to run programs using:
- I upgraded to 14.04 a while ago. I haven’t blogged it and don’t think I will. However, this is a fix for one problem that was bugging me for quite a while. After the upgrade, wakeup from suspend completely stopped working. When attempting to wakeup from suspend, I would be greeted with a blank screen. The keyboard lit up, which seemed to indicate that the OS was running but the screen was just turned off. The solution that worked for me (found here) was to add the following line:
to the file “/etc/environment”. This just seemed to fix the suspend issue completely.
$ PULSE_LATENCY_MSEC=60 wine program.exe
Several other solutions were available on the net, including ones that asked you to edit PulseAudio configuration files in /etc/pulse or ~/.pulse/, but those didn’t work for me.
- One of the biggest problems plaguing linux is the loss of features over time. Linux is powerful because of the tweakability and the number of features that numerous people have contributed. Once a feature is available, I’m sure it takes a considerable amount of work to make sure it continues to function going forward. Sometimes a feature is viewed as not being in the best interests of a particular distribution. Because of such reasons, useful features tend to get dropped in future versions of linux. An example is the split-screen F3 functionality in Nautilus. This is a critically important feature that Ubuntu developers removed. I feel a distribution like Ubuntu cannot be allowed to be the steward of the featuresets to retain, because their interests are not the broadest possible. There needs to be a better process to determine which features are retained in important software. (Individual distros can tweak/remove features, of course.)