tHog

Escher

Lenovo Legion Y720

Gentoo Linux

Introduction

[2017-10-15] After a year-long consideration, I got a "gaming" laptop for my live graphics gigs. For the last heavier gig I used the Mini-ITX Godel controlled with a laptop, but it feels too cumbersome for the long run.

Frankly, this laptop is rather overkill. For instance, the GTX 750 Ti in Godel is plenty for my demos (for now!). In fact, for a long time I considered the cheaper and lighter Y520 model. I'd also rather not spend too much on something that might get damaged on the road. However, the Y720 has better connectivity for multiple displays, and stronger cooling, which involves more metal in the case.

I am also concerned about cooling with gigs running for hours in less ideal conditions, so I prefer having overkill in the cooling system, running GPU in the lowest power mode. This is also one reason why I stayed away from Thinkpads, which I would have enjoyed due to other reasons. I have experienced inadequate cooling in my X220i, and I surmise the "business" models aren't designed for heavy computing anyway, even if they have Nvidia GPUs.

UEFI and booting

The easiest way to get into BIOS settings is with the reset hole on the right, which they call the Novo button. It works as the power-up button directly.

The important settings to change are

After that, GRUB2 works fine as the bootloader. I kept the original EFI partition and mounted it as vfat in /boot, where the kernels also go. Then grub-mkconfig picks them up automatically.

CPU notes

The i5 7300HQ is advertised as a 2.5 GHz processor, but lscpu reports its maximum at 3.5. Indeed, it can get there at least with a single core; with all cores loaded, the maximum I get is 3.1 GHz.

I use P-States for throttling it in practice; apparently P-States uses Turbo modes too. A 70% P-State means 2.5 GHz which is cool and quiet enough for most uses. (In contrast, CPUs without P-states have a separate switch for Turbo Boost.)

CPU microcode update

Intel microcode updates on Linux have used initramfs for a while, and the method has worked so far on my other Intels; I actually use initrd=/lib/firmware/microcode.cpio in lilo.conf. However, here it results in an unbootable kernel, and another approach works instead: embedding the firmware in the kernel. This uses the raw file specific to the CPU model, and finding it is also explained. In this case it is /lib/firmware/intel-ucode/06-9e-09.

Power management

Custom fan control, as used in my two Thinkpads is not available to my knowledge. The automatic control works, but I would prefer some adjustment at the lower end, as it is too noisy at low loads. It could be that the system is inherently noisy, due to the large maximum cooling capacity, so even the lowest step is clearly audible.

The automatic fan control also depends on GPU temperature. Nvidia controls show 0% fan, presumably as the GPU plays no part in the system fan control.

Keyboard

I hate laptops with numeric keypads, not just because they offset the typing area towards the left, but because they are generally too crowded. This one is considerably better as the arrow T is clearly separated and has full-size keys. The actual numeric keypad above the arrows is slightly reduced, but it does not intrude and ruin the rest of the keys. In fact, this was one important factor when choosing between alternative "gaming" laptops.

The keyboard has a nice backlight, but alas, I have not found a way to control it in Linux. [2023-12-18] Found these two and tested the latter, but I haven't gotten it to work here.

Touchpad

As reported by others, the bottom part with buttons feels somewhat flimsy. To me, the main problem is that the buttons are embedded within the touchpad itself, so there is no clear line between the buttons and the touchpad area. Actions like dragging a window need extra care compared to properly separated models, like those found on Thinkpads.

[2018-09-04] Like most non-Thinkpads these days, this touchpad lacks a middle button for pasting in X. I recall emulating mouse buttons with keys in a Powerbook, but that was specific to Apple hardware. I now use xkbset + xmodmap for this:

xkbset m
# stop mousekeys expiring after a timeout
xkbset exp =m
# map keysym to other keysym
xmodmap -e "keysym Menu = Pointer_Button2"

GPU issues and solutions

The GPU switching system presented some initial challenges. There is no BIOS option for using Nvidia only. I followed the Arch Linux instructions, and this meant installing the Intel driver too, with VIDEO_CARDS="intel nvidia". Then the requisite bits in xorg.conf and .xinitrc work as intended.

