Exploring the Embedded Controller

Thank you for the reply! I’m not sure if what I said was clear.

I mean when I charge the laptop, the charger thats included will charge with 60 Watts power. The question is, can I modify the power of my charger so its charging slower to reduce stress on my battery (e.g. less heat and less rapid expansion).

If i limit the charge at 60% as you mentioned, it will charge with 60W until 60% charge is reached. But if I use 20W to charge it takes more time to charge, but my battery stays cooler.

It will only charge with what the battery requests, it will not charge at 60W. The 60W is just the maximum that the adapter can sustain.

The main battery ‘requests’ charge via what is called a PD protocol if there is no communication for example due to being connected to a Type A USB 3 port on a computer resort to 5V at 0.9A i.e. 4.5W.

Bascially the power supply only offers it doesn’t force the battery to charge.

The charging is done by negotiating a voltage to charge the battery as the battery sees fit, monitored by the Charging chip.

If the battery is very low 14.6 it may see if the charger can supply 20V at 3A for a short while.

When the battery reaches say 60% the voltage may be 15.4V and the request will drop the voltage maybe to 9V at 3A

Of course the battery will get warm if you both fully exploit the CPU/GPU and cause a huge drain and have the computer plugged in and the battery charging ~ then the 60W may be almost essential.

Sure using a charger that cannot provide as much power will do as you say.

You cannot modify the adapter unless it has it on the box, it cannot be done from the laptop.

My battery is set at 78% via the bios and neither the adapter or the battery get warm.

I also have a 12V car type charger that can negotiate the PD protocol or the QC3 for my Fairphone it can supply 85W.

You may be overly concerned about the battery.

Another issue is that if you use say a 30W charger that can negotiate the PD protocol it may push the adapter to the limit and if it not a classy adapter may damage it and more.

To ensure a slow charge you will require a non PD compliant charger so the computer only uses 5V at a max of 3A

1 Like

The short answer to this seems to be “no”, at least not without modifying the EC firmware. The closest thing you can do is to use a lower-power USB PD adapter, but this does introduce the possibility of draining the battery while plugged in if the computer consumes too much power. I can say from my own experience that a 30 watt adapter is fine if you’re using the machine mostly at idle or low CPU, and a 45 watt adapter is fine if you’re maxing out a single CPU core.

But more generally, taking advantage of the charge capacity (SOC percentage) limit and doing fewer charge-discharge cycles will have a much more profound impact on battery longevity than limiting the rate of charge.

Amoun, I have no idea what you mean by a “classy adapter”, but it is perfectly safe to run the Framework laptop from a 30 watt adapter that is USB PD compliant.

Without USB-PD negotiation, you may not even get 3 amps. It’s dependent on both the cables and the configuration of the charger. Using a lower-power PD-compliant adapter is a better solution.

1 Like

I had a BaseUs 65W PD QC charger and it got hot when loaded with the Framework and some plastic melted, needless to say it didn’t work well after that

Maybe PD works a lot different to QC charging. I was using a dumb 5V 2.4A supply and that seemed to draw max using my Fairphone. The odity being that although there was not QC communication occasionally it would say ‘Charging rapidly’ ?? just occassionaly :slight_smile:

1 Like

Thank you both for the further explanations.

If I understand batteries correctly a draining can only happen if the Voltage of your adapter is smaller than the Voltage of the battery.

I found the topic where the power adapter was introduced: The Power Adapter

It says its a PPS adapter, and if I understood correctly the output current can be programmed. Does this mean someone can program it in a way to be like a 30W adapter?

Ok I agree that maybe in the end this will extend the battery life not very much. I just thought that when users discuss the battery, it might be worth to also look at further details around.

While technically a correct statement for batteries in general, this is not relevant for the Framework. There is a DC-DC converter between the USB-C ports of the computer and the battery, so the input voltage doesn’t have any direct consequence on whether or not the battery is charging.

The input power system of the laptop negotiates with the power adapter to determine what amount of power (wattage) it is allowed to draw. It will then self-restrict the amount of power it draw to stay under that limit. If the laptop begins using more power than the negotiated limit, it will take the excess power from the battery so that it does not exceed its input power limit.

It’s my understanding that the Framework does not make use of the PPS mode. But regardless, it would not need PPS mode to self-enforce a lower power draw than the negotiated maximum. It would, however, require a modification to the EC firmware.

Indeed, QC works differently from PD. A compliant PD sink will never draw more than the negotiated maximum power, and in the absence of a PD negotiation, it will fall back to standard USB power signalling. This could limit you all the way down to 100 mA, or 1 A if you follow the USB 2.0 charging-only spec for shorting D+ and D- together.

1 Like

Just to update.

The battery will take what current it can get when it’s really flat and will warm a bit even with 20W…

I have just discharged my battery as much as I could and am charging it to 100% to reset the parameters for battery monitoring and to ‘stretch’ the battery.

