Battery Upgrade

This. This is the real beauty of USB C PD.

Another thing to consider is that by not soldering down components like RAM and storage there are power efficiency losses there.

I get 5-7 hours of real world use with mine, and that is MORE than enough given that this laptop is made to last and improvements will be coming down the road.

3 Likes

Yeah I already have a portable power pack, which is what I am using, but was just hoping for other solutions. my framework laptop usually lasts 5-6 hours on idle, maybe about 4 hours light use, and 2-3.5 hours when being used running an actual program, watching videos or running a piece of moderately intensive software.

4 hours of light use sounds low to me. I’d suggest taking a look at any background apps that are unintentionally causing the CPU to spin up.

Is the 4 hr light use on windows or linux?

Windows, and yeah I’ve been looking at background processes and nothing seems out of the ordinary

make sure your battery settings didn’t bug out: this might be an option on this laptop it might not. right click the battery icon in the system tray, select “Power Options” which ever power plan you have selected, choose “Change plan settings” then choose “change advanced power settings” if you could send a screenshot of that window that would be great. some laptops don’t have all the advanced options and you are looking for the “Processor Power Management” drop-down. if the minimum processor state is 100% there’s your problem

I know the settings your talking about, and I have configured them slightly. The weird part is that some battery settings aren’t appearing there, despite appearing on my desktop I built. I’m attaching some screenshots.







Those settings are hidden by default and you need to edit some registry entries to re-enable them. Here’s how to enable the “Minimum processor state” option (and here’s the one for maximum).

3 Likes

I never knew that. I just enabled it, but it looks like it already set itself to 5%

So in other words, I got stupid lucky on my ASUS laptop that this was just available from the start? thanks for the tweak instructions so I can find this again!

1 Like

For the users who want to tweak as many settings as possible I feel like I should share the script I’ve been ripping off for a while. This is for Windows only, Linux users should look at this thread here:

Back to the topic on hand, it took me a bit to find OG thread for the Windows thing. Here is the thread link and the powershell code below that. I saved it out as a .ps1 script to run from admin, but for the non-powershell users out there feel free to open powershell as admin and copy paste the script in and run from the terminal. Selecting everything into a 2 will make it show up in your advanced power options if the OS allows it. If it doesn’t work at all, remember to re run script as admin and it should work for you.

Edit: Thanks to @john_doe and @Tyler_Quinlivan for pointing out and fixing a bug with how the script gets pasted and formatted.

------------------------ script below ------------------------

Function Toggle-PowerSettingsVisibility {
$Title = 'Select option(s) to toggle visibility'
$PowerSettings = 'HKLM:\SYSTEM\CurrentControlSet\Control\Power\PowerSettings'
@( [PSCustomObject]@{
Attributes = 0
PSChildName = '{ -- No Changes -- }'
Name = ' "Safety" row to clear selection'
} ) +
@( Get-ChildItem $PowerSettings -Recurse | ? Property -contains 'Attributes' | Get-ItemProperty |
Select Attributes, PSCHildName,
@{ N = 'Name' ; E = { $_.FriendlyName.Split(',')[-1] }} ) | Sort PSChildName |
Out-GridView -Passthru -Title $Title | ForEach {
$Splat = @{
Path = Resolve-Path "$PowerSettings\*\$($_.PSChildName)"
Name = 'Attributes'
Value = -bNot $_.Attributes -bAnd 0x0000003
}
Set-ItemProperty @Splat -Confirm
}
}
Toggle-PowerSettingsVisibility

5 Likes

@Freakous I highly recommend you try that script. You will be amazed how many things your desktop hasn’t enabled either.

1 Like

My old laptop seemed to glitch out later on in it’s life where the minimum processor state on battery was 100%. IDK why. I decreased the maximum processor state on battery to something like 65% on that old dual core and tiny 37Wh battery and I managed to get 5 hours of battery, which gave new life to the old dog for not a massive performance hit for the work I was doing. Definitely going to use this on my Framework when it comes in.

