Status of Ubuntu support for Lenovo ThinkPad X13s

Disclaimer

This post is about a personal project of mine and not something official or supported by Canonical. Be aware that I’m not responsible should you give this guide a try and end up loosing data and/or your Windows installation. Back up your disk beforehand!

Introduction

Some of you might have heard of the Lenovo ThinkPad X13s Gen1 laptop. It’s a nice little ARM laptop running WoA (Windows on ARM) and is driven by a Snapdragon 8cx Gen3 SoC from Qualcomm. Ubuntu Mantic provided experimental support for this machine via a dedicated kernel linux-laptop and some additional configuration settings provided by the kernel’s meta package linux-meta-laptop (binary package linux-image-laptop-23.10). Semi-official desktop installer images are available for installing Ubuntu Mantic.

The goal was to have official support in Noble but that plan unfortunately didn’t materialize
primarily due to lack of resources. The community (read me :smile:) is still working on adding
support to Noble even though it might not end up being an officially supported platform.

Current status

  • The dedicated linux-laptop kernel is removed in Noble.
  • The generic 6.8 kernel in Noble supports the platform.
  • X13s specific configuration settings are provided by a new package ubuntu-x13s-settings. This package is in Oracular but not (yet) in Noble. For Noble it can be installed from the PPA ubuntu-concept/x13s.
  • Official installer ISOs for Mantic are available here.
  • Official installer ISOs for Noble are not available (they’re currently broken).
  • Unofficial installer ISOs for Noble are available here and for Oracular here. Note that these ISOs contain packages from the PPA ubuntu-concept/x13s.

Upgrade from Mantic to Noble

If you do a regular upgrade from Mantic to Noble, the linux-laptop kernel is replaced by the generic 6.8 kernel. Part of that upgrade also involves the removal of the linux-meta-laptop package which (in Mantic) provides the config settings for X13s (specifically the binary package linux-image-laptop-23.10). These settings include a list of modules to be included in the initramfs, additional GRUB kernel commandline options and some other bits and pieces. Without these settings, the machine won’t boot with the new 6.8 kernel. The fix for this is to boot with the (hopefully still existing) 6.5 kernel and then install the ubuntu-x13s-settings package from the concept PPA and update the initramfs of the 6.8 kernel:

$ apt-add-repository -P ubuntu-concept/x13s
$ apt install ubuntu-x13s-settings
$ update-initramfs -u -k 6.8.0-<x>-generic
$ reboot

New installation

In order to run Ubuntu on the X13s, SecureBoot needs to be disable. If you want to install Ubuntu alongside Windows, you also need to disable BitLocker.

One-time preparation

To prepare the system for a first-time installation of Ubuntu alongside Windows, do the following:

  1. Install all available Windows updates, specifically the Lenovo firmware.
  2. [optional] Create a Windows Recovery Drive. This allows you to restore the system should something go (very) wrong. See here for instructions.
  3. [optional] Disable BitLocker or back up its recovery key. Disabling SecureBoot in the next step will prevent Windows from booting if BitLocker is enabled. If you disable BitLocker, the Windows volume is decrypted, which takes some time.
  4. Shrink the Windows partition using Windows Disk Management to make room for Ubuntu.
  5. Reboot into the BIOS Setup Utility and:
    1. Disable Secure Boot (Security → Secure Boot).
    2. Enable Linux Boot (Config → Linux). This setting allows the Linux kernel to access EFI variables (I think) and also loads an on-disk device tree blob at boot which we don’t really care about since GRUB is doing that for us. I just mention it here for completeness. Note that this setting does not interfere with booting Windows and can be kept turned on.

Install Noble

As stated above, there is currently no official installer ISO for Noble.

  1. Download the unofficial installer ISO for Noble from here.
  2. Flash the ISO image to a USB stick or USB disk and plug it in.
  3. Boot from the USB device and install the OS.

