Lenovo ThinkPad X1 Yoga: impressions, bugs, workarounds, and thoughts about the future

My new laptop arrived last week and I’ve been using it since then! Here are my impressions so far of the Lenovo ThinkPad X1 Yoga (gen 4), and how it compares to my old laptop, a 2016 HP Spectre x360:

Hardware side

Case and ports

Top-notch quality. The laptop feels lightweight given its size, and it is very rigid. I had worried that the dark aluminum case would show fingerprints, but it’s not a problem. Port selection is generous: 2 USB-C+Thunderbolt+charging ports, 2 USB-A ports, an HDMI port, and a combo audio jack. Perfectly sufficient for my purposes, and better than the laptop it replaced! I do wish the USB-C ports were more snug, though. USB-C cables tend to wiggle around when plugged in. Also it would be nice if the lid could be opened with one hand, but that’s a very minor nitpick. Overall it is solidly better than my old laptop.

Screen

The Thinkpad X1 Yoga’s 4K screen is unbelievable. Color reproduction is excellent, there is no significant ghosting, and brightness goes high enough to use it outdoors without limitation. I turn the brightness down to 50% when using it indoors. It’s by far the best screen I’ve ever had the pleasure of using, and a huge upgrade over my old laptop!

Keyboard

The keyboard feel is perfect; typing on it is a dream! And its black keys contrast perfectly with the white backlighting to produce a good low-light typing experience too. However the layout of the keys presents a few annoyances that I’m having to get used to:

  • Left Fn and Ctrl keys are reversed compared to every other PC laptop keyboard. This can be changed in the BIOS, but then the labels don’t match the functionality, which is somehow even more confusing.
  • The PrintScreen key is located between the right Alt and Ctrl keys, and I find myself constantly pressing it when I mean to press the right Alt key, especially to hit Alt+Left to go back in Dolphin or Firefox. Seems like a weird place to put it.
  • The Home and End Keys are located up at the top of the keyboard, away from the arrow keys. I find myself wishing they were in a column at the right side of the keyboard as on my old laptop, where they were easier to press without changing the positioning of my right hand which often hovers around the arrows.
  • There are no dedicated media playback keys. This is not a major issue as I have mapped Alt+Ctrl left/right/space to those functions in Plasma’s shortcuts KCM. Still, I do miss the dedicated keys.
  • Toggling the keyboard backlight is done with Fn+Space, rather than a dedicated key. Also the multi-level brightness feature seems kind of superfluous. Simple on/off modes would be better IMO. Not really a big deal though.

Overall, compared to my old HP Spectre x360 laptop, I would say I prefer the typing feel and black key color of the Lenovo’s keyboard, but prefer the key layout of the HP’s keyboard.

Touchpad

The touchpad is perfect. It’s just the right size: not too big, and not too small. The glass-covered surface makes it a pleasure to use. With the Libinput driver, thumb and palm rejection are perfect, enabling my favorite way of using a touchpad: with my right thumb lazily resting at the bottom as if there were a physical button there. I click with the thumb and use the rest of my fingers to move the cursor or perform scrolling gestures. This is how I got used to using Mac touchpads back when I was an Apple user and the Lenovo’s hardware is good enough to replicate that. It’s not quite Mac quality, but I’d say the experience is 90% there. It’s really, really good, and a huge upgrade from my old laptop whose trackpad was a bit worse in almost every way.

Speakers

The speakers sounded great in Windows during my initial test so I know that the hardware is quite capable. However, on Linux the sound is not so good, and more work is needed on the driver side. So at the moment, the speakers are a disappointment and a regression compared to my old laptop, but hopefully improved audio drivers will make them better in the future.

Camera

The camera is horrible, which is an unwelcome surprise for this very expensive computer. Its resolution is a very low 720p, and there is noticeable lag/latency, which makes video conferencing annoying for other people as my mouth does not match my words. This is a significant regression compared to my old laptop, which had a 1080p camera with no appreciable lag. I didn’t test the camera in Windows before installing openSUSE Tumbleweed, so I don’t know if the lag is a hardware limitation or a driver bug.

Software side

On the software side, things have not been as good.

Installing openSUSE Tumbleweed was not too big of a hassle, given that I’ve done this a number of times before. I had to disable secure boot, which entailed a trip to the BIOS and bricking Windows. After installation, a number of local workarounds were required to make things function, in particular the audio, which still does not seem to be working properly. Just check out the relevant Arch Wiki pages! That’s a lot of stuff that you need to fix manually. After the OS was installed, I started to run into other issues:

Speakers and sound

Initially, the speakers were not detected at all. The relevant Arch Wiki page was very helpful here: installing the sof-firmware package fixed that, but then the audio quality was horrible. Compiling PulseAudio from source to get version 14 (which is not released yet) made it better, but still not as good as it was on Windows. I have filed a bug on PulseAudio as it seems like more work is needed: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/914

Also, there are pointless devices corresponding to the three HDMI/DisplayPort audio outputs, which should not be shown unless they’re actually in use. This affects both the Plasma audio applet as well as the Pavucontrol app:

It’s not totally clear to me whose fault this is, so I filed a bug on PulseAudio and also one on plasma-pa. We may be able to improve the display in Plasma at least, and I’m working on a merge request.

Power management

Battery life is poor. This laptop has a 51 watt-hour battery (up from 42 Wh on my previous laptop), but draws between 8 and 10 watts at idle. When actually using the machine, I’m only getting about 4 hours of battery life! Reviewers said that it got at least 7 hours in Windows, so this is pretty terrible. powertop reports that the display backlight uses 10 watts of power at full brightness, 5 watts when at its lowest level, and 4 watts when turned off entirely! And the bottom of the case is always warm, so perhaps the CPU is also not idling enough. So I suspect that there are some performance and power management bugs somewhere, as this level of power consumption does not seem expected, even with the 4K screen. On the plus side, at least the laptop charges very quickly with the included 65W charger. :/ I have not filed any bugs on this particular set of issues yet as I’m not suite sure where to start.

Touchscreen

Out of the box, the touchscreen did not work properly on X11 with Plasma, KDE apps, and other Qt apps–but it did work with GNOME and Electron apps! After filing a bug report on Qt, I discovered that switching to the libinput driver fixes the issue! To do this, you can uninstall the xf86-input-wacom package (which will also remove the Wacom page in System Settings, which may be undesirable if you’re using it) or alternatively you can apply the following patch to /usr/share/X11/xorg.conf.d/70-wacom.conf:

diff -rubd /usr/share/X11/xorg.conf.d/70-wacom.conf.orig /usr/share/X11/xorg.conf.d/70-wacom.conf
--- /usr/share/X11/xorg.conf.d/70-wacom.conf.orig       2020-06-08 08:08:01.576986784 -0600
+++ /usr/share/X11/xorg.conf.d/70-wacom.conf    2020-06-08 08:07:04.624218429 -0600
@@ -19,7 +19,7 @@
         MatchUSBID "056a:*"
         MatchDevicePath "/dev/input/event*"
         MatchIsTouchscreen "true"
-        Driver "wacom"
+        Driver "libinput"
 EndSection
 
 Section "InputClass"
@@ -43,7 +43,7 @@
        MatchProduct "Wacom|WACOM|PTK-540WL|ISD-V4"
        MatchDevicePath "/dev/input/event*"
        MatchIsTouchscreen "true"
-        Driver "wacom"
+        Driver "libinput"
 EndSection
 
 Section "InputClass"

Ubuntu has already made a similar change to their packaging and I filed a bug report for openSUSE as well: https://bugzilla.opensuse.org/show_bug.cgi?id=1172669.

Next up, touch scrolling did not work in Firefox. I already knew how to fix this, and I’ll teach you too:

  1. Add MOZ_USE_XINPUT2=1 to the /etc/environment file. This turns on touchscreen scrolling and enables pixel-by-pixel touchpad scrolling.
  2. Doing the above triggers a nasty bug that breaks scrolling when a notification appears, but you can work around that as follows: Open System Settings > Window Management > Window Behavior > Uncheck “Click raises active window”.

Obviously we should just fix the KWin bug that makes this workaround necessary. We eventually will!

After this, touch input works well, especially for GTK apps. We have a lot of work to do to make our own KDE apps work as well with a touchscreen as GTK apps do on average.

Broken Flatpak apps

I briefly encountered an issue where none of my Flatpak apps would launch:

$ flatpak run com.discordapp.Discord
Gtk-Message: 07:05:34.667: Failed to load module "unity-gtk-module"
Gtk-Message: 07:05:34.667: Failed to load module "canberra-gtk-module"
No protocol specified

(Discord:4): Gtk-WARNING **: 07:05:34.667: cannot open display: :99.0
[fake-sandbox: zypak-sandbox] No data could be read (host died?)
[fake-sandbox: zypak-sandbox] Quitting Zygote...

This utterly bizarre issue turned out to have been caused by me setting the computer’s hostname incorrectly, using sudo hostname <new hostname> instead of sudo hostnamectl set-hostname <new hostname> which triggers an SDDM bug which is fixed by the following open pull request: https://github.com/sddm/sddm/pull/1230. Hopefully the SDDM bug will be fixed soon, and in any event I should just add a GUI method of setting the computer’s hostname which I’ve been meaning to do for a while. See https://bugs.kde.org/show_bug.cgi?id=259285.

Scaling issues in Plasma

On X11, Plasma did not auto-detect that I was using a 4K screen, so I had to manually change the scale in the KScreen KCM. Then I had to manually sync that to SDDM in the SDDM KCM to make the login screen not look tiny. It would be nice if the appropriate scale factor would be autodetected, at least for 4k screens. I have filed https://bugs.kde.org/show_bug.cgi?id=422552. Happily, this already works out of the box on Wayland! So go Wayland.

In addition, once I did set a 200% scale factor, all the icons in Plasma looked tiny, making everything hideous. This is https://bugs.kde.org/show_bug.cgi?id=356446, and I worked around it by setting PLASMA_USE_QT_SCALING=1 in the environment, which fixes the issue and makes Plasma look fantastic at 200% scaling. However it also makes the minimize animation zoom into the wrong location. Boooo! As before, all this stuff works out-of-the-box on Wayland. Hmm…

Once I had the scale properly set, I noticed that various UI elements were not automatically scaled:

The first three actually work fine on Wayland! So I’m getting the sense that I should just bite the bullet and use Wayland, since the high DPI behavior is much better.

Next, I incrased the scale to 250% to make everything a bit bigger, and then various icons that are supposed to be monochrome became colorful. This is a minor issue, but I’ve submitted a patch to fix it: https://invent.kde.org/frameworks/breeze-icons/-/merge_requests/3

Anyway, other than these issues, scaling works great. We’re pretty close, I think.

Conclusion and the future

I wish I could say that it’s been a pleasant, trouble-free experience and that I’m loving my new computer. In truth, getting the ThinkPad X1 Yoga to function well enough to comfortably write this post took several frustrating days of poring over documentation, filing bug reports, tweaking config files, and altering kernel parameters. On top of that, it’s still not quite there yet and is worse than my old laptop in several ways despite costing twice as much money. The high DPI scaling issues are our fault in KDE, and we need to do better, but that’s just the tip of the iceberg. The problems run throughout the entire software stack. Simply put, this is not acceptable in 2020. We need to up our game of partnering with hardware makers to ship FOSS operating systems by default. Everything I’m going through with this computer is the kind of problem that should be caught by paid Linux QA teams so that it can be fixed before the hardware is released to customers.

