94

Suspend for the X1 Carbon 2018 on Linux

 4 years ago
source link: https://www.tuicool.com/articles/hit/UFB7Jna
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Suspend for the X1 Carbon 2018

Unfortunately the X1 Carbon 2018 does not support suspend on Linux. There's an ongoing discussion in the Lenovo Support Forums . With some help from the Arch Linux Community , I was able to create an ACPI override for the DSDT . This enables full support of S3 suspend on Linux.

Prerequisites

This guide is written for Arch Linux but should work with any distribution out there.

BIOS version

The current BIOS version for the X1 Carbon 2018 is 1.25 . You can download the update ISO from the Lenovo Support Site .

BIOS update

If you wanna update via USB drive use geteltorito .

geteltorito -o x1c2018-122.img n23ur06w.iso
sudo dd if=x1c2018-122.img of=/dev/sdX bs=512K

Reboot from USB and follow instructions.

Tools

Make sure that you have iasl (via acpica ) and cpio (via cpio ) installed.

BIOS settings

  • Set Thunderbolt BIOS Assist Mode to Enabled (via ConfigThunderbolt 3 ).
  • (Unconfirmed): Disable Secure Boot

Generating the override

curl -O https://raw.githubusercontent.com/fiji-flo/x1carbon2018s3/master/generate_and_apply_patch.sh
chmod +x generate_and_apply_patch.sh
./generate_and_apply_patch.sh

Loading the override on boot

Edit your boot loader configuration and add /acpi_override to the initrd line. To ensure S3 is used as sleep default add mem_sleep_default=deep to you kernel parameters.

If you're using systemd-boot your /boot/loader/entries/arch.conf might look like this:

title		Arch Linux ACPI
linux		/vmlinuz-linux
initrd		/intel-ucode.img
initrd		/acpi_override
initrd		/initramfs-linux.img
options		root=/dev/nvme0n1p2 rw i915.enable_guc=3 mem_sleep_default=deep

Verify that it's working

After rebooting check the output of:

dmesg | grep -i "acpi: (supports"

should look like this:

[    0.230796] ACPI: (supports S0 S3 S4 S5)

See also

Esonn did an initial blog post about my patch with some more detailed explanation.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK