Ideapad 5 14are05: suspend finally working!

So, I finally have working suspend on newer kernels on Linux! \o/

In this tiny post I will try to summarize how I fixed the issue. (TLDR. just upgrade bios lol)

Suspend in the past

When I have got the laptop I upgraded the bios to the version V1.06 which was currently available at the time. With this setup the sleep in modern standby was unusable. Fortunately there was a guide how to make S3 sleep work on Arch wiki. This was amazing good tutorial which allowed me to have suspend which worked relatively well.

Some freezes

There were cases when the laptop just could not wake up from the sleep. This was quite unfortunate, but it was usable to some degree. Just one had to regularly save their work, which I did anyway. When the freeze occurred I had to hold the power button to make the laptop hard poweroff.

New kernels!

With the time new kernels were published which addressed this issue of sometimes freezing (at least that is what I think). Unfortunately this also made my setup unusable as the suspend feature worked only once. After the second suspend the laptop would automatically wake up from the sleep immediately. This state after the first suspend attempt made the laptop not even wanting to stay turn off.

  • power on the computer
  • do suspend, laptop sleeps
  • wake up, to this point everything ok
  • do second suspend, laptop goes into sleep and immediately wakes up
  • power off the computer
  • the laptop powers off, but then immediately starts back up, like user did a reboot

To turn the laptop in this state was only to hard power it off with the tiny poweroff button.

Research

I’ve done numerously research into the suspend problems but I was not able to find anything usable. I’ve been running S3 from advanced bios which many people did not have and even ArchLinux. I’ve tried liveUSB of Ubuntu which worked fine so I thought that it’s something with Arch / my setup.

Acceptance

I’ve tried to stay on the old kernel as possible so that I would have suspend working. Eventually this kernel stopped working because of the system updates. So I had to give up on suspend. I’ve set the lid action to just do nothing so I could still switch rooms without reboot cycle.

Today

Today was another day when I had the urge to fix this issue because it makes my life less comfortable and comfort is utterly important in the current digital age! I’ve tried once again researching the issue and I have found another person on Stackoverflow having the same problem… Without solutions :-). I’ve tried liveUSB of Ubuntu 22.04, This was still working! It had kernel 6.2 which was fine. On my Arch I am using 6.7.8. I was curious if this is only ArchLinux kernel problem so I download 23.10 and tried that. And behold! It was the same on the Ubuntu 23.10 with 6.5 kernel as on my Arch! Mystery solved right? Well partially.

At this point I wanted to really try updating the firmware of BIOS to version V1.13 which is the current version (from 2022-05-30). The reason why I haven’t done it earlier was the installer. It is a .EXE file which “requires” Windows 10 64bit install. Which I didn’t have and I didn’t even want to think about reinstalling my disks for this stupid temporarily Windows install.

Rufus: Windows on the Go!

The breakthrough was the find of Rufus which could make Windows 10 install on the USB stick itself so I wouldn’t have to install windows onto my NVMe drives. But of course it wasn’t as easy as it sounds, I was out of big sized USB drives (32+, although I read 16GB should be “ok”) and also already existing Windows 10 installation. So for this I would need help of someone else.

Windows PE

So with some connections I got my hands onto USB drive which had Ventoy with special windows .iso “Windows PE 10” which was like LiveUSB with Linux distributions. I’ve loaded the firmware update EXE onto another USB drive, booted into it and tried installing it with the official instructions. Well this failed because the special iso didn’t have X:\windows\system32\schtasks.exe, how unfortunate… So this is not the way to go either. Now with default bios settings (I’ve done the reset per the installer instructions) I had to find other way.

FWUPDMGR

With the knowledge of another colleague I tried using fwupdmgr. It looked promising but unfortunately the UEFI was not supported.

Windows PE, 2nd part

As next step was to try to extract at least the BIOS update from the .EXE so back to the Live Windows we go! When I hit instead of “install” “only extract” I was greeted with yet another .EXE File which even had an icon. I tried running this program and behold! The flash tool appeared and seemed to be willing to run. At this point I was quite scared if there will be more problems down the way. Fortunately just click the install button now started the flash process. After that the computer rebooted into the flashing screen, laptop fans on full throttle like never heard before (I wonder why I cannot turn them on like that, cooling would be better, hehe).

Aftermath

So After this I disabled secure boot once again and run into my Arch install to try systemctl suspend at least twice. AND IT WORKED!!! I will still need to test this properly but for now it seems to work just fine. Also I will need to see how the power consumption is. I have heard that it is worse on Modern Standby then S3 sleep which I have been using previously.

EDIT 2024-03-10: Not working FnLock

So apparently the new firmware lost the ability to use the FnLock for the PrtSc key. You need to press Fn + PrtSc in order to get Print even with the FnLock feature on and F1-F12 + Insert keys working ok. Just the Print key. Now I get the windows snippet Super+Shift+S instead of wanted key Print. Oh well… :/

EDIT 2024-03-27: Problems

I have hit more problems, once again. Sometimes when it wakes from the sleep it doesn’t wake up completely and remains stuck. I don’t know if it is because of the GPU driver or some ACPI stuff. The laptop screen is frozen, the power led indicator is also not responsive (closing the lid to suspend it generates logs but the led still is lid like it is running). The only way how to fix this is hard reset but… then it makes me sad because i need to open things all over again. For the debugging I have tried to add some kernel debugging parameters but it hasn’t happened after than. Previously it was like after 2 days of uptime. So we will see

Update 2024-07-17: Freezing fix

So now for 3 months (or so, I don’t remember) the sleep was not working. It was freezing when trying to into the suspend. Nothing in the dmesg or journal, just entering s2idle sleep.

Jul 17 18:50:08 klimovo systemd-sleep[2370]: tput: No value for $TERM and no -T specified
Jul 17 18:50:08 klimovo systemd-sleep[2308]: Nothing to do: No swap needed for pure suspend
Jul 17 18:50:08 klimovo systemd-sleep[2299]: Performing sleep operation 'suspend'...
Jul 17 18:50:08 klimovo kernel: PM: suspend entry (s2idle)

Well I have figured out now why it happens. I am using systemd bootd with this configuration for kernel arguments.

options         root=/dev/meow/lv_root rw no_console_suspend=1 zswap.enabled=0 snd_rn_pci_acp3x.dmic_acpi_check=1 initcall_debug ignore_loglevel

I’ve messed up with the arguments and found out if I leave no_console_suspend=1 out, the suspend works flawlessly. So… It is really interesting that it started to misbehave but I guess I can live without no console logs on suspends… It will probably still freeze from time to time but I kinda got used to that… even though it is annoying af. I have spoken with some friends and apparently it is due to the clock speeds being so low or the voltage that when it resumes it crashes because it is unstable, which seems totally wild to me… but could be.

Date: 2024-03-07 Thu 22:20