• Support
  • Optimizing Solus for Battery Life

Hi folks,

I've pretty much always used Solus with a desktop PC. After installing it on my laptop, I'm pretty much watching the battery drain. Looks like I'll get about an hour and a half at this rate, where I usually could get at least 4 hours of solid usage on Windows.

My question is: how do I optimize my Solus install for improved battery life? Tips? Tricks?

    Some hardware info for you folks:

                -```````````                  marcus@mellor-xps 
              `-+/------------.`              ----------------- 
           .---:mNo---------------.           OS: Solus x86_64 
         .-----yMMMy:---------------.         Host: XPS 15 9560 
       `------oMMMMMm/----------------`       Kernel: 5.15.77-219.current 
      .------/MMMMMMMN+----------------.      Uptime: 1 hour, 2 mins 
     .------/NMMMMMMMMm-+/--------------.     Packages: 810 (eopkg) 
    `------/NMMMMMMMMMN-:mh/-------------`    Shell: bash 5.1.16 
    .-----/NMMMMMMMMMMM:-+MMd//oso/:-----.    Resolution: 3840x2160 
    -----/NMMMMMMMMMMMM+--mMMMh::smMmyo:--    DE: Budgie 10.6.4 
    ----+NMMMMMMMMMMMMMo--yMMMMNo-:yMMMMd/.   WM: Mutter(Budgie) 
    .--oMMMMMMMMMMMMMMMy--yMMMMMMh:-yMMMy-`   Theme: Plata-Noir [GTK2/3] 
    `-sMMMMMMMMMMMMMMMMh--dMMMMMMMd:/Ny+y.    Icons: Papirus [GTK2/3] 
    `-/+osyhhdmmNNMMMMMm-/MMMMMMMmh+/ohm+     Terminal: gnome-terminal 
      .------------:://+-/++++++oshddys:      CPU: Intel i7-7700HQ (8) @ 3.800GHz 
       -hhhhyyyyyyyyyyyhhhhddddhysssso-       GPU: NVIDIA GeForce GTX 1050 Mobile 
        `:ossssssyysssssssssssssssso:`        GPU: Intel HD Graphics 630 
          `:+ssssssssssssssssssss+-           Memory: 1519MiB / 31959MiB 
             `-/+ssssssssssso+/-`
                  `.-----..`                                          

    Turn off BT and Nvidia if possible. Install TLP can help with deactivating these and other power drains. Note it's important to read the man: or one of the many Web based tutorials. I use it on my laptops.

      infinitymdm My question is: how do I optimize my Solus install for improved battery life? Tips? Tricks?

      There are a ton of threads on this issue.

      The bottom line is that you can improve battery drain on Linux, but it is not going to get to the point where it is Windows-equivalent. TLP can help, as Cloak notes (some users have experienced significant gains, others not), but the Linux kernel does not have the tools to fine-tune laptop power use in the way that Windows does, constantly adjusting based on usage, so most users find that Linux still drains the battery faster than Windows no matter what you do. You can improve things, but don't expect miracles.

      I did a lot of testing a few months ago on my Dell Latitude 7390 laptop (Intel Core i5, Intel 630 onboard graphics, 16 GB RAM, 500 GB M.2 SATA). In my case, I can get Solus to about 72% of Windows battery life, and that's the best I can do on that laptop. I haven't done that same level of testing on my Dell Inspiron 11-3180 (AMD A9-94203e, R5 onboard graphics, 4 GB RAM, 128 eMMC), but the result seems to be about the same. I don't like the reduced battery life, but I've learned to live with it as a cost of running Linux.

      I don't use NVIDIA because I don't need a discrete GPU, but I have read that NVIDA GPU's use a lot of power in comparison to onboard graphics. If you need the power of the NVIDIA GPU (e.g. games or intensive graphics work), you'll have to live with the power drain. If not, as Cloak suggests, you might see significant improvement using Intel's onboard graphics instead of NVIDIA.

      Because Linux uses more battery power than Windows, you also might find, as I did, that your laptop runs hotter using Linux than it does using Windows. Because you have a reasonably modern Intel-based laptop, the thermald daemon will help keep heat under control. In theory, this should also reduce battery drain, but my experience is that thermald did not make a significant difference in this respect. Thermald upped the ante from 72% to 74%, as I recall. Not a big change, but every little bit helps, and there is no reason to run hotter than absolutely necessary.

      I have 2 laptops, plasma with the snap auto-cpufreq and budgie with tlp from solus repo and the flatpak TLPUI for easy setting.
      I ended like that after testing both solutions on both laptops, tlp on budgie laptop doesn't make big difference but it makes my fans work fine and cooling better than auto-cpufreq. On plasma laptop, auto-cpufreq seems to do a better job than tlp.

      infinitymdm My question is: how do I optimize my Solus install for improved battery life? Tips? Tricks?

      Another thought: Check your display brightness settings. You may well have had Windows set to a lower brightness level than the default level set when you installed Solus. Even a 10% difference in the brightness level can make a marked difference in battery life. While you are at it, check your power management "on battery" settings (e.g. "turn display off after ..."), and set them to the most efficient you can tolerate in daily use.

      Edit/Update: Numerous articles offer tips and tricks. For the most part, the articles offer identical advice. You might want to look at one or two as a reality check. Another consideration: Check the apps you are using (some browsers, for example, are notorious power hogs, others less so because they use sleeping tabs and so on) and check your startup and "run in background" settings to cut out applications that you don't need except when you need them.

      Just a note for users that having that problem and happen to have a hhd switching to ssd will help
      but its getting to be a thing of the past. (but thought I would mention it)

      • [deleted]

      • Edited

      Instead of TLP I prefer using Powertop. It has an auto-tune option but myself I've generated a html report via powertop --html, looked through the report and what it suggests.

      I've ran into TLP suspending things like my USB mouse and keyboard, despite that those kind of devices should be blacklisted in TLP.

        infinitymdm My question is: how do I optimize my Solus install for improved battery life? Tips? Tricks?

        A year or so ago, I explored using Solus on a laptop. At that point, I was getting 60-65% of Windows battery life. I decided at that point not to use Solus (or Linux in general) on laptops. When I decided this summer to use laptops as my primary Solus computers, I dug deep, made changes to the system and to the way I use the system, and now am getting 70-75%.

        I experimented with both TLP and powertop, didn't see much improvement, but read about issues with those apps and decided to try to do without either. Basically, with the exception of thermald, I use my head to reduce power drain.

        Briefly, let me tell you my "tips and tricks":

        (1) I don't use Bluetooth, so I disable Bluetooth.
        (2) Because I am using a browser most of the time, I focus on setting up my browser (Edge) for maximum efficiency:
        (a) "Efficiency Mode" is activated.
        (b) I turn off "Continue running background extensions and apps when Microsoft Edge is closed."
        (c) I use "Sleeping Tabs", set to sleep after 5 minutes of inactivity.
        (d) I keep track of the number of tabs I have open, keeping as few tabs open as conditions warrant.
        (e) I avoid "power hog" websites (like AARP's games page) that use a lot of ads when I am on battery.
        (f) To the extent that I open "power hog" websites, I shut them down as soon as I am done using them.
        (3) I adjust display brightness to the lowest level that works for me in the applicable lighting conditions.
        (4) I adjust power settings for battery use to shut down the display quickly and put the computer to sleep quickly.
        (5) I set "start up on boot" to open as few apps as I can consistent with my use of the computer.
        (6) I take a look at regularly used apps that to find "power saving" options and use those options.
        (7) I close apps after I'm done using them to minimize the number of running processes/services.
        (8) When I know I'm going to be away from the laptop for 30 minutes or more, I shut it down.

        In other words, just a lot of small things. I no doubt have developed other habits that I now use unconsciously and didn't think to list, but the bottom line is that I use my Linux laptops like I used my gas hog 1958 Edsel when I was a teenager, was always short on gas money but wanted to get to town.

        • [deleted]

        infinitymdm The commands it suggests aren't permanent though, so one needs to craft a script and a systemd service to apply them at every boot.

        One issue I found on Solus with tlp is that there are no packages for the kernel modules acpi_call and tp-smapi in the Solus repository. This seems to limit the battery management capabilities.

        ❯ sudo tlp-stat -b
        Passwort:
        --- TLP 1.3.1 --------------------------------------------
        
        +++ Battery Features: Charge Thresholds and Recalibrate
        natacpi    = active (data, thresholds)
        tpacpi-bat = inactive (kernel module 'acpi_call' not installed)
        tp-smapi   = inactive (kernel module 'tp_smapi' not installed)

        I managed to locally build the acpi_call for previous 5.x kernel but not fully sure if it provides significant improvement. Need to rebuild it now for new 6.x kernel.
        Could not compile the tp-smapi module because the compiler complains that the kernel is not supporting PIC mode.

          palto42 One issue I found on Solus with tlp is that there are no packages for the kernel modules acpi_call and tp-smapi in the Solus repository. This seems to limit the battery management capabilities.

          Do you actually know that this limits the battery management capabilities? Or is this just your assumption based off the output of that command? I think those kernel modules are options, so long as one of them is present (and natacpi seems to be) then it's sufficient.

            ReillyBrogan As far as I understand from tlp documentation, the acpi_call and tp_smapi are mainly required to properly calibrate the battery level, so not really improving power consumption. But incorrectly calibrated battery levels may provide wrong impression of the power state and consumption.

            Just re-compiled it and this is the output with module available:

            ❯ sudo tlp-stat -b
            --- TLP 1.3.1 --------------------------------------------
            
            +++ Battery Features: Charge Thresholds and Recalibrate
            natacpi    = active (data, thresholds)
            tpacpi-bat = active (recalibrate)
            tp-smapi   = inactive (kernel module 'tp_smapi' not installed)

              palto42 I did some more research and you're right, one of those kernel modules is required for "recalibration" on Thinkpad devices. However, kernel 5.17 added recalibration support for natacpi though it needs a newer TLP to activate it. I'll look into updating it hopefully this sync cycle and after that point everything should work on your device.

                7 days later

                ReillyBrogan

                ... it needs a newer TLP to activate it. I'll look into updating it ...

                I tried latest TLP 1.5.0 locally and it works fine with current kernel using natacpi.
                To build the new version I had to change the patches applied for version 1.3.1 and during this review I was wondering why the SOlus packages modifies lots of the default seetings in /etc/tlp.conf?
                As per this older post [Tip to improve battery life]Amazing battery after setting some tlp options! it seems that this modifications are not optimal anyway. Unfortunately the links to the settinsg file in that post currently doesn't work, so not able to compare. But as I checked the recent Ubuntu TLP package, I found that this just provides the unmodified default tlp.conf.
                So shouldn't the Solus tlp package also better stick to the defaults and remove the patch?

                8 days later

                Having messed around with TLP settings and CPU governors on an Intel-only laptop, I began to suspect the real culprits were budgie-panel and especially budgie-wm. They consistently demand more CPU than the equivalent components of lightweight DEs like XFCE (tested Zorin OS Lite 16.04), even when idling. I haven't tested other Solus MATE or Plasma to see how they fare in comparison.

                Of course there are also third-party applications that may be the cause of diminished battery life; of browsers I've found Chrome to be the worst of these.

                  • [deleted]

                  laurker In that case I would think MATE is your best bet.

                    laurker Having messed around with TLP settings and CPU governors on an Intel-only laptop, I began to suspect the real culprits were budgie-panel and especially budgie-wm. They consistently demand more CPU than the equivalent components of lightweight DEs like XFCE (tested Zorin OS Lite 16.04), even when idling. I haven't tested other Solus MATE or Plasma to see how they fare in comparison.

                    You might want to take a look at the Gnome system monitor. I've noticed that with htop, budgie-wm is typically around 5-10%, but when I look at CPU usage with Gnome system monitor running, CPU usage across all the cores fluctuates from 30-50% utilization.

                    [deleted] In that case I would think MATE is your best bet.

                    Do you have any experience with MATE in a laptop? Once I saw on a forum (I thought I had bookmarked it, but can't find it now) someone claim that he had had a better battery experience with MATE than with XFCE, despite the fact that XFCE is supposedly lighter.

                    I have a laptop with Solus KDE, and sometimes I think I should move to Solus MATE, and save more battery.