I continue to believe that we will get nowhere until more hardware comes with a Linux-based OS pre-installed. People shouldn’t have to deal with this kind of nonsense! My wife has been happily using KDE Neon on her laptop for two years, but I had to do the initial installation. Normal people want their computers to just work, not endlessly fiddle around with settings to make things functional that should have been so out of the box in the first place.

Part of me wishes I had instead gone with the SlimBook Pro X 15 or the System76 Lemur Pro, which were strong contenders in my search. The SlimBook laptop can even be pre-installed with Plasma-bearing operating systems like KDE Neon and Kubuntu, and I’m sure the System76 folks would have done likewise had I asked nicely enough. Everything would have worked perfectly out of the box, because SlimBook and System76 have QA teams paid to do what I’ve been doing myself for the ThinkPad X1 Yoga. Alas those laptops didn’t have some of what I was looking for in the hardware department (principally touchscreens and higher quality speakers), but perhaps I was underestimating the importance of integration into a cohesive product. It certainly stands in stark relief right now.

I’m sure things will get better over time. Kernel fixes will accumulate, and the bug reports I’ve filed will start to get fixed. I may even fix some of them myself. But this state of affairs is simply not acceptable if we ever want to grow our audience beyond the ranks of tech nerds. No normal person spends over than a thousand dollars on a laptop for real productive purposes that will have to become an extended science experiment before it works properly. We need more hardware sold with our software pre-installed, period. That’s the next frontier, and I strongly believe that we need to make it our end goal for everything we do.

