I’ve noticed that if I try to upgrade past kernel version 6.10.14, hibernate stops working for me. I’m not sure where to start troubleshooting this. Has anyone been able to get hibernate working on a kernel version newer than this?
edit: The symptom I’m experiencing on newer kernels is on resume. When I try to resume from hibernate on a newer kernel the system freezes on startup.
Which Linux distro are you using?
Fedora
Which release version?
41
Which kernel are you using?
6.10.14-200.fc40.x86_64. Anything higher than this, hibernate stops working.
I discovered through some trial and error that I can get hibernate working with the 6.10 series of kernels by having a swap partition. I can also leave selinux enabled this way.
Yes there is a known issue with amd and suspend related to bluetooth. You can crreate a systemd unit hook that disables bluetooth/wifi and re-enables it on resume
In recent kernels the bt/wifi problems seem to have been fixed, and for me at least hibernate and restore works fine for 6.11.5 onwards. Now on 6.12.1-arch1-1.
I do have iGPU glitches since 6.11.x though (Framework 16).
I was having hibernate freezes on 6.12.7 running NixOS.
Interestingly after testing bluetooth and wifi were the problem, disabling them before hibernate fixed my resume issues. Unsure why everyone is getting different results at different kernel versions, there’s something going on there.
In any case for any NixOS users here’s the service file I’m using to fix hibernate:
{ config, lib, pkgs, ... }:
{
systemd.services.disable-wireless-hibernate = {
description = "Disable WiFi and Bluetooth before hibernation";
wantedBy = [ "hibernate.target" "hybrid-sleep.target" ];
before = [ "hibernate.target" "hybrid-sleep.target" ];
script = ''
# Disable WiFi
${pkgs.networkmanager}/bin/nmcli radio wifi off || true
# Disable Bluetooth
${pkgs.bluez}/bin/bluetoothctl power off || true
'';
serviceConfig = {
Type = "oneshot";
RemainAfterExit = false;
User = "root";
};
};
# Optional: Create a complementary service to re-enable on resume
systemd.services.enable-wireless-resume = {
description = "Re-enable WiFi and Bluetooth after resume";
wantedBy = [ "post-resume.target" ];
after = [ "post-resume.target" ];
script = ''
# Re-enable WiFi
${pkgs.networkmanager}/bin/nmcli radio wifi on || true
# Re-enable Bluetooth
${pkgs.bluez}/bin/bluetoothctl power on || true
'';
serviceConfig = {
Type = "oneshot";
RemainAfterExit = false;
User = "root";
};
};
}