In the first half an hour the charger got warm but the battery seemed fine.

It has taken 2½ hours to get to 95% and the last 1% took 10 min or more, there is no heat coming from the laptop.

As the battery charges the input reduces and so does the heat produced.

A 55W battery could charge to 50% in an hour if there is 60W available, maybe you can check using a 20W charger to see how much charge a completely discharged battery cab get in 1h :slight_smile:

1 Like

Update: I thought I had posted this but can’t find it.
At 96% I turned the laptop on and the remaining 4% charged in 3 min, so I think as the laptop runs from the battery the battery voltage dropped and so a higher voltage was applied forcing a higher charge rate ???

One thing to be aware of is that the state of charge percentage is always just a best guess. Within the battery there is a battery management system (or BMS) that does a process called “coulomb counting” to track how much electrical charge has entered or left the battery. This measurement process is imperfect, so error can accumulate in the reported value. Additionally, the amount of energy a battery can store will change over time (mostly losing capacity as the battery ages), so what energy level corresponds to “100% charged” will change over time.

These two factors are why you will often see recommendations to do an occasional “battery calibration” process where you allow the battery to drain all the way to 0%, then fully recharge it to 100%. This gives the BMS an opportunity to calibrate the actual capacity of the battery and correct its estimates.

Absent a full calibration, there are known points where a partial calibration can occur. Many batteries will “snap” to 100% when the battery has been sitting at its maximum allowable charge voltage and the charge current drops below a certain threshold. The battery and charger are not doing anything different, it’s just an artifact of the SOC measurement system.

1 Like

Well I can see that as I thought I explained.

I tested a few times, with no load on the battery I was sustaining 17.314V with a trickle charge of 1% in 20 minutes at 96%

Then clearly once I switch on the battery voltage depletes implying the charge for the system isn’t coming from the charger, which makes sense as the chargers voltage has to be managed and before that happens the drain is from the battery hence lowering it’s voltage, which ups the input.

At this point there is no coulomb measurement just a voltage one so a higher voltage is applied and more current gets to the battery…

I’m not sure of this but cannot think of any alternative reasoning. I may well ask Framework about this.

Y’all might be better served by discussing this in a separate thread, since it’s diverged quite a bit from a discussion about the embedded controller. :slight_smile:


Hello! Do you know if the ectool in https://github.com/DHowett/framework-ec work with 12th gen mainboards as well?

I came across this thread looking to see if I could control battery levels in user-land on 12th, and it’s not entirely clear if it would work or not (or end up breaking something badly!).

1 Like

Yup, it should work fine!


I’ve looked at the current framework-ec repository and it looks like it has quite a few prerequisites for cross-compiling the firmware. The ectools utility is tucked away in the utils directory, and I assume it does not need cross-compilation. How difficult would it be to extract that one utility from the whole repository so that it can be built by itself, without the heavy prerequisites that are required for the full framework-ec repo?

1 Like

Thanks! Indeed, make utils does the trick, although with a bunch of warnings that one can ignore, as it turns out. It results in a dynamically linked executable ectool, but as far as I can see it’s just linking to the c-library, so once built, the executable should be relocatable and runnable without special environment requirements.

The repo is rather huge (about 150Mb) for such a small tool, but that’s a relatively minor issue. A lot of it is documentation and git history, actually.

At the moment the interface is a bit rough because it’s mainly a generic tool, so there are a bunch of options that don’t actually apply to the Framework EC.

The most useful command is probably the convenience option Dustin added:

 sudo ./ectool --interface=fwk fwchargelimit ...

One option I found that does seem to work as well, and may be useful is:

sudo ./ectool chargecurrentlimit ...

It allows capping the charging rate for the battery. If it is indeed the case that fast charging is a little damaging to Li-ion batteries, it may make sense to lower this a little in situations where charging doesn’t need to be super-fast. Does anyone have insight into what good ranges for the value would be?

I’ve noticed that under normal conditions, Framework is quite happy to charge at a rate of 30-40W so that’s somewhere in the 2600mA range. That means your battery is basically fully charged within 1-2 hours, which is nice. However, there are scenarios where one may be perfectly happy with a much slower rate (e.g., you come home and let it charge overnight). Is there benefit in lowering the cap? Is it possible to damage things by setting the cap higher than it should be?


Interesting I seem to have 60+ watts even when charging form 78 to 100% ?? using default Framework charger.

I’m just referring to the average W you compute by taking the difference in mAh of charge of the battery one minute apart and multiply it by 15.4V/60(h/min) [sticking with 15.4V being the design voltage for the battery]; not the actual power pulled from the wall.

1 Like

I’m a bit off on detail, it was actually a 12V car type PD charger, I had 63W briefly but always around 60W ? as soon as powered on, no matter the state of charge.

1 Like

I would like to use the power led in windows like a hdd activity monitor.
Does somebody know the address that is used for controlling the leds?
I can’t find it in the EC source…

1 Like