As mentioned in the introduction, I prefer to keep the GPU in a low-power mode. I found a solution that involves xorg.conf options, so it is not as dynamic as one might wish. Changing the mode requires a restart of X, with explicit config for the new mode. (Default is full power; if you leave the option out, it uses the previous config until next reboot.)

[2017-10-23] I have also tested X with the Intel GPU, and it works after setting up the firmware blob. Unlike the CPU microcode update, this one is not dependent on the exact model.

Nicely enough, CUDA programs can run on the Nvidia while Intel handles the display. This should not be possible given my old experiences of Linux GPU drivers, but I guess the switching framework has changed things. A few downsides remain, though: most Nvidia GPU controls (e.g. clock adjustments) are only available under X, and the external displays won't work (see also following).

HDMI issue and workaround

An external monitor connected via HDMI presented a special problem: the display was seen in Xrandr, but it stayed blank. This happened with two very different displays, and others have reported it too. However, if the display is connected upon bootup, it works as intended. After that, it can be disconnected and reconnected without issues. Simply restarting X is not enough, it needs a full reboot.

This is particularly weird in the light of GPU switching; from what I have read, the external display connectors are often hardwired to the Nvidia. It is not a huge issue once known — I need to reboot this on the road anyway, as suspend to RAM won't work easily with the Nvidia binary driver.

[2018-01-29] Recently, the HDMI port has worked even when booting disconnected. Could be a temporary glitch or improvements in the Nvidia driver.

TODO: test Nouveau, as it might solve a number of these issues. For example, using Intel and Nvidia at the same time.

Sound

There is no HDMI audio :( My other machines with Nvidia cards present sound devices such as

Card 1, ID `NVidia', name `HDA NVidia'
but the only sound device I see here is the analogue HDA. Again, this is not a huge issue for me, as I have external USB devices for more involved gigs, and they end up in analog mixers anyway. Still, it is disappointing from a "nice to have" POV — with all this neat hardware, why did they have to skimp on sound?

And no, the fancy JBL speakers don't count as "premium audio". Granted, with the extra "sub"woofer and all, they are an order of magnitude better than the average laptop speakers, so they have some value for quick rehearsals and checks. But I'd rather have put that money elsewhere, and the heavy "gaming" demographic probably uses headsets anyway.

The volume and mute buttons work without any configuration. They are not tied to hardware directly, but instead are used by MPlayer and MPV as inputs. This is particularly bad with MPV that has it hardwired to softvol.

In fact, I just noticed the buttons work similarly on my Thinkpad too. I generally don't bother configuring these, as I use the same software on many different machines and I like to maintain the same keybindings irrespective of special keyboards. This reminds me of backlight control issues in the Thinkpads: they used to work without config (presumably via the Lenovo kernel modules), though I later had to set up the ACPI way. I guess the kernel drivers have once again been updated.

Display controls

The same controls work as in Willow. The range is considerably different so I adjusted the numbers quite a bit.

Networking

Ethernet works as expected with the r8169 driver. The connector works much better than I expected from the looks; it reminded me of PCMCIA cards where a fragile connector assembly must be opened fully before use. This did not feel like staying open. It simply bends slightly upon plugging the cable in, and feels much more robust.

For the WLAN, the kernel driver is ath10k, and the requisite firmware should be in the linux-firmware package. Works fine using WPA2-PSK in my tests, though not used extensively.

WD idle3 issue

As seen before, the WD hard drive has the idiotic 8-sec spindown by default. See old nanite page for more; I used idle3-tools to disable it, as regular spindown timer is enough.

Carrying case

The machine is too large for most 15.6'' cases I have seen. I found a Samsonite GuardIT Office Case 16'' at a local shop, and it turned out just the right thing. I wanted a classical clamshell model, but cheaper slip-in variants also exist under the same name.

Files

About the name

Parallels Godel as a math-art demo machine.


Risto A. Paju