(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)) |
(Reorder and change instructions to be more step-by-step) |
||
Line 3: | Line 3: | ||
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. | 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. | ||
== | ==Installing an image== | ||
Fedora 41 GA works relatively well OOTB. | Fedora 41 GA works relatively well OOTB. | ||
===Loading the Device Tree=== | Unfortunately the Workstation Live ISO isn't available because there are some issues building it (described on [https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/32Q2BDBNN7YYTDNLAV3ZOW4NFMMZPHJX/#32Q2BDBNN7YYTDNLAV3ZOW4NFMMZPHJX this email thread]). | ||
Alternatives are the netinst image or the Workstation raw image. For the time being, the easiest way to install Fedora is to: | |||
# `dd` the raw image to a USB thumb drive | |||
# boot the x13s using the instructions below | |||
# `dd` the raw image to the internal nvme drive. You'll likely need to resize the btrfs partition afterwards | |||
=== Prerequisites === | |||
A recent firmware (BIOS) must be on the machine: | |||
* Minimum: Version: N3HET84W (1.56) | |||
* Latest: Version: N3HET91W (1.63) | |||
Instructions for how to update the firmware without Windows [https://gitlab.com/TheOneWithTheBraid/x13s-firmware-update are on this GitHub repository.] | |||
BIOS options: | |||
* Secure Boot should be disabled | |||
* Linux Support should be enabled | |||
=== Booting === | |||
You must change the grub options to boot the workstation raw image successfully. | |||
Add the kernel parameters `arm64.nopauth clk_ignore_unused pd_ignore_unused`. | |||
You also need to load the device tree (DTB). The workstation raw image already has the DTB included, add the line `devicetree /dtb/qcom/sc8280xp-lenovo-thinkpad-x13s.dtb`. | |||
Tip: You can tab complete the filename in grub to avoid typo-ing the DTB name. | |||
Alternatively, after `dd`-ing the raw image to the USB drive, mount the /boot partition and add the needed kernel options to the `/boot/loader/entries/*` files. | |||
=== Installing === | |||
Once the image has booted, you can `dd` the raw image to the internal drive. | |||
You can `dd` the image you just booted, but it's recommended to `dd` a clean copy of the raw image. | |||
Do not reboot once the `dd` is complete, you should configure grub to avoid needing to add the kernel options at every boot. | |||
==== Loading the Device Tree by default ==== | |||
There are two ways to load the correct device tree: | There are two ways to load the correct device tree: | ||
Line 26: | Line 56: | ||
* 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> | * 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 | === Post-Install === | ||
<pre>sudo dnf copr enable jlinton/x13s | |||
Once you reboot and run off the internal NVMe drive, 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 | |||
sudo dnf install x13s | |||
sudo reboot</pre> | sudo reboot</pre> | ||
== Known Problems == | |||
* TPM support is missing | * TPM support is missing | ||
* 5G Modem | * 5G Modem | ||
Line 40: | Line 73: | ||
* Bluetooth doesn't always work | * Bluetooth doesn't always work | ||
== Similar pages == | |||
* https://github.com/jhovold/linux/wiki/X13s | * https://github.com/jhovold/linux/wiki/X13s | ||
* https://github.com/ironrobin/archiso-x13s/wiki/Feature-Support | * https://github.com/ironrobin/archiso-x13s/wiki/Feature-Support | ||
* https://wiki.debian.org/InstallingDebianOn/Thinkpad/X13s | * https://wiki.debian.org/InstallingDebianOn/Thinkpad/X13s | ||
* https://en.opensuse.org/HCL:ThinkpadX13s | * https://en.opensuse.org/HCL:ThinkpadX13s |
Revision as of 19:00, 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.
Installing an image
Fedora 41 GA works relatively well OOTB.
Unfortunately the Workstation Live ISO isn't available because there are some issues building it (described on this email thread).
Alternatives are the netinst image or the Workstation raw image. For the time being, the easiest way to install Fedora is to:
dd
the raw image to a USB thumb drive- boot the x13s using the instructions below
dd
the raw image to the internal nvme drive. You'll likely need to resize the btrfs partition afterwards
Prerequisites
A recent firmware (BIOS) 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.
BIOS options:
- Secure Boot should be disabled
- Linux Support should be enabled
Booting
You must change the grub options to boot the workstation raw image successfully.
Add the kernel parameters arm64.nopauth clk_ignore_unused pd_ignore_unused
.
You also need to load the device tree (DTB). The workstation raw image already has the DTB included, add the line devicetree /dtb/qcom/sc8280xp-lenovo-thinkpad-x13s.dtb
.
Tip: You can tab complete the filename in grub to avoid typo-ing the DTB name.
Alternatively, after dd
-ing the raw image to the USB drive, mount the /boot partition and add the needed kernel options to the /boot/loader/entries/*
files.
Installing
Once the image has booted, you can dd
the raw image to the internal drive.
You can dd
the image you just booted, but it's recommended to dd
a clean copy of the raw image.
Do not reboot once the dd
is complete, you should configure grub to avoid needing to add the kernel options at every boot.
Loading the Device Tree by default
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
- Add the kernel parameters listed above to
- 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.
- Debian has instructions on how to do this from windows
- After major kernel updates, you should update the dtb by running
sudo cp /boot/dtb-`uname -r`/qcom/sc8280xp-lenovo-thinkpad-x13s.dtb /boot/efi
Post-Install
Once you reboot and run off the internal NVMe drive, installing the x13s copr will pull in the remaining dependencies and correct a few configuration items:
sudo dnf copr enable jlinton/x13s sudo 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
- There has been some work done to unlock it with https://github.com/TravMurav/slbounce. YMMV
- 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