71 thoughts on “Lenovo ThinkPad X1 Yoga: impressions, bugs, workarounds, and thoughts about the future

  1. Regarding the screen: I believe your X1 Yoga got a 10bit-capable screen. Have you tried running it with a color depth of 10bit? Xorg seems to default to 8bit and 10bit has to be explicitly enabled via xorg.conf (https://linuxreviews.org/HOWTO_enable_10-bit_color_on_Linux). When I tried that on a similar device I had some subtle visual bugs in KDE, like broken window shadows, which in the end forced me to run it with 8bit for the time being. It’d be great if those 10bit-related bugs could be ironed out.

    Like

  2. >> and I find myself constantly pressing it when I mean to press the right Alt key, especially to hit Alt+Left to go back in Dolphin or Firefox.

    Just try https://github.com/bulletmark/libinput-gestures
    xdotool for X, ydotool for Wayland.
    Like:
    gesture: swipe left 3 xdotool key alt+Left
    gesture: swipe left 3 ydotool key alt+Left
    gesture: swipe right 3 xdotool key alt+Right
    gesture: swipe right 3 ydotool key alt+Right

    Gestures are the real gem and I find it extremely ridiculous that many distros haven’t enabled them yet using this tools.

    Like

    1. Yeah, this is awesome tool, its also support nonlinear swipes!
      Here’s my config for it, maybe it’ll be useful for someone:
      cat .config/libinput-gestures.conf
      gesture swipe up 3 xdotool key Home
      gesture swipe down 3 xdotool key End
      gesture swipe left 3 xdotool key alt+Right
      gesture swipe right 3 xdotool key alt+Left
      gesture swipe left_up 3 xdotool key F5
      gesture swipe right_up 3 xdotool key ctrl+t
      gesture swipe left_down 3 xdotool key ctrl+shift+t
      gesture swipe right_down 3 xdotool key ctrl+w
      gesture swipe up 4 xdotool key ctrl+F9
      gesture swipe down 4 xdotool key super
      gesture swipe left 4 xdotool key super+Tab #I had rebind this for switching between desktops
      gesture swipe right 4 xdotool key super+shift+Tab #same here for meta key
      gesture swipe left_down 4 xdotool key super+Page_Down
      gesture swipe right_down 4 xdotool key alt+F4
      gesture pinch out 4 xdotool key ctrl+F8
      Been using this more than a year, seems perfect to me except some non-intuitive cases compared to MBP like you have to swipe four fingers down to invoke dashboard but when it invoked you have to swipe down again or click somewhere on empty place to make it disappear instead of intuitive swiping four fingers up, not very convenient as it on mac/android. And same situation for expose analog.
      In case of libinput overall usage for touchpad I think its a little bit raw and doesn’t have much features. I installed synaptics driver but they’re conflicting and pointer acceleration and buttons remapping works from time to time after reboot so you have to relogin 😦

      Liked by 2 people

    1. It may get better in the future, yes. However I don’t know if they plan to offer support for the Yoga line. If to do, then I anticipate that most of these issues will gradually disappear over time.

      Like

  3. Thank you for the write-up! I have encountered some of these issue in the past few months and sometimes didn’t find a solution, like the Flatpak bug: the message is so mysterious! 😂

    And I am really glad that more people involved in KDE’s development have access to HiDPI screen because the support currently is not bad but like you’ve found out, there are still some quirks that need to be ironed out.

    BTW have you ran into the issue of tray icons being blurry until you hover over them? Happened to me with the “you have updates” icon and qBitTorrent icon. Some icons stay blurry but I assume that’s because they don’t have a high resolution version.

    Like

    1. Haven’t seen that, but I also try to minimize the number of system tray icons visible as much as possible.

      Like

  4. Thank your for your write up. Honestly, I am a bit happy that you run into those issues. Not because I think you deserve them, but because otherwise you’d probably continued living in a pink bubble that the Linux world is fine.
    Yet there are definitely many many rough edges everywhere and I am happy that you encountered and filed reports against them, making it possible that those issues become addressed upstream in the future. 🙂

    Like

  5. I totally agree with your conclusion. I have notebook with 4K display and I have been using it for over 2 years. I went thru everything you described and some more. I believe I started 4K journey with Plasma 5.12 and I also reported some bugs related to 4K.

    I also tried to switching to Wayland. Many scaling related issues go away, which is great, but some applications are blurry. I think they are rendered with scale 1.0 and then simply resized to 200 %. Great example to this is Firefox and I assume all XWayland windows are affected by this. In my opinion only sensible way to go is to set font size to 192px and keep scale at 1.0.

    So in some selfish way I’m glad you got 4K display and all new features and fixes will also be checked in 4K.

    Keep up good work. We really appreciate it. 🙂

    Like

  6. I love System76 for their machines but also their system drivers. I install them as part every Kubuntu setup.

    Like

  7. It’s a little sad that you didn’t chose Dell’s XPS 13 like mine 🙂 yes they have a fun whistle lottery but you can always ask them to send you another one 🙂 It’s the first notebook with _everything_ working out of the box after installation, it’s also certified by Canonical. Strange to hear that Lenovo had such poor hw support on linux. Or vice versa, I don’t know 🙂 I had the same situation with my previous Sony Vaio Pro that you have to spend a week or something to reading/changing all this crap so you can finally just work.

    Like

    1. The XPS that I tried also had a pretty bad keyboard, unfortunately. I don’t get why this is so hard for so many of the OEMs. Just copy the layout of the HP laptops and the mechanism used in the Lenovo keyboards.

      Like

  8. “We need more hardware sold with our software pre-installed, period. That’s the next frontier, and I strongly believe that we need to make it our end goal for everything we do.”

    While I think it can be discussed if this is really necessary in order to deliver a nice experience, it sure will help.

    I guess Linux (at least on desktop) lacks manpower to really be able to fix all the currently outstanding bugs, especially to keep up with the ones for newer hardware. Plus sometimes these bugs don’t even get filed in the first place (so I really appreciate that you filed all of them). Having hardware partnerships can help raising resources for QA that could not be raised otherwise.

    However, I think the ultimate goal should be to just deliver a nice and easy to setup system, even in cases like yours where it came with Windows preinstalled. But maybe it is more important to ensure the Linux system by itself works nicely before coming up with better solutions for easy OS switching and stuff.

    Because I guess currently it is still not just a one time complicated setup, but there are also maintenance tasks occurring requiring a tech savvy person to tackle. I mean that sometimes the underlying stuff beneath the UI needs to be touched in order to make things working. This is probably also a thing (at least a cliché) making desktop Linux unattractive to casual (normal) users.

    Like

  9. > So go Wayland

    Nah, wayland still doesn’t work with global/titlebar menu, which is painful on small screens especially since most of the displays are wide and vertical space isn’t cheap.

    Liked by 1 person

    1. Actually a KDE developer has fixed the global menu for the upcoming Plasma 5.20 release. 🙂

      Like

  10. 1. The main reason the Thinkpad T420 was the last Thinkpad for me is that they killed the Menu button which I use constantly.AFAIK it is still not back (correct me if I’m wrong). I heard that people remap the poorly placed PrtScr (which replaced Menu’s position. Why oh why?) but I like to use that as well.
    2. My main problem with 4K screens is that under X KDE becomes way slow when the screen is rotated (and rotation under Wayland doesn’t work at all. I know it has been recently fixed but I haven’t tried it out yet because Kubuntu does not have a stable 5.19 release).

    Like

  11. Wow, what an incredibly thoughtful and comprehensive evaluation! Boy, it sure seems you had your hands full last week, on top of everything else. Lenovo really made you work hard. Given all the many, complicated adjustments you needed to do, I thought your Conclusions were spot on! Can you share this with the team at Lenovo somehow?? I’m guessing they might actually appreciate it, and try and rise to the challenge at least on some of your points. So–are you more or less satisfied with your new laptop, now that you’ve (kind of) re-made it??

    ________________________________

    Like

  12. I have the x1 yoga with the FHD screen.

    Regarding sound, try arch’s LTS kernel with sof-firmware. Make sure to set it to 4.0 though. With LTS, sound is much better than with latest kernel, even when changing the master volume as described in Arch wiki.

    Still, the center speaker currently doesn’t work (used to work as 4.1, but it isn’t a bass speaker AFAIK). I believe this is a bug of pulseaudio.

    I initially created the arch wiki page for the x1y gen4, BTW 🙂

    Like

    1. I’m on 5.4.45-1-lts. There, it is possible to use stereo 2.0 or surround 4.0 (change in kde’s speaker settings, “advanced” tab). Also with the lts kernel, both suspend and hibernate work really flawlessly (issues with non-lts are because of the speaker blocking the wake up sometimes), except sometimes after a wakeup from hibernate the tablet mode isn’t enabled (keyboard input not disabled) when folding the screen over; workaround: just quickly go into sleep mode and wakeup from there.

      Like

    2. That kernel bug report is about the Yoga C940, which isn’t the same machine.

      I don’t suppose you’ve filed a kernel bug on the regression for your X1 Yoga? If not, would you consider doing so? I actually have a few contacts at Lenovo I can forward it to, so it wouldn’t be a black hole. 🙂

      Like

    3. Here is a bug report regarding the tablet mode issue after hibernation:

      https://bugzilla.kernel.org/show_bug.cgi?id=208131

      Regarding the sound issue and the bug report I linked earlier:
      Yes, this is a different laptop, but I had assumed those issues affect the X1 Yoga too, because of the description of the issue (but I might be wrong there 😉 )

      Like

  13. I’ll have to review your comments now. I got mine last weekend, put Kubuntu 20.04 on it,and had no issues. I think I agree with your power assesment, but I’ll have to measure mine more accurately. The sound is also a bit muffled, and I haven’t used it for zoom yet to check the lag. So hopefully I’ll come back here with another verdict, but right now I’m pretty happy.
    On the battery: yeah, 51 Wh isn’t a lot, but my T480 came with two batteries adding up to close to 90. After two years there is barely half of that left. Disappointing.

    I probably will be replacing the 256GB nvme with a 1TB, which I have here collecting dust.

    Like

  14. After having several Lenovo X- and T-Series laptops, I have my X1 Yoga 4th (FHD with privacy filter) now for 6 months. This is my verdict:
    – Not only the camera is of inferior quality, it is the same for the microphones. My videoconference partners always complained about the poor sound quality so I bought a separate mic.
    – The aluminum case is extremely prone to scratches due to its coating and the sharp edges. (I already trimmed the edges of the case with a nail file…)
    – The weight of my laptop is nearly 1.5 kg, which is far more than the specs! This makes it unpractical to use as a tablet.
    – The trackpad sometimes reacts sluggish – this was not the case with my old X1 3rd gen.
    – Maybe the only plus is the battery life of about 6 hours thanks to having only an FHD display.

    To sum up: I completely regret that I have bought this X1 Yoga 4th – too expensive, too many flaws!

    Like

  15. I’m not sure what you get with OpenSUSE, but I had to install and configure TLP to see reasonable battery life on my ThinkPad.

    Like

  16. I went through the same issue with an LG gram. Do not expect full support from kernel, I still have a lot of missing fn keys and other issues reported one year ago, they are never going to be fixed.
    If you want zero hassle you have 2 options:
    1- go for slimbook/tuxedo/system76/starlab or other linux pc manifacturer and sacrifice
    – thunderbolt port
    – 2in1/touchscreen
    – good speakers
    – hdpi screen
    2- use a dell developer edition or lenovo/hp linux supported workstation laptop. You will not get 2in1/touchscreen anyway but you can have thunderbolt, good speakers and hdpi screen

    I think the 2in1 support for laptops on linux is not ready for the market although I can use my 2in1 with kde and x11 pretty well (not as good as wayland & gnome though).
    ChromeOS is pushing hard on 2in1 and I think it’s the preferred choice for a linux base 2in1 for now.

    Like

    1. P.S.
      it is also a shame that, as mentioned above, no distro is implementing gestures out of the box that work already perfectly well.
      I suggest you to try arch/manjaro if you look for latest kernel updates though

      Like

    2. I hear that GNOME has pretty good gesture support out of the box now. We’re definitely behind in Plasma.

      Like

  17. Hi Nate,

    (Mark from Lenovo – I’m the technical lead for the Linux team)

    Thanks for the email pointing me at this. Interesting article and comments. I was going to reply to your email but it’s more useful to reply here in the comments so others can critique the response 😉

    The audio issue has been a challenge for us over the last year. As you found out you need the SOF firmware, topology and a pretty modern kernel (5.6 was when it finally became really good in my opinion – along with updated ALSA and pulse). A couple of distros (Ubuntu 20.04 and Fedora32) have that working now out of the box – others are not quite there yet (as an aside we have a copr repository for RHEL 8.2 if anybody is interested). Note – I’m not meaning to point the fingers at the distro’s; the fixes took a while to really get upstream and be good and stable and only landed recently. Audio on X1C7 and X1Y4 has just been one of those items that has been hard to get in good shape for the end users.

    Your notes about the audio quality are interesting – I thought we’d done audio tuning for Linux on the X1Y4 but…I can’t find my notes on that. I’ll see what I can find out and it’s possible more effort there is needed.

    For the other items – one of the key take outs that I took is lack of KDE testing – i.e. we don’t have any. We’re still growing with Linux and right now our focus has been on ensuring that the HW works. Getting HW vendors to deliver drivers upstream and firmware to LVFS etc. Hopefully as this becomes more standard we can start to get involved more with other aspects. All of our testing is currently done with Gnome. We’re actually not a big team of either developers or QA so we have to choose our battles a bit I’m afraid, Hopefully we grow as our Linux project takes off 🙂

    The power comment was interesting – we’ve started to do energy certification with our Linux platforms (Energy 8.0 etc) and generally we’re finding the performance is on a par with Windows. I don’t have results for the Yoga but the Yoga G4 has our updated thermal/power firmware so one suggestion is try doing FN+L to put it into low power mode – that will reduce the power consumption and give you longer battery life (at the cost of performance of course). To get back to normal do FN+M and for high performance do FN+H (works in desk mode only – it won’t work on your lap) . I need to publish a document explaining how it works and we have some kernel/user space work to do there still but it’s been crazy busy the last couple of months.. Note – don’t use thermald or tlp – it overrides the firmware and a reboot is needed to get things back to normal (nothing against either thermald or tlp – but just pointing out that they don’t all play well together)

    Really appreciate the insight – and especially the fixes to make things better 😊 Thank you to others for the commentary too. I’m very happy the Linux PC ecosystem is alive and well with people like you guys who care about it.

    Mark

    Liked by 1 person

    1. Hi Mark, your reply is really appreciated and makes me consider buying Lenovo in the future again! I’ve had two Lenovo laptops in the past and liked both of them a lot for Linux.

      Like

    2. Hi Mark,

      It’s really great to hear about all the Linux related work done for thinkpads. The audio firmware that you talk about, does that also apply to the 8th gen X1 carbons? I need to get a new laptop and the carbon is one that I’m looking at (the other option being the P1 gen 2 without the Nvidia gpu). I don’t know id be able to wait till the fedora based thinkpads actually ship, so I was wondering if all the fixes you talk about are going to be at the driver/firmware level or if there will be some hardware differences in the Linux versions of thinkpads.

      Best,
      Anurag

      Like

    3. Thanks so much for the kind reply, Mark! I really appreciate it. If you need a point of contact within KDE, feel free to send an email to nate@kde.org whenever. Don’t hesitate to get in touch!

      However thankfully the desktop environment (e.g. Plasma or GNOME) is not really that important when it comes to hardware support. Most of the required work is in drivers, which benefit everyone. There are some opportunities for sure though. For example, I didn’t know about those Fn+L/M/H shortcuts and they’re begging for a visible UI! The DE could provide an easy interface for switching between those modes. In Plasma we have a “Battery and Brightness” applet that’s visible by default on laptops. It could be renamed “Power and Performance” and gain a nice little UI for switching between these modes, and we could also wire up our existing power management system to allow you to select which profile you want to use when on battery power vs plugged in, for example. Though of course I’m sure someone will eventually do this upstream, it’s the kind of thing that’s nice to have already present when the hardware ships, ya know?

      On that subject, what I think you really need to do is get your drivers into the kernel before the hardware ships–the farther in advance, the better. This would probably entail hiring or sponsoring some Linux kernel hackers, or sending out free pre-release hardware (under NDA of course) to community members so that they can do the work without having to be formally employed, which of course has its advantages and drawbacks.

      I’m glad you mentioned tlp. I’ll remove it. This is yet another opportunity for good partnership: the distro packager manager could notice that you’re trying to install tlp and warn you that it’s not needed and can be harmful for the hardware you’re using. Is this a thing that we should avoid installing on all Lenovo hardware?

      A lot of KDE people really love their ThinkPads (and I have a feeling I’m going to be the newest member, as soon as everything is working better) and it would be great if you could add some KDE distros to your pre-installation plan. KDE is a huge community and we already put a lot of work into hardware support for Lenovo machines. For example a colleague of mine is right now working on a UI to expose the charge limit feature on ThinkPads: https://invent.kde.org/plasma/powerdevil/-/merge_requests/5.

      Fedora has a KDE version and on the Ubuntu side there’s Kubuntu, which seem like they could be easy wins given that Lenovo has already announced future support for Fedora and Ubuntu. It could be as simple as asking the user at purchase time which DE they want–GNOME or Plasma, and giving them stock Fedora or Ubuntu if they select GNOME, or Fedora KDE or Kubuntu if they select Plasma. I would also encourage exploring a partnership with openSUSE.

      Liked by 1 person

    4. Nate, Mark, please keep us updated about your correspondence. It’s very great news that you started cooperating! 🙂

      Like

    5. Hi Nate,

      Sorry for the slow follow-up. Busy week 🙂 I’ll definitely keep hold of your name and will give KDE a run.

      Whilst having the new pre-loaded systems on the web is what is getting a lot of focus right now one of the core aims of my team is just to support linux on our platforms – regardless of distro/desktop/whatever. So making sure KDE runs well and provides a good experience for users is definitely something I want to support 🙂

      Agreed on getting the kernel drivers upstream before HW ships….I think we’ll get better on this as the team gets more experience. I only got the ACPI interface for doing the thermal implementation a few weeks ago so we were always going to be late for this round. As a note we actually work closely with Canonical and Red Hat engineers and they help us a lot. Hopefully the team grows in the future – at the moment like so many businesses we’re gauging the impact from Covid so no hiring for a while.

      For the thermal stuff I do need to document it and I’ll keep you posted with that and the kernel patches once they’re available. Having some form of control in KDE would be sweet.

      For tlp – I’m a bit hesitant to make strong recommendations as I’ve not played with it much. The platforms which have the new thermal firmware likely won’t play nicely with it. All Linux supported 2020 models, T490, T490s, X1Yoga4, X1Carbon7, L390 Yoga P53, P1G2, X1ExtremeG2 should have it
      – though some of those literally just got the FW update on LVFS so I don’t know how the update is rolling out.

      For any platforms that don’t have the firmware tlp is probably good. I’ll have a think about a better way of flagging if the FW is available – I need to check some things out there

      Mark

      Like

    6. Thanks for following up, Mark. I’m really enjoying this dialogue!

      If you’re interested, here are the upstream bug reports I’ve filed to track the remaining audio issues with my machine:

      – Audio jack input source does not work: https://bugzilla.kernel.org/show_bug.cgi?id=208145
      – No bass, max volume too low: https://bugzilla.kernel.org/show_bug.cgi?id=208133 and https://bugzilla.kernel.org/show_bug.cgi?id=207407
      – Keyboard mic mute button does not mute microphones plugged into the audio jack: https://bugzilla.kernel.org/show_bug.cgi?id=208139
      – Not all channels are visible to PulseAudio: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/914

      There is also one DE-specific issue which I have submitted a patch for in Plasma: https://invent.kde.org/plasma/plasma-pa/-/merge_requests/5

      I haven’t yet filed a bug on the poor battery life as I’m still doing some investigation on my end. But some improvements here would be very welcome! 🙂 Aside from the audio and battery life issues, it really is a lovely computer. The best I’ve ever owned, for sure.

      Like

    7. Hi Nate, Mark, all people

      I am a longstanding Kubuntu user and last year I bought a ThinkPad X1 Yoga 3rd. I had to dig a lot to make some things work better, like using the Xournal++ app (a GTK app, did not found a good counterpart in Qt/KDE) for giving online live classes, and, going through a nightmare to make the suspend/wake and hibernation/wake(?) mechanisms work sort of consistently.

      I’m also concerned about the power management. I disabled a lot of stuff in the machine’s setup and got more hours of battery (SDCard reader, Thunderbolt 3, etc). Despite not an ideal way, it worked, as I’m not using these things (for now).

      I had installed the tlp and tlpui (a nice GTK UI for it), but removed now, as Mark said it does not work well with the X1Y4 (mine is a X1Y3). The tlp is the only one I’ve found that allows me to set the battery charging threshold under Linux (the Lenovo app allows it on Windows 10).

      Anyone knows if I can set this battery charging threshold by another way? Does the tlp is also a problem in the X1Y3?

      Best regards

      Like

    8. I could probably test the battery threshold feature as my Lenovo Ideapad supports it. Do you know of it’s in KDENeon Unstable dev?

      Like

    9. Hey Mark,

      I have a question about the fn+L, M, and H. Is there a certain BIOS my X1 Yoga G4 needs to be one for those to work? When I use the keys and monitor CPU speed, I don’t see any change in core speeds, as I would expect. Especially at idle. I am on Fedora 32, and pretty much everything except the fingerprint sensor worked out of the box.

      Thanks!

      Like

    10. Hi,

      X1Y4 should work – the feature is related to the version of BIOS and EC firmware so make sure those are up to date. I can dig up the versions it was introduced if that helps….it’s somewhere in my morass of documents.

      You’ll see it in the power levels not the core speeds – you’ll be able to use more power (and run hotter) when in desk mode.

      I don’t have a Yoga4 handy but if you look under /sys/devices/virtual/powercap/intel-rapl-mmio/intel-reapl-mmio:0 and then on the X1C7 it’s constraint_0_power_limit_uw you should see the power limit go up and down as you switch between levels. Check what those are doing on your platform

      Note – if the device think’s it’s in lapmode you will not be able to high performance mode. The lapmode patch has been accepted upstream so if you’re into building your own kernel grab the latest and check /sys/devices/platform/thinkpad_acpi/dytc_lapmode – it will let you know what mode the machine thinks it is in.
      If you’re into building your own kernel I can send you a patch which exports the performance modes too – I’m in the process of doing upstream review for it. Let me know if that’s of any interest.

      Glad you’re enjoying the Fedora experience on the Yoga4 🙂

      Mark

      Like

    11. Thanks for the quick reply Mark!

      Yeah, that does seem to be switching on the X1Y4 –

      FN+L – 7500000
      Fn+M – 15000000
      Fn+H – 51000000

      BIOS 1.23
      EC 1.12

      Whats strange is the overall power consumption in powertop doesnt seem to actually drop when modes switch. It seems to be discharging at 9-14w no matter the power mode. I’m running a fresh Install of F32, with not a whole lot running on it yet. In Windows its about half that according to the battery readings in the vantage software, I can also see the power levels change almost immediately when I switch modes (4-6w, 8-11w, and 11+ respectively).

      In real life, I would say the battery life matches the above findings. I am only getting about 50% of the battery life on F32 that I can get on Windows. (I’m dual boot). On a full charge on Fedora, it about 4-5h of actual usage with the screen on ~25%.

      Not sure if there’s anything else I can try to tweak, but thought I would report my findings back.

      Thanks again!

      Like

    12. Curious on the battery usage. I’ll have to see if I can get my hands on the Yoga4 but suggest running powertop (or turbostat) to check that you’re reaching the lower power levels when the device is idle – there might be something preventing it which is usually the culprit for issues like that. My (admittedly limited) experience is that as long as all the drivers are playing well then energy usage is often better with Linux.

      Like

    13. Mark, I see the exact same thing as VP9SK on my Y1G3. Power consumption is in the range of 9-14 watts all the time irrespective of which power mode is selected, and battery life is commensurately disappointing. It’s really my last problem with this laptop.

      I’ve filed a kernel bug on this: https://bugzilla.kernel.org/show_bug.cgi?id=208191. Any chance you or your engineering team could take a look?

      Like

    14. Process wise, my average system load is pretty low .75 ish most of the time. According to Powertop, CPU Misc and CPU core are the largest power draw…7.5W and ~1W respectively, for a CPU total of 8.5w essentially at idle. Hope some of this feedback is helpful for you and your teams.

      Thanks!

      Like

    15. Hi Mark,
      Thank you for having replied so much here. It’s been very informative a new X1 Carbon G9 (i7-1185G7, BIOS 1.42) owner and Linux user — I run Pop!_OS 21.04 on it, and all is well.
      I have three questions, if you don’t mind.
      1) How do I switch between lapmode and deskmode?
      For me, “cat /sys/devices/platform/thinkpad_acpi/dytc_lapmode” retuns 0, meaning I’m in deskmode, I suppose, since “cat /sys/devices/virtual/powercap/intel-rapl-mmio/intel-rapl-mmio:0/constraint_0_power_limit_uw” returns 64000000 on Fn + H but only 15000000 on Fn + M.
      These returns are unchanged when I unplug the machine.
      2) What are lapmode and deskmode supposed to do? I.e., what am I missing out on if I’m always in deskmode?
      3) About tlp: It can be used to set battery charging thresholds, which may supposedly be used limit battery wear. What are your thoughts on that? Would you recommend setting charging thresholds, and do you have a suggestion to a tlp alternative to set them?
      Rasmus

      Like

    16. Strange to see this old thread pop up in my inbox 🙂

      The desktop/lapmode states are triggered by a couple of sensors in the device. Generally if you want it in lapmode then put it on your lap (cunning eh!). Wriggle it around a bit and it should change mode. Getting back to desktop is more annoying – you’ll want it on your desktop and nice and stable and not moving and it takes a few minutes before the firmware decides that it’s changed.

      The aim of the two modes is to lower the system temperature when it’s on your lap. On desk it can run hotter (and with more performance). On your lap it should be a bit cooler (though as an aside my wife does complain it’s still too hot…). That’s why you can’t have FN+H mode on your lap. I’m intrigued though – are you finding that even if you wave your laptop around in the air for a bit it stays fixed in desk mode? From a performance point of view that’s good but not from a lap/temperature perspective.

      For battery charging thresholds I recently dug into that a bit and got the following guidance from the battery team:
      – If you often discharge your battery to near eempty (< 20%) then start charging at 95% and stop at 100%
      – If you frequently use the battery but don't fully discharge. Usage between 50% and 100% then start charging at 75% and stop at 80%
      – If you always use an AC adapter and rarely use battery start charging at 45% and stop at 50%

      Hope that helps
      Mark

      Liked by 1 person

    17. Hi Mark
      Thank you for the quick reply, despite the old thread. Yes, quite cunning indeed, and yes, the information clarifies all. I highly appreciate the info on the charging thresholds as well, so thank the battery team, too!
      The mode does change to laptop if I wave the machine around a bit.
      Rasmus

      Like

  18. I agree that we need more vendors that ship hardware with Linux out of the box. Because this experience you have is the experience any linux user has when they buy brand new hardware – the first months are annoying. I’ve written very similar blogs to yours about pretty much all laptops I ever owned 😉

    I’m actually quite happy that my desktop is pretty well supported in Tumbleweed – though there, too, I’m still waiting for some improvements. And I didn’t exactly buy the latest and greatest, I just recently bought an X570 motherboard with Ryzen 2700X and a 5500XT. That is all last-year or even 2018 hardware, but it’s only working real smooth since a month or two. And that is on Tumbleweed, with its fast release cycle.

    In any case, great work with this blog and overview of the issues, of course. I really applaud Lenovo also for starting to support Linux (even if they didn’t pick my fav distro) and for replying here in the comments 😉

    Small steps.

    Like

  19. 8 Watt of power drain at idle is way too much. Have you tried the `pcie_aspm=force pcie_aspm.policy=powersave` kernel boot parameters? (Note: `pcie_aspm=force` may not be necessary. I enabled it as one of my laptops had a bug in the BIOS that caused linux to disable ASPM. However, it has worked fine in newer laptops).

    Like

  20. Hey Nate,
    just to understand – what’s whe show stopper for why the PLASMA_USE_QT_SCALING still needs to be set manually?
    This was meant to be fixed for Plasma 5.14 and waiting for Qt 5.11, now we’re at Plasma 5.19 and Qt 5.15 – the status at T8177 (https://phabricator.kde.org/T8177) is WONTFIX waiting for upstream support, but the two upstream support needs in the text for T8177 have both arrived.

    Like

  21. I’m having this problem as well in my 4K Thinkpad X1 Extreme. Chrome and java apps are blurry in wayland. I wonder if there is a workaround.

    Like

    1. Java apps are blurry and unscaled even in X11. I haven’t found a way to resolve this and it’s very annoying.

      Like

    2. Try to use java11 or newer. I am using NetBeans and developing java swing & javafx. They are good using java 11. The font is sharp.

      Like

  22. I recently acquired a Lenovo Ideapad C340 laptop, and I basically have the same issue as you with the battery life. Basically in Windows 10 it lasts a maximum of 4 hours on a workday. And this is having Firefox, Outlook, chat applications open, while connecting to remote desktop. But even with just light day-to-day web browsing, the battery life is poor. This is with power saving enabled. It’s by far the biggest quirk with this laptop, and even more disappointing because reviews said it would last longer than this, and Lenovo advertised it as having an “extended battery” that would last a whole day. Yeah, right.

    Regarding Linux, the only distro that worked very well on the Ideapad was Manjaro. I tried Kubuntu but I had many quirks with it – the worst being that it ran way too hot during video playback, and it actually triggered the laptop’s overheating alarm, which almost made me panic because it was nearly as loud as a fire alarm. I tried Tumbleweed and it was OK, but I again had issues with video playback and the laptop becoming very hot.

    Manjaro just works. Except for having to set the scaling in KDE manually, and of course KDE’s touch limitations, almost everything works well. It auto-detected and installed all the drivers I needed, something that I then realized Kubuntu hadn’t done. And they have a homebuilt tool that makes switching kernels easy. I’m currently running 5.7 without issues, and the distro has been really stable.

    I prefer Debian or SUSE-based distros over Arch, but Manjaro is my go-to now.

    Like

  23. I started using HiDPI 4K displays pretty early I think. It was in 2014 and at that time it was not that usual thing. And it was painful with scaling all the way, up to ~2019. I was reporting bugs, but I was getting replies that those are not fixable because of Qt itself. One bug got into my memory most, that is Gwenview had issue with image canvas: when display was scaled it had pixelated pictures on the canvas. It seemed like devs cared and watend to help, but last messages was that it’s not possbile. That was I think in 2017 and in 2019 it became possible and got fixed 🙂 all in all I hope more devs will get HiDPI displays and these things will get improved! Also touch screen support could improve

    Like

  24. Anyone having issues with the clock syncing and staying synced with the domain controller? 4th Gen is the only model with this issue with. We have run all updates, BIOS and everything else the entire IT can come up with.

    Like

    1. I had the same issue, was dual booting Win / Fedora, happened on both…Lenovo support said it was a bad CMOS battery…so I returned the unit and got a new one…no issues with time sync anymore.

      Like

    1. Hi,
      I assume you mean in the way tlp conflicts with the thermal firmware? The X1Y3 wasn’t able to get the new thermal firmware (some limitations that meant they couldn’t implement it there) so I wouldn’t expect you to hit any issues with running tlp. If I’ve missed anything let me know 🙂
      Mark

      Like

    2. Oh, nice. Thx Mark!

      Another unrelated point is: to turn the X1Y3 on, I just hit the power button, and ok. However, given it went on suspension (Kubuntu 20.04), to wake up, I either have to: press any key or press and HOLD the power button.

      So there are two issues here: (1) keyboard vs power button and (2) hold the power button.

      I’ve set the windows suspend style in the BIOS, otherwise It considered a “suspension” where the computer completely powers down, and, had to HOLD the power button even to turn the laptop on.

      Complementary, I’ve managed to disable the mouse to wake up the computer from suspension.

      Summarizing: I am looking for a consistent way of waking up from suspension by just hitting the power button without holding it (and disable the keyboard of doing it).

      Best
      Mauro-Henrique

      Like

    3. Hi Mauro-Henrique,

      That does sound peculiar. I’ll be honest – it’s going to be tough finding an answer to that one but I’ll see if I can find anything from the BIOS team and let you know if I do. I don’t know much about the X1Y3 I’m afraid.

      Mark

      Like

Leave a comment