Extremely weird dGPU power behaviour on 140W chargers (moved)

I apologize that you made a purchase based on my bad info. I probably wrote down the wrong thing in the rush to join my friends in spreading managed democracy!

I just re-checked with four cables I have and both 240W cables from UGREEN and Cable Matters exhibit the stuttering issue. I noticed that both cause the system to constantly switch between charging and discharging.

Only when I switch to lower wattage cables does it stop, however with reduced performance and battery discharge. Oddly, while both of these are supposed to be 60W cables, one discharges at ~30W (another Cable Matters one) and the other just ~6W (Anker), both around the same FPS.

Written on the brick has voltages supported all the way up to 28V. I’m assuming it’s somehow getting stuck at a lower voltage, or switching between them for no reason? I can’t seem to figure out what it’s actually charging at, although I read somewhere that I need to actually have an inline meter to accurately tell. I think I’ll be picking up one and doing some better testing.

Here’s the links from my order history to sanity check:
https://www.amazon.com/gp/product/B0CCVPB4PC (UGREEN 140W+20W brick)
https://www.amazon.com/gp/product/B0BT8HPLS4 (Cable Matters 240W cable, stuttering)
https://www.amazon.com/gp/product/B09PB8DJ28 (UGREEN 240W OE cable, stuttering)
https://www.amazon.com/gp/product/B09G5S9T6V (Anker 60W cable, no stuttering, ~6W discharge)
https://www.amazon.com/gp/product/B0BT8HPLS4 (Cable Matters 60W cable, no stuttering, ~30W discharge)

At this point I’d just pick up the official PSU for gaming, and keep around the multi-port brick for travel. I’ll probably end up picking up a true 240W (or at least something higher wattage that 180W that’s multi-port).

I think your actual problem is the power supply. Note how the cables that work are 60W cables, which AIUI are the highest wattage allowed without chips in the cable. So the FW doesn’t request more than 60W, and the PS doesn’t expect to supply more than 60W.

But once you use a 240W cable then the FW will request maximum available, the PS will try and supply up to its maximum, but it sounds to me like you have found a problem that plagued FL13 machines where the framework didn’t ramp up the current but tried to draw maximum current straight off causing the power supply to go into overcurrent mode.

So have you upgraded the BIOS in your FL16 to 3.03? I suspect if you are still on 3.02 that the problem that plagued 13" machines still exists.

I am on the latest bios version, using the official flash tool from a usb stick to upgrade - and i do have this behaviour. Notably, all cables work fine on 60W and 100W ports - even of that charger. Only the 140W port is affected. I’ll test if the cable that doesnt show the issue can pull 100, or more, watts later.

Finally on Summer break, here’s the results from the power meter playing HD2 (standing in the spaceship):

I am running BIOS 3.03.

Cable Matters 60W, actual: 19.52V@2.69niceA, 52.5W
Anker 60W, actual: 19.2V@4.47A, 85.82W

Both of these are extremely stable readings, and fps is a flat 71.

The UGREEN 240W cable starts at 100W(23V@) and then raises to ~127W(27.38V), but after few seconds to a minute or so the meter cuts out and triggers power disconnect/reconnect sounds. This doesn’t happen when it’s plugged in w/out the inline meter.

The Cable Matters cable seems to disconnect much more infrequently (5+ mins if at all) but that might just be lack of sample size. The voltage is much less stable when it doesn’t disconnect, although fluctuations are around .5V, and sometimes 2V drops.

