Debian Linux on the Lenovo Yoga 3 Pro

Getting a new laptop means taking on new Linux configuration challenges. Here is a collection of the issues I’ve had and workarounds I’ve found for my new Lenovo Yoga 3 Pro.

As mentioned previously, here’s the Linux companion to my Lenovo Yoga 3 Pro review. The configuration tested is Debian GNU/Linux 8 “Jessie” with a 3.16 Kernel running the GNOME 3.14 desktop environment. I’m dual-booting UEFI with Windows.

Hardware and drivers

To my surprise, the touchscreen worked right out-of-the-box with a fresh install of Debian. After some use it randomly seems to decide it has had enough and stops responding. I haven’t been motivated to investigate this as the work I do in Linux is usually much more keyboard-centric than the playtime I spend in Windows.

Automatic screen rotation and conversion from laptop to tent and tablet modes aren’t supported. There are two different Kernel modules available that will add this functionality. However, they aren’t in the Kernel nor in the Debian repositories. Installing them will lead to breakage and added maintenance work during updates. To allow me to use it in tablet and tent modes, I settled for creating a manual screen rotation button instead.

The hardware button for screen rotation locking registers as a Super + O key event. As neither the button nor its shortcut does anything by default, we can safely purpose it as a screen rotation button. I made a small script for rotating the screen in 90° increments that I trigger when pressing the rotation lock button.

Download the script, save it somewhere safe on your system and copy the path to the script, make the script executable, open GNOME Settings: Keyboard: Shortcuts: Custom and click Add, paste the script path in the Command field, click on the Empty keyboard shortcut column, and then finally press the location locking key to assign it. You can now flip the screen around to whatever orientation you need by clicking it.

Other than the rotation locking button and paper reading mode buttons, all hardware keys and media keys worked out-of-the-box. Not that there are all that many considering that there’s no row of function keys on this model. You can recreate the paper reading button’s functionality using Redshift, a bash script to toggle between “redshift -o 3700K” and “redshift -x”, and the GNOME keyboard shortcut manager as described above.

The Broadcom Wi-Fi module (BCM43b1 hybrid/BCM4352) and the graphic card needs proprietary drivers. Full instructions on how to set up the Wi-Fi drivers are available on the Debian wiki. This is the first Linux laptop that I’ve owned where I haven’t had any issues with the Wi-Fi. The graphic card took more work.

You must either live with the open Mesa driver (no Steam games, slow video playback, and poor battery life) or install upstream drivers from the experimental repository. The Debian “Jessie” repository includes the Intel drivers, but at the time of writing these are too old to work with the Intel HD Graphics 5300.

The Debian “experimental” repository has a much newer version, and one that works with the newer graphics card! Here is how to install the experimental graphics drivers on Debian Jessie: (PS: “experimental” is synonymous for “back-up first!”)

  1. Paste the following into the file /etc/apt/sources.list.d/experimental.list:
deb http://httpredir.debian.org/debian/ experimental main contrib non-free
deb-src http://httpredir.debian.org/debian/ experimental main contrib non-free
  1. Paste the following into the file /etc/apt/preferences.d/pinning:
Package: *
Pin: release a=testing
Pin-Priority: 900
Package: *
Pin: release a=experimental
Pin-Priority: 800
  1. apt-get update
  2. apt-get install -t experimental xserver-xorg-video-intel
  3. reboot

Note that this also upgrades various pieces of X. It’s labeled experimental, so don’t say nobody warned you. Once your computer has rebooted, you can test that the correct driver is loaded by running “glxinfo | grep "OpenGL vendor string"”. The test command should return “Intel Open Source Technology Center”. (Mind the outer quoting here.)

On a more positive note, the touchpad works better in Linux than in Windows. See my full review for details about the Windows troubles. As a Linux user, you will not have to deal with those problems, however.

The keyboard backlight stays on when the screen is off. This drains battery a bit faster than it should but isn’t a big problem. I haven’t found a workaround for this issue yet.

Lastly, I found that GNOME offers very few localized touch keyboards. I created one for Norwegian and some other Scandinavian languages and pushed it all upstream. You can find a copy of the Norwegian touch layout here.

Very high resolution

This is my first experience with a high-resolution display (HiDPI) on Linux. To my surprise, there were few issues and they were mostly confined to the console and not the desktop environment. I kind of expected this situation would be reversed.

The grub2 boot loader menus will by default be running at the maximum possible resolution. On a high-resolution screen like this that leads to unbearably slow painting of the menus and it leaves the text unreadably small. You can change grub’s resolution in /etc/default/grub to something like GRUB_GFXMODE=1280x1024 and it will work fine. Run update-grub2 and reboot to make the changes take effect.

Similarly, the default console fonts needs some size tweaking. Edit /etc/default/console-setup and change to FONTFACE="Terminus" and FONTSIZE="16x32". Changes apply when you open new terminals or reboot again.

The GNOME desktop is very well suited to run in high-resolution mode. There was no manual configuration required for version 3.14. It all worked out of the box. Even GNOME Web (formerly Epiphany) looked decent. The Opera browser is clearly the browser that works best on high-resolution setups.

I’m not just saying that because they’re my employer, but it’s seriously the best option. No configuration is required, it’s fully supported for the entire user interface, and memory footprint is smaller than Firefox and GNOME Web is when running in HiDPI. The other browsers require some more work to catch up.

Google Chrome doesn’t handle HiDPI under Linux at all. Moving on to Firefox, it can be made to mostly support it. It does require one configuration tweak in about:config by setting layout.css.devPixelsPerPx to 2. Some user interface elements like scrollbars and checkboxes will not scale up even with this setting enabled. As of Firefox 38 — the next major release due in mid-May — this should start configuring itself automatically.

The one software I miss HiDPI support in is the Steam game platform. The games I play through it that either run locally or are streamed over the local network will change the screen resolution on the fly. So, playing the games isn’t the problem. It’s just an issue when you try to buy something or try to start a game.

There’s some user-initiated activity on the Steam for Linux bugtracker but no comment from Value as of yet. With Valve’s Linux-powered Steam Boxes due to ship this year in September, they might get around to fixing this soon. I’m sure they’re following the growing popularity of HiDPI display resolutions in their stats closely.

I like the Lenovo Yoga 3 Pro and I like it as a Linux laptop. There’s “some assembly required”, but that’s the case for most all Linux laptops. At least when you get the very latest models. The issues I’ve encountered sound like things that will work themselves out in time. A year from now, many of the issues I’ve encountered will probably fit in the “just works” category.