@Christopher_Doman That’s likely tied to thermal throttling. By default, Windows waits to see a processor state of 100% before going into turbo. That means a processor state of 99% can stop turboing from occuring (what I use on my work computer to stop it killing itself). When it turbos, the die generates way, way more heat than on base clock because it also pumps up current draw significantly. That likely led to your old laptop thermal throttling and aggressively downclocking. This would potentially look like it was going on the fritz every time it tried to aggressively boost. That can be rectified in software like you did (downclocking the CPU), or oftentimes without reducing performance by something as simple as taking apart the whole thing, cleaning out all the dust in the fans and heat sink, repasting the crusty old TIM on the CPU, and reassembling carefully. I would encourage you to give that a try on your old laptop - it sounds like you have a new framework coming in soon, and it’s a valuable skill for laptop owners :slight_smile: . Really helps to extend the legs on old devices, and if it works, you could probably use your old machine as a backup, donate it to a good cause, or to a family member.

If Line.dock gets their compatibility improved it could be an amazing option to go with the Framework.

Short Story: Get at least a 30W (20V at 1.5A) USB-PD power bank. Most of them have a maximum 45W or 65W rating (20V at 2.25 or 3.25A), but make sure it have 20V output. Capacity is at least 10Ah and up to 30Ah (at 3.7V). Max capacity (allowed by aviation regulation) is 100WH, which is about 27Ah at 3.7V.

Long story:
In 2013, Dell ship their 13 inch XPS with a 47WH battery. In 2018, this same 47 WH have upgraded to a 65WH. Battery technology improvement. Also, it’s a 7.4V, 4-cell battery (2series of 2 parallel), which is quite interesting because most other laptops run a high-voltage solution (e.g. 4 in series at 14.8V) or a large-cell 3-cell 11.1V approach.
The other half of the story, is that framework laptop battery is indeed quite small. Because they need to make room for all the slots for all the modules (external connectors included), which takes a toll on the amount of space the battery have.

I’m not sure how many WH is the battery, but a good guess is that it’s around 50WH rather than 60WH. And typically, a 99WH battery (limit is 100WH) can get you past 12 hours of office, which is way more than needed.
Tricks to reduce power consumption include dimming the display, sleeping the computer when not needed, turning off the display, closing unnecessary apps (and stop unnecessary background services), reduce memory speed (if possible), slowing the fans, make sure the CPU temp is low, etc.

@Frosty I’m having trouble running your script, i know little about PS , I’m not sure what to do here, and this is what error I get


Something is wrong with the formatting. I found the script on some website and had more luck. I’ll try to dig it up when I get home.

@john_doe Try this, worked for me on a desktop:

   Function Toggle-PowerSettingsVisibility {
        $Title         = 'Select option(s) to toggle visibility'
        $PowerSettings = 'HKLM:\SYSTEM\CurrentControlSet\Control\Power\PowerSettings'
        @( [PSCustomObject]@{
                Attributes  = 0
                PSChildName = '{ -- No Changes -- }'
                Name        = ' "Safety" row to clear selection'
        } ) +
        @( Get-ChildItem $PowerSettings -Recurse | ? Property -contains 'Attributes' | Get-ItemProperty |
            Select Attributes, PSCHildName,
                   @{ N = 'Name' ; E = { $_.FriendlyName.Split(',')[-1] }} ) | Sort PSChildName |
        Out-GridView -Passthru -Title $Title | ForEach {
            $Splat = @{
                Path  = Resolve-Path "$PowerSettings\*\$($_.PSChildName)"
                Name  = 'Attributes'
                Value = -bNot $_.Attributes -bAnd 0x0000003 
            }
            Set-ItemProperty @Splat -Confirm
        }
    }
    Toggle-PowerSettingsVisibility

I think the issue was just that the comment markdown had borked some of the text by treating underlines as italics, etc.

3 Likes

@Tyler_Quinlivan Good catch! That seems to be it.
@john_doe use Tyler’s version of the script, he seems to have figure out how to make the script appear properly.