From Fedora Project Wiki

m (Break out device tree section into its own heading)
(Reorder the device tree options to put the easier option first, and break out the GRUB_DEFAULT_DTB line into an explicit step (I missed the "add kernel parameters" part when trying this))
Line 14: Line 14:
===Loading the Device Tree===
===Loading the Device Tree===
There are two ways to load the correct device tree:
There are two ways to load the correct device tree:
1. Enable the Linux Support boot option in the firmware boot menus, and copy the `/boot/dtb/qcom/sc8280xp-lenovo-thinkpad-x13s.dtb` file to the root of the ESP partition.
** [https://wiki.debian.org/InstallingDebianOn/Thinkpad/X13s#Install_Device_Tree_Blob_on_the_EFI_System_Partition Debian has instructions on how to do this from windows]
** After major kernel updates, you should run <pre>sudo cp /boot/dtb-`uname -r`/qcom/sc8280xp-lenovo-thinkpad-x13s.dtb /boot/efi</pre>


2. Alternatively you can tell grub about the correct DTB so that you don't have to manually copy the DTB to the ESP. This approach will let you install newer kernels via `dnf`.
1. Tell grub about the correct DTB so that you don't have to manually copy the DTB to the ESP. This approach will let you install newer kernels via `dnf`.
** Add a the following line to the /boot/loader/entries/* file(s): <pre>devicetree /dtb/qcom/sc8280xp-lenovo-thinkpad-x13s.dtb</pre>
* Add a the following line to the `/boot/loader/entries/*` file(s): <pre>devicetree /dtb/qcom/sc8280xp-lenovo-thinkpad-x13s.dtb</pre>
** Edit `/etc/default/grub`, and add the kernel parameters listed above to `GRUB_CMDLINE_LINUX`. Add a new line: `    <pre>GRUB_DEFAULT_DTB=/dtb/qcom/sc8280xp-lenovo-thinkpad-x13s.dtb</pre>
* Edit `/etc/default/grub`:
** Edit `/etc/kernel/cmdline`, and add the kernel parameters listed above.
** Add the kernel parameters listed above to `GRUB_CMDLINE_LINUX`.  
** Add a new line: <pre>GRUB_DEFAULT_DTB=/dtb/qcom/sc8280xp-lenovo-thinkpad-x13s.dtb</pre>
* Edit `/etc/kernel/cmdline` and add the kernel parameters listed above. (Arguably only needed if using systemd-boot,  just covering all options)


Once the system is running, installing the [https://copr.fedorainfracloud.org/coprs/jlinton/x13s/ x13s copr], will pull in the remaining dependencies and correct a few configuration items:
2. Alternatively, enable the Linux Support boot option in the firmware boot menus and copy the `/boot/dtb/qcom/sc8280xp-lenovo-thinkpad-x13s.dtb` file to the root of the ESP partition.
* [https://wiki.debian.org/InstallingDebianOn/Thinkpad/X13s#Install_Device_Tree_Blob_on_the_EFI_System_Partition Debian has instructions on how to do this from windows]
* After major kernel updates, you should update the dtb by running <pre>sudo cp /boot/dtb-`uname -r`/qcom/sc8280xp-lenovo-thinkpad-x13s.dtb /boot/efi</pre>
 
Once the system is running, installing the [https://copr.fedorainfracloud.org/coprs/jlinton/x13s/ x13s copr] will pull in the remaining dependencies and correct a few configuration items:
<pre>sudo dnf copr enable jlinton/x13s; dnf install x13s
<pre>sudo dnf copr enable jlinton/x13s; dnf install x13s
sudo reboot</pre>
sudo reboot</pre>

Revision as of 18:37, 15 December 2024

Page to keep track of Linux support development for Thinkpad X13s (SoC codename sc8280xp), the first Thinkpad with an Arm CPU.

Most of the following information comes from #aarch64-laptops on OFTC, #fedora-arm on Libera.chat and arm[AT]lists.fedoraproject.org. Upstream information changes daily, so this page may be outdated.

Bootable images

Fedora 41 GA works relatively well OOTB. The Workstation raw image can be used with the following additions:

  • The installer is not available in the raw image, and building the Fedora aarch64 ISO has some issues that are described on this email thread. For the time being, the easiest way to install this is to dd the raw image to a USB thumb drive, boot the x13s using the instructions below, and dd the raw image to the internal nvme drive. You'll need to resize the btrfs partition.
  • The kernel must be booted with the kernel parameters arm64.nopauth clk_ignore_unused pd_ignore_unused
  • A recent firmware must be on the machine:
    • Minimum: Version: N3HET84W (1.56)
    • Latest: Version: N3HET91W (1.63)
    • Instructions for how to update the firmware without Windows are on this GitHub repository.

Loading the Device Tree

There are two ways to load the correct device tree:

1. Tell grub about the correct DTB so that you don't have to manually copy the DTB to the ESP. This approach will let you install newer kernels via dnf.

  • Add a the following line to the /boot/loader/entries/* file(s):
    devicetree /dtb/qcom/sc8280xp-lenovo-thinkpad-x13s.dtb
  • Edit /etc/default/grub:
    • Add the kernel parameters listed above to GRUB_CMDLINE_LINUX.
    • Add a new line:
      GRUB_DEFAULT_DTB=/dtb/qcom/sc8280xp-lenovo-thinkpad-x13s.dtb
  • Edit /etc/kernel/cmdline and add the kernel parameters listed above. (Arguably only needed if using systemd-boot, just covering all options)

2. Alternatively, enable the Linux Support boot option in the firmware boot menus and copy the /boot/dtb/qcom/sc8280xp-lenovo-thinkpad-x13s.dtb file to the root of the ESP partition.

Once the system is running, installing the x13s copr will pull in the remaining dependencies and correct a few configuration items:

sudo dnf copr enable jlinton/x13s; dnf install x13s
sudo reboot

Known Problems

  • TPM support is missing
  • 5G Modem
    • Need to follow the documented steps to unlock the modem
  • Virtualization is not available. The UEFI is not yet exposing the EL2 (exception level), which is required to run VMs
  • The system does not suspend correctly so you need to poweroff if leaving unused
  • Camera is not working. There are patches going upstream. You need to add cma=128M
  • Bluetooth doesn't always work

Similar pages