Known issues

  • [X13s] Fingerprint reader is not working (LP: #2065376).
  • Camera is not working (work in progress, SW ISP should be doable).
  • Audio volume is very low.
  • Hibernation and lowest-power suspend is not working (not yet reaching deepest low-power state).
  • Virtualization is not working (probably never will since it needs firmware changes).
  • ARM Pointer authentication is not working (needs firmware fixes, disabled via kernel commandline).
  • No SecureBoot.
  • TPM?

Also relevant but not X13s specific:

  • os-prober ignores grub devicetree statement (LP: #2065155).

Reporting bugs

If you encounter any issues not mentioned in this post, please file a bug in Launchpad. Either against the kernel (package linux) if you believe it’s a kernel issue or otherwise against Ubuntu Concept.

16 Likes

Looking at known issues, it seems that not much was improved in 6.8 kernel (I really hoped that at least suspend will be available).
Do you know whether it’s something that will be getting better over time or x13s already becomes forgotten platform?

(Thanks a lot for repairing 6.8 boot BTW).

1 Like

Thank you for the work @juergh !

1 Like

Thank you for the awesome work @juergh !
Yesterday before this post I downloaded the latest 23.10.1 image, I can boot via USB, I can begin the install process, and later on the process it will fail to install. I have submitted the error through the system that is available there.
The 24.04 images like you said seem broken, I can start to boot and when selecting to boot/install will result in a blank screen.
Any recommendations to successfully install it? Any way to get an updated .iso with all the tools you recently uploaded in the ubuntu concept? This link seems not to work anymore: https://people.canonical.com/~xnox/ubuntu-concept/full/daily-live/current/

2 Likes

Thank you for the work @juergh ! Don’t get discouraged by the complexity or lack of resources.

1 Like

“Audio volume is very low.”

Well, it is low because the speaker hardware is set to low levels in the mixer.
You can just “fix” that by increasing it:

  1. Run “alsamixer”.
  2. Select sound card - choose the second sound card SC8280XP-LENOVO-X13S (despite the first sound card control works, the amplifier is in the second sound card).
  3. Keep moving to the right until you can see “SpkrRight PA Volume” and “SpkrLeft PA Volume”, set them to like 80…90.
1 Like

If you want to try out 24.04 on the X13s from a preinstalled image (no complete installer), I’ve put an image here: https://drive.google.com/file/d/1c8hQha1mMUY7axZEPCt4OpVIrtnrtH0s/view?usp=sharing
It is derived from the preinstalled image for raspi, added kernel 6.8.8 (that should be the same as 6.8.0-31-generic, but different kernel config) and grub-efi.
It boots reliably from type-c. I would recommend to use an ssd, it’s way faster. Also, there is a direction sensitivity: logo up when plugged into type-c should be the right non-swapped position. Otherwise it is only recognized and booted as USB2.

@tjenare Thanks for that info but it doesn’t seem to make a difference for me. I can crank both SpkrRight PA Volume and SpkrLeft PA Volume all the way up but it doesn’t change the volume. I’m also a little reluctant since there are reports that you can blow your X13s speakers if you’re not careful.

Ubuntu Noble Desktop Installer ISO: https://people.canonical.com/~juergh/x13s/noble/daily-live/current

It’s an early test ISO which I’ve used successfully to install Noble from scratch. The ISO is built locally (still looking into moving that to Launchpad) and there are a couple of additional packages installed from PPA juergh/x13s. Once the dust has settled, I’ll move all the required packages to the more official ubuntu-concept/x13s PPA and build images using that.

3 Likes

That’s very strange. On my X13s I get extremely loud audio by turning those up. Using Ubuntu Concept 23.10. I have turned on my X13s with latest updates just now and verified that it still works.
The alsamixer controls for me are named exactly “SpkrLeft PA” and “SpkrRight PA”.
I wasn’t able to turn them up to full as I’m afraid it would tilt my neighbours. :slight_smile: I tested it by playing some youtube video.
Anyway, I can 100% fix the low audio issue like this on my Lenovo X13s, there is NO doubt. At least one other owner has already confirmed that it works for him too.
I can provide further details if you need me to. I can provide a proof video too where I turn up the controls in the mixer while stuff is playing ^^.

The first time i installed i got an error that the installation failed at the very last stage and after a restart I could not log in to my account.

However, the second time i tried the installation it worked like a charm - thanks! :slight_smile:

Thanks for reporting back and sorry to hear that you had problems the first time around. Unfortunately, there’s not much to debug without an installer log.

Yes, sorry about that - did not save it and since the second time worked fine its lost now.

@juergh Thanks for your work on this (Noble Desktop Installer ISO). I’m somewhat new to Ubuntu; but installation and setup went smoothly and most things appear to work well.

I encounter a similar “low audio” issue to what tjenare described. Increasing the volume with the keyboard, UI controls, or alsamixer all work. At about 80% the audio is just barely usable, but anything beyond 80% and the audio becomes distorted. Its not the speaker system. The same distortion can be heard through headphones.

Oh that distortion bug I had sometimes when two or more apps output sound at the same time.
I made a script that fixes the sound card config back and forth, which fixes it (temporarily):

CARD=pactl list cards short | grep -o "alsa[-_.a-z]*" | head -n 1
pactl set-card-profile $CARD “pro-audio”
pactl set-card-profile $CARD “HiFi”

^note: the backticks aren’t displayed in this forum it seems, so add them.4

Also the script to auto-fix speaker volume:

amixer -c 0 cset name=“SpkrLeft PA Volume” 84
amixer -c 0 cset name=“SpkrRight PA Volume” 84

This might need to be called after switching the audio profile to fix distortion, as it might reset volume too.

Ow. I did a distupgrade -d and at some point it just said that errors happened, without letting me see them though, and if I just wanted to restore the previous system again, which I said yes, expecting the upgrade process to be rolled back to how it was before I started it.

However, it just decided to brick my system instead which now no longer boots but spams a bunch of red errors in a loop instead on startup.

(calmed down, removed rage fit. System still bricked :/)

@tjenare, we believe the dist upgrade bug is Bug #2054761 “gnome-shell crashed with signal 5: Settings schem...” : Bugs : mutter package : Ubuntu, and is one of the main reasons why automatic dist upgrades have not yet been enabled.

@tjenare
Linux 6.8 only boots on my X13s with an extra “arm64.nopauth” - try adding that to your kernel command line in grub.

@tjenare It’s hard to tell from your description what state your system is in. Can you post some logs or screenshots or anything that might help us debug it? Can you boot into grub? What kernels are listed? Can you boot any of them?

You could also boot the installer ISO, open a terminal, mount your root disk and try to recover that way. But yes, it’s painful…

I lost fingerprints in 24.04.

Is there any progress on suspend and general power controls? Does upgrading to a 6.10 kernel help? Seen a lot of Arm64 stuff landing recently. I haven’t been brave enough to compile it myself yet.