Site icon Random Thoughts

Lenovo Carbon X1 12th Gen & Debian Linux: The Nostalgia Experience

This blog post is about installing Debian on the latest Lenovo Carbon X1 — the 12th gen. tl;dr: I wouldn’t really recommend the experience… but the result is the best laptop I’ve had.

OK, here’s my tale of woe and success:

My old Lenovo Carbon X1 laptop’s Trackpoint device went wonky — it would start sheering off on its own for a few seconds. I tried Googling whether there was any way to fix this, but just found a whole lot of pages saying “well, that’s no problem! it stops after a few seconds!”

People, man. People are impossible.

Lenovo has an excellent parts policy and repair manuals out there, but replacing the Trackpoint device is a 45 point procedure, requiring me to disassemble the laptop completely. So I bought a new one.

As you can see, they’re very similar. The main keyboard difference is that there’s now a fingerprint thing where the right control key was, but I didn’t use the right control key anyway, so it makes no difference to me. Oh, and they flipped the Fn/Left Control keys once again.

(I should send the old one in to be fixed, even though it’s out of warranty, I guess…)

The old one was running Ubuntu with X. I’m so fed up with Ubuntu: The “snap” thing, and the way they keep some updates to a paid channel. So I wanted the new laptop to use Debian, and I had to make the change to Wayland at some point, so why not now?

Reader, it was A Whole Thing.

It’s been a very nostalgic experience, because the last time I had to dick around this much to get Linux to work was back in the 90s.

Even with the newest “testing” Debian distribution, it didn’t have new enough firmware for the wifi to work, so I installed Debian using an ethernet dongle. How retro is that?

Then, after Linux came up kinda well, I copied newer firmware from the official distribution:

cd /usr/src/
git clone https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
cp linux-firmware/intel/ibt-0180-0041.* /usr/lib/firmware/intel/
cp linux-firmware/i915/mtl_guc_70.bin /usr/lib/firmware/i915/
cp linux-firmware/intel/ibt-0180-0041.* /usr/lib/firmware/intel/

But that’s not enough — they also need to be in the initramfs? So:

cp /usr/src/linux-firmware/i915/mtl_* /lib/firmware/i915/
update-initramfs -u

I don’t understand why Debian are so reticent about including newer firmware files in “testing”. Newer devices need new firmware, and older devices will continue to load older firmware, so it should be pretty safe-ish. (I’m guessing wifi would have worked out of the box with Ubuntu, since they (wisely) include newer firmware.)

But with that, the laptop is basically usable, but lots of details remain to get everything to work.

The laptop has a 5G modem installed:

08:00.0 Unassigned class [ff00]: Quectel Wireless Solutions Co., Ltd. Device 1007

This modem (which is really called Quectel RM520N-GL 5G Sub6, apparently) is well supported in Linux 6.9, but it needs to be FCC unlocked, because Lenovo locks them.

So you need this, but you don’t need all of that. But you apparently need ModemManager 1.23, which isn’t in Debian “testing”, so you need to get it from here. And also libmbin.

apt build-dep modemmanager libmbib

to get the requirements.

bash /usr/share/ModemManager/fcc-unlock.available.d/1eac\:1001 foo `ls /sys/class/wwan/`

will unlock, but:

mbimcli --device-open-proxy --device=/dev/wwan0mbim0 --quectel-query-radio-state

will talk about not being able to do anything about the modem, because it’s eSIM. So you need to switch to the physical sim slot:

mmcli -m 0 --set-primary-sim-slot=0

Then reboot, and things work. I.e., just go to Settings and switch it on:

*phew*

I’ve used the 5G on a trip now, and it seems to be rock solid. I’ve had other laptop with built-in WWAN, and it’s generally kinda worked… but often required a bit of hand-holding, and is often not completely stable. But this chipset seems to be A-OK.

The audio system worked fine out of the box… until Debian updated the firmware or something, and then the internal speaker stopped working. I know! It’s such a cliché joke at this point — whenever somebody mentions Linux, they go “and does the audio work, then? *snigger*”, and I haven’t had a problem with Linux audio in years, so my reaction has been “*pout* So unfair! *stamps foot*”.

But to get the laptop speaker working again, I needed the following in /etc/default/grub:

GRUB_CMDLINE_LINUX_DEFAULT="quiet snd_intel_dspcfg.dsp_driver=1"

And then update-grub2.

For the Fn/Ctrl thing, I’ve gotten used to having the Ctrl where it was — but fortunately that could be switched around in the BIOS.

And then, of course, all the pain involved with Wayland.

But the good news is… the Lenovo Carbon X1 12th Gen is really good! It’s fast, and it has way better battery life than I’ve ever experienced on a Linux laptop. Which is a huge difference from my previous laptop, which only lasted like three hours. So the Linux/Intel people have really gotten their shit together and made huge strides in this area.

Speaking of power modes… What do you think these three options mean, anyway? It’s impossible to guess. But after looking at the source code and googling a lot, these three options seem to mean:

That is, there is no Balanced mode really.

And dude, Power Saver mode is dog slow. It ramps up when you’re doing something, but it’s so slow that even typing in Emacs will have a noticeable lag. Balanced mode is the defaults, and makes the laptop a sad experience when unplugged, basically. Before I realised this, I thought perhaps that Wayland was the culprit or something, but was extremely impressed by the 18 hours uptime I was getting. So now I’ve just changed it to flip to Performance when I open the lid, and down to Power Saver when I close the lid.

With my usage patterns (which involve using the laptop often throughout the day, but mixed with doing other stuff in betwee), I basically only have to charge it once per day. I’ve thrown out most of the chargers I had sprinkled around my apt! It makes a huge change in how I feel about the laptop — instead of there being a constant low level “perhaps I should charge it soon” loop going in my head, there’s just this chill thing going on now.

And if I forget to plug the laptop in before going to bed, that’s fine, because when I’m not using the laptop, it only seems to gently sip battery power. (I’ve don’t let the laptop go to “suspend” automatically when not in use, because I’ve got several long-running network connections going all the time, and reconnecting would be a bother.)

And otherwise… everything just works? Suspend (which I never use anyway, because it’s not needed) works fine, audio works fine (ahem), the screen is pretty good (it’s OLED with an anti glare thing — I’d prefer FULL GLARE to get max contrast, but it’s fine). And it’s 1.1kg.

I’d go so far as to say that this is my favourite laptop ever. Despite all the 90s-like shenanigans to get things working. And presumably the next Debian release will have proper support for all of this stuff, so people won’t have to go through all of… this.

(Which is less stuff than I thought now that I’m typing it out, but it sure took me a long time to figure out all these bits and pieces.)

Anyway.

Year Of Linux On The Laptop!

Exit mobile version