Hi there!

I need some help with my framework laptop and fedora. I want to switch to linux more permanently, but fedora does not enter hibernation properly when closing the lid. I dont care 10-20sec of wakeup time when opening it again. (even windows is more efficient?!) The relatively bad performance on battery life is OK for me, I already installed TLP instead of the default power management. But when closing the lid, the battery drains about 80% over night (10h?) which seems to be more than what other people reported.

I could not find a guide on this, which i understood (still a massive noob to afraid to mess up my carefully crafted linux partition :D).

If you have any advice I appreciate it! Thanks a lot! :)

  • nitrolife
    link
    fedilink
    1711 months ago

    In first you need understand what type of suspend you use:

    Suspend to RAM (aka suspend, aka sleep) The S3 sleeping state as defined by ACPI. Works by cutting off power to most parts of the machine aside from the RAM, which is required to restore the machine’s state. Because of the large power savings, it is advisable for laptops to automatically enter this mode when the computer is running on batteries and the lid is closed (or the user is inactive for some time). Suspend to disk (aka hibernate) The S4 sleeping state as defined by ACPI. Saves the machine’s state into swap space and completely powers off the machine. When the machine is powered on, the state is restored. Until then, there is zero power consumption. Hybrid suspend (aka hybrid sleep) A hybrid of suspending and hibernating, sometimes called suspend to both. Saves the machine’s state into swap space, but does not power off the machine. Instead, it invokes the default suspend. Therefore, if the battery is not depleted, the system can resume instantly. If the battery is depleted, the system can be resumed from disk, which is much slower than resuming from RAM, but the machine’s state has not been lost.

    I think you use Hybrid suspend. Hybrid suspend store memory to disk (20 seconds lag) and then lost battery for memory renew. Need you Suspend to RAM maybe? 20 Seconds lag will fixed with that.

    Then check

    cat /sys/power/mem_sleep
    

    If you see

    [s2idle] shallow deep
    

    check first if your UEFI advertises some settings for it, generally under Power or Sleep state or similar wording, with options named Windows 10, Windows and Linux or S3/Modern standby support for S0ix, and Legacy, Linux, Linux S3 or S3 enabled for S3 sleep.

    If you don’t see anything you can swap sleep mode to Suspend to disk. That slow but don’t use any power. Or try fix sleep status.

    More information you can find here: https://wiki.archlinux.org/title/Power_management/Suspend_and_hibernate

    • @[email protected]OP
      link
      fedilink
      English
      311 months ago

      Thank you for your reply. It says: [s2idle] deep I don’t think i have the swap partition, I will try to create that. Thanks!

    • @[email protected]OP
      link
      fedilink
      English
      111 months ago

      I have read this about the expansion cards and only use 2c and 2A. A bit stupid considering you can hack the hdmi port into suspending on its own… Did not expect this from fw.

      I will check out the link, thanks!

      • @PainInTheAES
        link
        111 months ago

        IIRC framework is working on addressing the expansion card issue via firmware/BIOS but it’s been a while since I’ve seen any updates.

        I generally lose 20-40% battery overnight with USBC and USBA in deep sleep mode. But I have set up hibernate in the past and had it working.

        • @[email protected]OP
          link
          fedilink
          111 months ago

          That is almost equivalent to 1h of browsing in Linux! :D \s Other expension cards are drawing about 1W of power, even without use! That’s crazy much I think…

          • @PainInTheAES
            link
            211 months ago

            Kinda true though. I wish Framework would focus on power usage a bit. As much as I love the concept and laptop the battery life is not one of its strong points. I’ve done a lot of tuning and squeeze about 6-7 hrs out at ~40% screen brightness.

  • Vincent
    link
    fedilink
    411 months ago

    I’m assuming you’ve already found it, but just in case you didn’t: Framework has setup guides for Fedora, which presumably should make everything work as intended. Find your device on this page, then click “Fedora 39 Setup Guide” on the right-hand side: https://frame.work/linux

  • @chitak166
    link
    411 months ago

    I just want to say, power management needs to be improved across the entire Linux ecosystem.

  • @sir_pronoun
    link
    English
    311 months ago

    Did you set up a swap partition?

  • @[email protected]
    link
    fedilink
    211 months ago

    Am on Arch and hibernation is currently broken with systemd 255 in my case. They introduced a lot of breaking changes for it. It works after enabling some workarounds for dracut 059 but it completely does a full power cycle. Your best bet is sticking with suspend until systemd unfucks hibernation.

  • @SquigglyEmpire
    link
    211 months ago

    Which model do you have? There’s a known issue affecting the sleep/hibernate for the chipset on the new AMD model on the, I believe AMD has already submitted patches to fix it in the next kernel release though.

  • Skull giver
    link
    fedilink
    111 months ago

    Framework has a guide for you. You’ll need to disable either power-profiles-daemon or TLP depending on what CPU you have.

    As for hibernation: TL;DR: it’s a mess. Fedora doesn’t support it out of the box. You can make it work with some elbow grease.

    However, you shouldn’t need hibernation if your laptop goes to sleep like it should. If you can’t get it to sleep right, or still really want hibernation, here are some pointers:

    • many Linux distros don’t consider hibernation to be a stable feature. The default Fedora setup doesn’t even come with a swap partition by default, which makes hibernation impossible. You’ll need to allocate some swap space before you can hibernate your computer.
    • make sure your swap partition is encrypted if the rest of your laptop is encrypted as well. If you use a swap file, you can make this work, too, but it’ll be slightly more complicated
    • make sure your swap partition is big enough (at least RAM size + the amount of swap in use at the point of hibernation)
    • if you’re fine with disabling zram and using normal, this guide will show you how to hibernate a normal Linux system: https://www.ctrl.blog/entry/fedora-hibernate.html
    • if you don’t have a partition for swap and don’t want to create one, or if you want to keep using zram (compressed memory, enabled by default on Fedora, probably recommended to keep enabled), then this guide and its comments will tell you how to get a swap file to work. Make sure you read the update with more details too, and there’s also a comment further down specifically about Intel Framework laptops (need to disable a certain Intel driver that breaks hibernation).
    • disable secure boot in your BIOS. Linux doesn’t support the security features that Windows has to validate the state of boot SECURITY (even with custom secure boot keys), so when you’re running in secure boot mode (and the kernel is in lockdown mode), the Linux kernel disables hibernation. Alternatively, there are guides that’ll show you how to patch that check out, but that involves compiling your own kernel and that’s not worth the effort IMO.
    • configure your laptop for suspend-then-hibernate for best performance. I believe hybrid-sleep will also work. The Github gist I linked has details
    • you will probably need to enter your password when resuming from hibernation. This is a security feature. You can configure your laptop to use the TPM to decrypt the disk, skipping the encryption password entirely, it you don’t mind thieves having the ability to access your data when they steal the laptop.

    You may be wondering why this is so complicated. A big reason is that Linux wants to be secure, but hibernation comes with unique security challenges. Linux also wants to be fast and efficient (by compressing RAM rather than writing it to disk) but that messes with the presumptions the hibernation system makes. Fedora dorky sorry hibernation out of the box, but they’re working on it, albeit not as fast as you might hope: https://pagure.io/fedora-workstation/issue/121

  • @Aux
    link
    -3611 months ago

    The best Linux is Windows 11 with WSL. It will work nicely with your battery.

    • @GustavoM
      link
      English
      611 months ago

      Imagine giving away user control and privacy for more battery life.

      • @Aux
        link
        -311 months ago

        Imagine buying an expensive thing and using 10% of its capabilities.

        • @GustavoM
          link
          English
          311 months ago

          That’d be true if I were a Winblows tryhard. Thankfully, it’s not the case. :^)

    • @sir_pronoun
      link
      English
      411 months ago

      I keep being surprised by how much the thought of wsl disgusts me