SOLUTION FOUND
- When the charge is above the BIOS-set maximum, whether due to the battery life saver BIOS setting or due to manually setting the maximum lower than the current charge, the EC charge controller will set the charging state to
DISCHARGE
, which acts exactly as if you’d physically unplugged the device, putting it into a low power state. - You can resolve this in two ways:
- turn off the feature and set the maximum charge to something lower than 100% (I’ve picked 70%). This will generally prevent this state from getting triggered in this way
- When gaming, use
ectool
to manually change the charge state toIDLE
by runningsudo ectool chargecontrol IDLE
. If you do this, just remember to set it back toNORMAL
afterwards to allow the battery to charge back up to full.
ORIGINAL POST:
I’m hoping that someone else can reproduce this, as I finally have enough information to accurately and consistently reproduce this myself.
Hardware: FW 16 with dGPU and the 7940HS mainboard
RAM: 64GB 32x2
SSD: 1TB SSD, WD Black (purchased with FW)
OS: Bazzite (but reproduced on Fedora 41 Live USB as well)
When gaming, if the maximum charge is above the BIOS set maximum (I’ll get to how this happens in a minute), then the iGPU and dGPU wattage drops drastically, causing low FPS and other issues even outside the game. I have had this issue since the latest BIOS 3.05 update, but only recently figured out what exactly was causing it, as it appeared to be totally random (it’s not).
Straightforward steps to reproduce:
- Charge laptop to 100%
- Set the maximum battery life to something lower (i.e. 80%)
- Play a game (in my case Minecraft with shaders), basically something to “push” your system hard.
- very shortly, you should experience lag, low FPS, programs crashing, and possible audio glitches. Here’s a video of what happens to me under these circumstances: https://youtu.be/LsLGI1YMoW0
- The instant that the battery reaches the limit you set (80% in this example), the glitch will suddenly disappear and stay gone
Here’s why it appeared to be totally random:
- I had the maximum charge set to 100%
- I had the battery life saver enabled (which it is by default)
At first it was extremely random. It would sometimes happen multiple times a day, and sometimes would disappear for days on end. I finally realized that one thing was consistent, though it took me months to realize: unplugging the laptop would cause this to happen, and if it stayed plugged in for long enough, it disappeared.
Why did this cause this issue? Basically, with the battery saver enabled, every so often, the maximum charge threshold will be reduced by some amount. Maybe 5%, maybe less, I’m not sure. For a brief period of time after that reduction occurs, the laptop will be above the maximum charge, causing the glitch for however long it takes to drop the charge by that amount. If you play a very power-hungry game, this will be extremely short or even happen so fast it doesn’t visibly occur at all. However, if you play a game that isn’t all that power hungry, you might actually notice it due to the power dropping slower.
This happened primarily in Balanced and Performance profiles, but much more infrequently in Battery Saver. I believe this is because battery saver is battery-aware and that somehow interacts with whatever’s at the root of this issue.
I have been in contact with FW support since February, and I want to have a single point of reference for all of this information going forward, so here are all of the symptoms and non-symptoms I noticed and what I believe that rules out.
- Software/OS: I have reproduced this on Bazzite and Fedora 41 Live USB. I don’t have Windows, so I haven’t tested that. It may be specific to Linux, but I don’t know. Since it presents itself as a BIOS thing, I doubt it.
- Thermal Throttling: All thermals are well within acceptable limits before, during, and after the issue
- RAM Throttling: Only 20% of my total RAM is ever in use during this entire process
- CPU Throttling: This one is interesting. When playing the game, the CPU cores are as expected. One core is more used than the others, and the rest are mostly unused due to games being single-threaded. However, you’ll see in this video I took that during the issue, in certain situations, all CPU cores will suddenly go completely maxed out, even though the game is single-threaded. Mega weird, and I don’t know what causes this, but I do think this is why other programs (like my audio mixer) crash when this happens.
- Battery Issues: As mentioned above, somehow the battery level is responsible. I don’t know why, but when the battery level is above the BIOS-set maximum, the issue occurs for the entire duration of time that it remains above the set value. It’s not specifically a high-power or low-power issue, simply being above the set value. Basically, I don’t think this is a TDP issue.
- Problematic RAM: I tried a ram shuffle at Framework Support’s request, but that didn’t have any affect
- Problematic SSD: I have reproduced this on two different SSDs and one Live USB
- Disk encryption: I have tried this with and without disk encryption
- Expansion Card Issues: I can reproduce this issue both with and without any expansion cards plugged in.
For a while, I thought this only occurred with Albion Online, which sent me into a wild goose chase tracking down whether it was Albion’s fault. However, my hypothesis is that because Albion is not a power-hungry game, the battery spent more time being above the maximum charge like I mentioned before, while games like GTFO would drain that amount much more quickly, making it less likely for the bug to trigger or simply to resolve itself so quickly it wasn’t noticed.
If anyone is able to reproduce this (or better yet, if you’ve found a proper fix), I would be extremely grateful, as I worry that there may be a hardware issue occurring making this unique to my machine.
If you have seen this on your machine, I have a workaround for you that is perfectly acceptable!
- Turn off the battery lifetime saver in BIOS
- Set the maximum battery life to something lower than 100% (I chose 60%, but really anything should work)
For some reason, being set to 100%, even with battery life saver off this issue occasionally occurs. I don’t know why.
I will continue to update/edit this post with everything I’ve tried as I attempt more things. Since I have found quite a good workaround though, they likely won’t be frequent.
I have opened a bug report, as this seems likely to be a BIOS bug: GitHub · Where software is built