This meter Plugable USB-C Voltage & Amperage Meter for High Power Devices (240W E – Plugable Technologies doesn’t have a super high refresh rate, so I could sacrifice a cable and hook up an oscilloscope. Ideally there’s something in software to inspect what events the system experiences, but I can’t seem to find anything like that (at least on Linux).

@Woof did you ever actually try doing this?

I have amdgpu.ppfeaturemask=0xffffffff in my kernel parameters, but when I try to change this file even with root privileges, I get permission or disk full errors.

did you ever actually try doing this?

Yes, and, as mentioned, it would not let me lower the power target, only increase it to 120W. (this however did work fine)

But i’ve been testing with different 140W, 100W and similar chargers and i had everything from “charging stops entirely” after one particular 140W charger to my usual behaviour - and the one “working” cable is only going to 100W.

My current conclusion is that FW16 with dgpu does not work well with any 140W charger under load and i have to stick to the perfectly fine 100W port on my charger - which just limits high load scenarios to 3-5 Hours, depending on power draw, as it has to drain battery (and once it forces charging at 30% it dips in performance quite a bit).

Looking very forward to a future 240W charger being available personally.

Hey there, @Woof–yeah, it’s been a bit, I forgot I asked that. I wish I had read your message better, as I ended up finding the same things you learned. And thanks for some of this other context about the power block, as I’m super interested in that 240W to get moving as well.

Concerning lowering power1_cap, I did talk to folks (including Matt in this thread, indirectly) from the support ticket I made:

We use and recommend no power customizations per AMD specifically. AMD’s official recommendation is PPD which is enabled out of the box on Ubuntu 24.04.
If you’d like to try out other parameters, you are welcome to, but regrettably this falls outside of our support.
Appreciate that you have fiddled and discovered that 100W-120W is applicable, we will try to pass word and see if this can be lowered, but can’t promise anything.

I exchanged an email with AMD GPU folks and it turns out, “The driver limits the power caps to what was validated by the AIB or OEM.” So the responsibility is on Framework or their dGPU vendor to create a firmware update or a change to the dGPU’s PP table for this. A sufficiently brave user may be able to do it with the amdtweak tool, or study how it works.

As you might have noticed in the post too:

… yeah i’m aware of that for a while, since it also means i’d have to recompile my kernel for my tower all the time, where my previous RX480 (Now 7900XTX) saw significant efficiency gains from lowering it. That and the default enforced varibright (atleast that can be disabled with a kernel arg) since kernel 6.9 are two very sad defaults pushed from Amd.

lol it sounds like you just wanted to go point by point and make clear you already knew everything I said. I figured some details about Framework’s “statement” and the pp table would be useful.

Or, yeah, go ahead and recompile your kernel every update just for the sake of a lower power cap.

I just wanted to chip in since I have the same problem with the same charger and cable(s). Problem occurs with demanding games in both windows and linux.

The problem is an extremely bad stuttering / hanging about once per second that makes games completely unplayable, despite a decent average framerate.

I also have a 140w ugreen USB-C charger, and have tried the cable that comes with it (240w) and a 240w Cable Matters cable and have the same problem with both.

For now my only solution seems to be using the igpu until I can get a 180w framework charger, or better yet 240w chargers finally become available.

Very disappointing that I get better performance with a lower wattage charger (60 and 100) than I do with the 140w charger. It seems to be at a problematic level of power draw where the laptop is constantly cycling between a higher power mode and a lower power mode (based on system reported battery charging rates) and the constant transitioning ruins performance.

If anyone comes up with a solution besides using the OEM charger (which is backordered for over a month) I will be grateful.

Bumping this. I was totally unaware of the problem until I tried playing AOE4 using the dGPU and my “travel” brick, which is an UGREEN Nexode X 160W (it does 140W single port).
dGPU stutters as hell on port 1 (140W), using port 2 (100w) it stabilizes but at lower performance. I might try other chargers/cables from Amazon, maybe a weird voltage negotiation issue between FW16 and that specific model?

UPDATE: I made some tests using a wall power meter.

  • Testing suite: Age of Empires 4, Furmark and 3D Mark Steel Nomad, equiparable results. Metrics by HWInfo and AMD Adrenaline.
  • Charger: UGREEN Nexode 160W (140W on C1 port, 100W on C2 port)
  • Framework 16 with dGPU (duh).
  • Power settings: Windows “balanced” or “maximum performance” does not seem to alter the behaviour observed in 140w charging. Same with the Control Panel options, PCI-E power saver etc. No combination of Windows’ setting alters this issue.
  • Cables: Also, the same behaviour can be observed with 4 different cables, all newish and rated for 240W: stock Framework USB-C cable, UGREEN cable, a CableMatters and a Magtame one.
  • Software: System running Windows 11 Pro 23H2 (22631.4037) , debloated with Atlas. Other users reported the same issue with stock Windows.
    Also, this problem happens with both the AMD driver from Framework Bundle (23.40.18.02) and the latest one installed manually later (24.7.1).

Scenario 1: laptop plugged in the 100W port of the charger (C2).
The charger pulls around 100W of power, as expected.
The GPU (from AMD tracking) pulls 50W, very stable. Micro stutters at 0%. FPS are stable. Everything is fine. Putting the laptop in “high performance” from Windows makes it pull extra power from the battery to feed the 7700S, in this case the laptop shuts down after 1h30 of gaming. Otherwise the battery stays at 50W and the laptop keeps charge.

Scenario 2: laptop plugged in the 140W port of the charger (the main one, C1).
The charger (at the wall) oscillates between 100-110-120-130W in a (seemingly) random pattern.
The laptop runs horribly. The micro stutter rate spikes to 80%, the dGPU pulls 80W, a second later 30W, then 50W, then 20W, then 80W again, following the trend we see on the wattemeter at the plug. This happens in both “Balanced” and “High performance”.

Scenario 3: same configuration as Scenario 2, but sometimes, while under load, the laptop chooses to give only 25W to the dGPU. The battery is now stable (no charging or discharging) in every windows power configuration. Unplugging and re-plugging the cable COULD shift this scenario to Scenario 2 again.

Scenario 4: laptop plugged with the stock 180W charger. The dGPU goes to 80W and 100W in “Balanced” and “High performance” modes respectively. Runs stable and without problems.

It looks like the laptop has some problems with the 140W negotiation, and keeps falling back to a lower one but then pulling full power again, in a neverending cycle of stuttering.

This is what I sent to support, we’ll see if and how they answer. I really hope a BIOS update could fix this, it would be nice to use the full 140W, on paper everything should work.
I’m waiting for a Baseus 140W charger to arrive to do further testing.
EDIT: sorry for bad english, not my first language.

FINAL UPDATE
Support confirmed that nothing is wrong with my FW16.
I therefore ordered a Baseus 140W charger, and when it arrived… Oh boy.
The performance was super consistent. GPU power draw around ~70W in balanced, 80W in high performance. This charger just… Works. No weird negotiation issues, nor swinging power draw. It just works as you’d expect it to. Not the full power you get with the 180W stock charger, but close enough.
I’ll probably cross-post this in the FW16 main thread, so people don’t waste 110$ on a charger that can’t do it’s job well enough.

TL;DR: DO NOT BUY UGREEN NEXODE X 160W. IT WILL NOT WORK WELL with the dGPU

Is this just expected behavior, a bug from UGREEN, or something else?

If it’s the charger’s fault I’d like to bring this up with their customer support and maybe write a review so others know it may be incompatible with some devices like ours.

Definetly not expected. The Baseus 140w works wonders.
I’m not knowledgeable enough in USB PD to tell, but it looks like they fucked up the negotiation process. If not the voltage negotiation, my money would be on overcurrent protection. The sudden power draw by the dGPU is seen by the charger as a higher than normal current spike, so it falls back down to a lower output. Again, this is pure speculation.

So I think I might have another piece to the puzzle.

In BIOS there is a setting which switches PCIE to 3.0 (from 4.0) when on battery for power saving. If I disable this setting, I don’t get any more hitching with my UGreen 140w charger.

My theory is that the laptop firmware is switching into battery mode (PCIE 3.0) since the charger can’t keep up. Once it switches it has a lower power draw due to the switch to PCIE3.0, and also due to the transition dropping framerates. With the lower power draw it is no longer discharging the battery and switches back to PCIE4.0 and the cycle repeats.

It may be that the UGREEN adapter is just right on the limit of what is needed to run the laptop all-out which is why this transition happens repeatedly and causes unplayable FPS. That would also explain why it varies with different types of games and even windows power settings.

If someone else could try disabling this setting and confirm their issues went away it would help me confirm my suspicions.

Can confirm, got that one to verify and it works completely stutterfree as long as the machine is in powersave mode, and atleast mostly okay on balanced.

I’d still assume that Framework needs to do something to fix their PD firmware (since other devices work), but atleast it works with the Baseus.

Nice find! Quickly tested with my Baseus and my Ugreen Nexode.
Having it OFF makes the Ugreen more stable, pulling >130W while under load (AoE IV).
It’s not perfect tho, the stutter is still there… FPS jump all over under heavy load. GPU around 60-70W but still swinging.
Swapping the Ugreen for the Baseus gives the expected result, 0.0% stutter rate, rock solid fps and watts pulled. Didn’t have time to try the impact on battery life, but should be easy to test.
TL;DR: having it off gives more stability, but does not solve the issue completely with “incompatible(?)” 140W chargers.

I recently came into possession of an AOHi 140W charger and decided to fire up Starfield and jump in circles in town.

If I jump in circles in town on battery, I get around 40 FPS, smooth enough.
If I use a 100W cable, I get around 45 FPS, smooth enough, drawing around 80W.
If I use a 240W cable on the 100W USB-C port, same result as the 100W cable.
If I use a 240W cable on the 140W USB-C port, FPS drops to some disgusting mid-20s while power draw hangs around 120W,
-OR-
power draw fluctuates, with FPS around 30, still worse performance than on battery (probably when the battery’s fully charged)

Am I seeing the same behavior as the rest of you in this thread, or is this a different thing?

(edit) In powersave mode, the 140W charger stabilizes around 90-100W drawn and around mid-40s FPS. Balanced or Performance modes have the lower performance with the more wildly fluctuating current. I can still get some of the same kind of bad behavior in powersave mode, just a lot less, and it’s not constant.

I didn’t notice a difference changing the PCIe 3.0 BIOS setting.