Framework 16 Arch Linux Hibernation Resume to Unresponsive Desktop

Hi, I am having issues with hibernation feature. I believe I have it set up correctly. The precise behavior is that it seems to hibernate correctly. Upon the resume-boot it boots up to grub then it says it is resuming from the UUID I defined (offset 0 since it is partition and I do not define it). Shortly after that it goes to desktop but it is completely unresponsive.

  1. added resume to hooks in /etc/mkinitcpio and then built with mkinitcpio -P
  2. added swap partition to kernel parameters for grub default in /etc/defaults/grub command then built grub config with ‘grub-mkconfig -o /boot/grub/grub.cfg’ (using resume=UUID=). My understanding is there’s no offset since this is a partition.

I tried a few other things but nothing else seemed required since I have UEFI with swap partition that is greater than my ram (70GB swap for 64GB ram).

I am not convinced, but this could be related to:

and further linked to the kernel mailing list
https://lore.kernel.org/regressions/CAD2rFCq5mtbADb0miYKx18kTrNnBNaqMGvPZpvi6Q+CE=O7hCg@mail.gmail.com/T/#t

I did follow the idea of reverting my kernel to 6.10.x as suggested in the links and that did resolve my hibernation issue. The reason this took me AGES to figure out was I was missing hibernation config and when I finally got around to configuring it there happened to be a kernel regression blocking its function too. To anyone who may find this useful, you can do what I did with a few simple commands:

# 1) Install the 6.10.X (6.10.10) kernel
# This might time out, just try again a couple times. I have no idea why the backend was brutally slow for a little bit but it did eventually download at a fine speed.
sudo pacman -U https://archive.archlinux.org/packages/l/linux/linux-6.10.10.arch1-1-x86_64.pkg.tar.zst

# 2) Add "linux" to IgnorePkg in /etc/pacman.conf
# This is a line in the file /etc/pacman.conf
IgnorePkg   = linux

# 3) When this is fixed we can remove "linux" from IgnorePkg line in pacman.conf in the future. It is helpful that "pacman -Syu" will tell you that linux upgrades are being ignored.

I got the general instructions from this reddit thread: https://www.reddit.com/r/archlinux/comments/o9j03m/downloading_older_version_of_linux_kernel/

The easiest way to solve this if you don’t want bluetooth and don’t want to downgrade your kernel, is to either disable the blueooth systemd service or rfkill bluetooth altogether.

Framework appears to have also noticed this issue, they made a workaround for 6.11.X kernels: linux-docs/hibernation/kernel-6-11-workarounds/suspend-hibernate-bluetooth-workaround.md at 26a729ffc6862307b165fc80f1690a89a6c89c5f · FrameworkComputer/linux-docs · GitHub

This creates 2 systemd services that rfkill bluetooth before suspending/hibernating (although for me, only before hibernating is necessary) and then restores it upon resuming. The only drawback it seems is that it slows down suspending by 3 seconds to allow rfkill to take effect. Works for me!