At first was prepared to be upset by this post (as a user of a 6th gen ThinkPad), but now I'm quite happy. I already knew about the thermal setting difference between Windows and Linux and I've been VERY irritated by the sleep state issue. I didn't know there was a BIOS update! Thank for the heads up.
I was considering buying this machine as opposed to the XPS 13 Dev edition. I'm a little disappointed to hear about this. Fast forward few years and more updates and we will see new issues which won't receive this sorta attention.
Current 5th gen user, coming from a MacBook Air 2013, I can’t believe people think the thinkpad is a great laptop. Running Linux on this never even crossed my mind.
Are you saying the Thinkpad is a bad laptop? I'm a bit confused.
I also have the 5th edition (my first new Linux laptop) and I can't even begin to say how happy with it I've been. Setting up all my UIs and learning how to use Linux as a "User" not an "Administrator" has been a lot of fun. I now start the network instinctively with a quick terminal command (fish history is great). I quickly got used to (and now much prefer) a tiling window manager like i3. And above all, I've gotten used to the extra work of reading through changes to packages as they come in with Arch.
This laptop feels "just right" as a recent Apple user. It's got that anti-apple vibe, without feeling like a crap piece of plastic.
Now all Lenovo/Linux needs to do is match Apple's trackpad feel, and I'll call this is wash.
I second this setup! I run Arch Linux on a Lenovo X1 Carbon 5th gen, I use i3 wm, and my shell is Fish. I've used Arch, i3, and Fish for about 4 years now.
X1 Carbon 5th gen is a fantastic laptop in my experience, the only thing I don’t like is the shallow keyboard, but that is the same for all laptops now.
It's not unusual for things to still be getting sorted out on Linux a few months after a new laptop hits the market but to me this seems awfully late for these issues to not be sorted out yet. Didn't this laptop come out early in the spring?
I agree that this is typically the case and generally is totally OK! I was assuming that the issue has been fixed because BIOS version 1.28 said something about "power issues" that were fixed, but didn't go into detail. However, it's obviously still an issue - and I know of people who asked support weeks ago and haven't heard back, yet. So it's good to have a reminder out. The fix is rather easy to apply and it's worth it - considering the gains(;
Edit: I'm curious - this comment has a good number of upvotes, but it's sitting right at the bottom of the page, below greyed-out downvoted comments. Do moderators have a "super downvote" option or something? To be clear, I'm not complaining about moderation (this is a low quality comment), just curious exactly how this works.
TLDR - due to conservative temperature levels at which to initiate CPU throttling; and the article links to a fix (as well as saying sleep is fixed with a "BIOS" update).
There are a fair number of tasks that can stress the CPU for short periods of time. But If I can turn an occasional 10 second task into a 3 second task, that is where a CPU that can throttle up temporarily really helps (things like generating crypto keys, or some short-burst javascript on some web sites).
But for video transcoding that may take 3 hours, that's something I would do on a remote server anyway.
It's offered by my work in their small list of "approved" hardware. I do most intensive things on remote servers. In a laptop I mostly care about keyboard quality, weight, and battery life.
Can anyone point me to a good resource on updating the BIOS/firmware under Linux?.
I know absolutely nothing about it, and it looks like the user has to manually do it. And the obvious question: How do Windows users do it? When they are even less knowledgeable than me (generally speaking).
There are links in the article showing how to update the BIOS from Linux. It involves downloading the firmware (a couple of megabytes in a .cab file) and flashing that onto a USB stick from which you can boot.
Windows users do it differently. The carbon has an auto-update service installed which will offer to update the BIOS when it finds a new version available.
Newer laptops supported by fwupd (fwupd.org) are more straightforward on linux. For the older ones, you take their windows bios image, and use Geteltorito (https://wiki.archlinux.org/index.php/Flashing_BIOS_from_Linu...). Windows users open an exe file.
That's an issue for sure, the logic here is pretty damn terrible though.
For a <1 min test yeah it's slower. (Essentially a race from "cold" temp to the respective temp limits - the one has more runway). Run both at full throttle for 5 mins and I suspect you'll find they'll both perform equally (since they're both repeatedly bumping up against their respective thermal throttling).
Actually, it's exactly the same - and mentioned in the article.
I ran the tests for 20min, as well. But then the screen shot of s-tui won't cover the whole length of the test, so I chose to show those screen shots while only mentioning that longer benchmarks perform exactly the same.
Yeah I had an Acer before my two thinkpads that has discrete and it was a problem. This was also back in the day when X11 was actually kind of a pain to configure properly. Things are miles better today, but I think after 10 years of messing around with it all I just kind of got burnt out.
Never had a problem with my Thinkpad or my System76 laptop. If something has Windows support directly it's not surprising that it it would run better than something done in the spare time of developers. I've never had terrible luck with any linux on laptops though, aside from the Macbook. What kinds of problems did you run into and on what types of laptops?
Two think pads. They just didn't even come close to the battery life that Windows did. And I'm a very advanced used, been using Arch Linux since 2008, and have every part of my system tweaked. It just seemed like the hardware support and drivers weren't there. Specifically the T440s. I forget what model it was before that one. I'd also get suspend issues on both. I dumped a lot of time into it.
This should make for an interesting test of the level of anti-Apple group think out there as this is the same fundamental issue that caused the 2018 MBP fiasco. MBP power limit was set too high, this laptop has it set too low.
In the MBP case you just waited for ~7 days for the fix to be delivered to you automatically. In this case you figure out how to update your BIOS under linux which is often non-trivial and then figure out how to install this which has a bunch of caveats: https://github.com/erpalma/lenovo-throttling-fix . There doesn't seem to be any indication what a 'real' fix is and whom is going to provide it.
The MacBook issue was while running macOS so initially no one suspected that it was fixable in software. We assumed (incorrectly) that they'd tested their own OS on their own HW completely. A reasonable assumption and an honest mistake on their part.
This is quite different because Windows, which they ship with, works well. For better or for worse, Linux users expect to take a while to sort out new hardware.
I actually think that having a cooler laptop is advantage and often I would like to be able to make the choice. So to me, this is not a bad thing, wish there was a setting where you can say how cool/hot you would allow your laptop to run.
Actually there is - look at the last paragraph of the article. You can configure the max temperature for when you're connected to power and working on the battery.
You can write a script to check the CPU temps in linux and set the fans to kick on at different power levels for certain temps and just run it as a timer event. I did this for a Macbook I had Arch running on when it was running hotter than I liked.
Could you share your setup? There are so many tools available for tuning of power use and fans. It's hard to pick the right one.
I'd prefer to run my laptop with as few fan activity as possible without overheating. So when the CPU gets too hot, clock it down instead of starting the fan.
That seems like only half of the story. Earlier in that thread, there's this quote from lenovo: "
Due to "DPTF" function will act on Windows system by BIOS/Driver support, the system will turn to cool mode when keep high temperature several minutes.
But Linux system didn't have driver support DPTF function, it only have TDP limit on platform.
So user should have different between Windows and Linux system as normal behavior."
So lenovo is doing something conservative because DPTF isn't officially supported on linux. There seems to be a DPTF repo here: https://github.com/intel/dptf
I think ThinkPads are renown for the earlier products (eg T410 or the x200 series). Much like the Dell D630 used to be a Linux favourite.
The BIOS sleep state issue seems common with modern Lenovos though (my 2nd Gen Helix is also a mess), which is a real shame because the hardware is great.
It used to be "anything before letter-series", then T42, then X41, then T60, then X200...
In essence the main thing that tends to shift is what is the "defining feature" of thinkpad. For T42 an X41 it was keyboard without windows keys and with textured trackpoint buttons, then it was 5-row keyboard and so on...
Another point in regards to this is that at least for me the really good ThinkPads started with the letter series, which is also the time when IBM started to outsource both design and manufacture. And the difference is plainly visible with traditional IBM's overengineering (eg. 600E, which is supposed to be low-cost model, is pain to disassemble and contains two handfuls of various weird and wonderful machined aluminium brackets, mainframe-style) being replaced with design that meaningfully balances cost, reliability and serviceability.
That's probably true. I admit the first time I got in contact with ThinkPads was around 2006; so whatever was affordable for students back then might have stuck (tbh, I never had a TP until a year ago; and the Helix something entirely different).
Wait, what? From reading the git repos a bit, it seems that Lenovo and Intel have created some framework that is, in its default state, modifying the thermal MSRs every five seconds via SMI (presumably).
Let that sink in. Somehow, rather than letting the CPU run with reasonable parameters and letting the EC control fans as needed, they are forcing the system into SMM (which interrupts everything on all cores) to fiddle with thermal parameters. And they want some ridiculous user space library (DPTF) to reconfigure this mess to actually do something sensible.
WTF
edit: Wow, the Intel code in question is hilariously enterprisey. Check this out:
I’ve looked at this code a bit and.... seems relatively straightforward to me. Am I too much used to enterprise code? Do you just mean the verbose naming?
I mean the sheer amount of abstraction. On a brief inspection, this code essentially does:
when temp > upper_threshold:
turn fan on until temp < lower_threshold
For a vendor-provided set of tuples (temperature, fan, upper_threshold, lower_threshold). And it’s not really clear whether the code is intended to handle the same temperature or fan occurring more than once.
This logic could be written in maybe 100 lines of code if all the abstraction were removed, and that’s if full support for repeats is needed.
Instead there are layers and layers of abstraction. Also, this code doesn’t belong in a user program or even on the main CPU at all. It belongs in the embedded controller.
79 comments
[ 2.7 ms ] story [ 154 ms ] threadhttps://github.com/erpalma/lenovo-throttling-fix
(Edit: specified Mac vs thinkpad I don’t like)
I also have the 5th edition (my first new Linux laptop) and I can't even begin to say how happy with it I've been. Setting up all my UIs and learning how to use Linux as a "User" not an "Administrator" has been a lot of fun. I now start the network instinctively with a quick terminal command (fish history is great). I quickly got used to (and now much prefer) a tiling window manager like i3. And above all, I've gotten used to the extra work of reading through changes to packages as they come in with Arch.
This laptop feels "just right" as a recent Apple user. It's got that anti-apple vibe, without feeling like a crap piece of plastic.
Now all Lenovo/Linux needs to do is match Apple's trackpad feel, and I'll call this is wash.
The 6th gen came out in January '18: https://en.wikipedia.org/wiki/ThinkPad_X1_Carbon#2018_%E2%80...
Edit: I'm curious - this comment has a good number of upvotes, but it's sitting right at the bottom of the page, below greyed-out downvoted comments. Do moderators have a "super downvote" option or something? To be clear, I'm not complaining about moderation (this is a low quality comment), just curious exactly how this works.
Works for me.
Why spend $$$$ on a laptop with a beefy CPU if you aren't going to use it?
But for video transcoding that may take 3 hours, that's something I would do on a remote server anyway.
I know absolutely nothing about it, and it looks like the user has to manually do it. And the obvious question: How do Windows users do it? When they are even less knowledgeable than me (generally speaking).
Windows users do it differently. The carbon has an auto-update service installed which will offer to update the BIOS when it finds a new version available.
Also, LVFS: https://fwupd.org/lvfs/component/1023/all <- to me, personally, this didn't work. I suspect it had to do with UEFI mode.
Just don't forget to change the Power setting in your BIOS to Linux, as mentioned in the link as well.
[1]: https://github.com/fiji-flo/x1carbon2018s3#via-lvfs
I got a BIOS update through Windows update once. Didn't have to do anything except deal with a random restart.
For a <1 min test yeah it's slower. (Essentially a race from "cold" temp to the respective temp limits - the one has more runway). Run both at full throttle for 5 mins and I suspect you'll find they'll both perform equally (since they're both repeatedly bumping up against their respective thermal throttling).
...still shouldn't be happening at all though.
I ran the tests for 20min, as well. But then the screen shot of s-tui won't cover the whole length of the test, so I chose to show those screen shots while only mentioning that longer benchmarks perform exactly the same.
Which one is 'MUCH easier' is up to you.
This is quite different because Windows, which they ship with, works well. For better or for worse, Linux users expect to take a while to sort out new hardware.
I'd prefer to run my laptop with as few fan activity as possible without overheating. So when the CPU gets too hot, clock it down instead of starting the fan.
However, if I'm sitting at a desk where it's plugged in I would like to get as much performance out of it as I can.
At least according to this Ubuntu maintainer: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1763144...
So lenovo is doing something conservative because DPTF isn't officially supported on linux. There seems to be a DPTF repo here: https://github.com/intel/dptf
The BIOS sleep state issue seems common with modern Lenovos though (my 2nd Gen Helix is also a mess), which is a real shame because the hardware is great.
In essence the main thing that tends to shift is what is the "defining feature" of thinkpad. For T42 an X41 it was keyboard without windows keys and with textured trackpoint buttons, then it was 5-row keyboard and so on...
Another point in regards to this is that at least for me the really good ThinkPads started with the letter series, which is also the time when IBM started to outsource both design and manufacture. And the difference is plainly visible with traditional IBM's overengineering (eg. 600E, which is supposed to be low-cost model, is pain to disassemble and contains two handfuls of various weird and wonderful machined aluminium brackets, mainframe-style) being replaced with design that meaningfully balances cost, reliability and serviceability.
Let that sink in. Somehow, rather than letting the CPU run with reasonable parameters and letting the EC control fans as needed, they are forcing the system into SMM (which interrupts everything on all cores) to fiddle with thermal parameters. And they want some ridiculous user space library (DPTF) to reconfigure this mess to actually do something sensible.
WTF
edit: Wow, the Intel code in question is hilariously enterprisey. Check this out:
https://github.com/intel/dptf/blob/master/DPTF/Sources/Polic...
and that repo is full of files like SuchAndSuchFacadeInterface.h.
I swear that at least 95% of the code doesn’t do anything. Maybe 99%.
when temp > upper_threshold: turn fan on until temp < lower_threshold
For a vendor-provided set of tuples (temperature, fan, upper_threshold, lower_threshold). And it’s not really clear whether the code is intended to handle the same temperature or fan occurring more than once.
This logic could be written in maybe 100 lines of code if all the abstraction were removed, and that’s if full support for repeats is needed.
Instead there are layers and layers of abstraction. Also, this code doesn’t belong in a user program or even on the main CPU at all. It belongs in the embedded controller.