USB-DCP-5V-1.5A protocol and Librem 5

Yes, you and your Team are indeed making sure that we are getting the best support! Therefore is my goal here to present what I, as non-expert, think about USB-DCP protocol/coding in correlation to the Librem 5 charging, by sticking to the short definition that the Dedicated Charging Port (DCP) is designed for 1.8A and a charging power of 10W.

While/perhaps we might somehow recognize that I²C … that power supply (actually its controller) from time to time brakes the process of charging related Librem 5 battery (by negotiating from source side some irrelevant charging protocol, when available, making sure something that is not compliant (like non complaint Apple2.4A based ones) with the Texas Instruments BQ25890 charger at all, reaches installed Linux Kernel …), tries internally to switch to (negotiate) another/dominant, on top of some non-adequate 5V range other protocol that isn’t here needed kind of power delivery at all?

Librem 5 uses (just my unofficial thought) USB-DCP in battery mode, what I’ve noticed, exclusively USB-DCP (if and when available from used power supply) protocol/coding. It uses I²C communication … Am I already extending this subject here? Therefore, let me take a shortcut (purposely simplified approach) and eliminate here all so called full protocol power supplies that might work well (have built-in controller that charges optimally) with Librem 5 but not necessarily, but not to be relied, out-of-the-box, upon. Do we need USB-DCP protocol to be supported? Yes, and although not some expert in this particular field this is the path I choose to follow here. Also, all of uploaded pictures are downsized, yet number of those relatively high (if not too high).

My goal here in this post, when charging Librem 5, is (actually was) to keep from source delivered voltage under 5.00V. This request of mine was not easy for me to understand, in the beginning of this “project”, neither how this might work well with the usual PD2.0 and PD3.0 power supplies that are available on the market. Here is my current power supplies list that either should or indeed work well with the Librem 5 built-in BQ25890 charger/controller:

  1. SB-AC16-TCUS USB-PD Type-C DC5.0V/3.0A − still my favorite one.

  2. VARTA 57932 Car Charger, as @guido.gunther kindly recommended in this post: L5 USB Car Chargersbut not about to get one, at least not right away.

  3. Belkin 30W 2-Port PD Car Charger.

  4. PD power supply without PPS support:

I decided to start and stay focused toward ZMI HA932 power supply while this one is used from my side for quite some time. Now comparing it to my Librem 5 dedicated power supply outputting 5.00V as very first generation of PD power supplies that supported 5V only this ZMI zPower Trio 65W 2C1A, as source outputs max. of 4.95V, or close to it, on its USB-C1 port, when connected to … as here attached pictures show. In addition, please note that the other two USB ports are useless for charging the Librem 5 (actually quite sure in this judgement of mine). Very good power supply (still available and with good price).

  1. Anker PowerPort Atom PD 1 30W (A2017)will be introduced within my second post here soon.

  2. Anker PowerPort Atom PD 2 60W (A2029) with related teardown review here:

  3. Anker PowerPort Atom PD 4 100W (A2041). This translation belongs here: “The output uses synchronous rectification to reduce temperature and improve efficiency, and the inner layer of the circuit board has a large area of copper to help conduct heat and dissipate heat. The product is made of sophisticated materials, clever design, fine workmanship, full of black technology.

  4. Anker PowerCore Fusion Power Delivery A1622.

  5. belkin BOOST↑CHARGE™ Dual USB-C GaN Wall Charger 68W (WCH003dq). Please note that probably only USB-C1 circuit, by the PI master control chip SC1548C with the new power MOS, works well with Librem 5.

  6. HELPERS LAB 65W USB PD (S065MU2000325), Ladegerät mit PPS im Test.

  7. belkin 30W BOOST↑CHARGE™ Power Bank USB-C 20K.

  8. Power adapters (as main school) with USB-C PD port, like for example from Startech WCH1C 60W (USB-IF/ETL Certified), while based on @carlosgonz recommendation, probably or even certainly belong here, but I do not have one to test it on Librem 5 or actually on Librem 14. Therefore, please feel free to update this thread as some other PD power supplies/adapters confirm to be based on USB-DCP protocol (and work well with the Librem 5).

Also, please do not disconnect USB-PD charging cable during first 50% of battery capacity (when floating current above 1.5A as this will trigger blinking red LED light (switch to below 0.5A charging mode, which actually means that BPP-L503 is disconnected, I guess, from the charging circle).

And, USB-C cables play important role for sure but do not want to get into this subject other that to mention that if there no USB-IF certificate or if there is no issued TID number (very important to be present), it is must that power supplies without USB-IF approved controllers are avoided at all times, especially now that USB PD3.1 (up to 48V range) specification products are about to reach the market. Short orange USB-C cable used here for charging Librem 5 carries VID 60F JoinSoon 20V/3A USB3.2 Gen2.

By concluding here, this important advice belongs here (for sure):

And as last but not least:

P.S. As above linked, Apple2.4 protocol supports (5.14V×1.41A=7.26W or even, as some hot example, 5.24V×2.53A=13.26W) etc., so please avoid those power supplies made exclusively for Apple products at all times (with the Librem 5). To repeat, while voltage there might easily go above 5.20V I can conclude that higher the voltage used for charging Librem 5 higher the temperature measured during charge process (just try to use equal or even below 5.00V USB-DCP only PD based, USB-IF certified, power supplies). Also, if Samsung-5V-2A and/or QC4 protocols interfere with the Librem 5 charging is about to be confirmed from someone else but there is even good chance that those do not interfere as long as DCP-1.5A protocol present/supported within used power supply.


You can use any charger you want (as long as it’s compliant with USB specs), but how much power you’ll be able to get from it will vary.

To make things clear, let me describe the way maximum input current gets determined on the Librem 5.

  1. If the charger supports Power Delivery (EDIT: or it’s a non-PD USB-C source that signals 1.5A/3A capability at 5V via resistors on CC lines according to USB-C specs), Librem 5 requests voltage to be 5V and uses whatever current gets advertised for 5V by the power supply. You can check the negotiated value in /sys/class/power_supply/tps6598x-source-psy-0-003f/current_max. The charger included in the box provides 3A at 5V.
  2. If the charger doesn’t support PD, Librem 5 uses BC1.2 to detect whether it’s a dedicated charger. If it detects DCP or CDP port, 1.5A is used as input limit. Note that this is a recent feature, added around two months ago in a kernel update - older kernels would go straight to point 3.
  3. Otherwise, Librem 5 fallbacks to 500mA as input current limit, which may be enough to slowly charge when idle with screen off, but will likely make it slowly discharge while in use, since it won’t be enough to power the phone itself. No other protocols than PD and BC1.2 are being considered there.

PD negotiation can happen early in the bootloader, but BC1.2 happens only after Linux is already up and running, so if you’re trying to boot with completely depleted battery or without a battery at all, using a powerful enough PD supply is strongly advised.

When the red LED starts blinking, it means that the charging has stopped because of battery’s temperature. This is nothing to be afraid of, fast charging can produce plenty of heat and charging will automatically resume once the battery cools down. The cutoff temperature with charging already in progress is a bit higher than when you start charging, so unplugging and plugging the charger back in can make it start blinking - again, that’s nothing unusual, just let it cool down a bit. You can keep using the phone, it will just take longer for it to reach 100% (it won’t discharge).


@linmob, thanks a lot for this kind recommendation of yours! I found power supply you mentioned on It is just that my Librem 5 Wi-Fi was somehow purposely on during charging (even added some “jacket” on top :upside_down_face:), as published here, but otherwise I certainly do agree with your recommendation to turn Wi-Fi/BT HKS off during charging (when possible, especially when the battery rest capacity under 50%).

@cchelak, all above thoughts of mine as recently promised here: A Humble Librem 5 Daily User Review. And to be quite precise here in this post below “numbers” are related to the ANKER PowerPort Atom PD 1 30W GaN:

Anker PowerPort Atom PD 1 might emit up to 5.17V (while Librem 5 gets/receives up to 5.06V toward the end of charging, as voltage registered during the termination process of charging) and that is only “thing” that is not entirely up to my liking (cannot qualify this as bad behavior as wasn’t researching much about), but I wasn’t noticing any problems with this slightly higher voltage (than expected) or it is just that I’m preferring fine calibrated ones up to 5.00V.


May I ask one question?
How to choose a docking station that would be delivering enough power to Librem 5 so that the battery gets charged while at the same time powering devices connected to the docking station like mouse, keyboard, sd-card reader, monitor and so on.
I tried 2 docking stations. One does not deliver picture to the monitor. The other one works, but Librem 5 slowly discharges.

@Hristo the ones from here that negotiate 5V/3A should be good.


And if not from the list, are there any particular specs to look for? Apart from the delivery of 5V/3A. Like some PD or BC 1.2 marking.
And how to know in advance if the display is going to work or not?

That’s not a problem at all; in fact, that’s a normal, wanted and expected behavior that’s well within the tolerance ranges (and it can change depending on load, cable resistance and temperature anyway).

Doing PD 2.0 with 5V/3A and USB-C DisplayPort alt-mode should be all you need. Other than that, we’re entering a territory of incompatibilities because of bugs and protocol violations, so it’s hard to say more without doing tests with an actual device in question.


Thank you for this reply! We really needed to get this very straight/relevant answer.

In addition, yesterday afternoon I just received Anker PowerPort Atom PD 2 with GaN (A2029), heavy duty power supply that looks like it might be the perfect match for both Librem 5 and Librem 14. Cannot say more at the moment but my first impression is that this A2029 doesn’t overheats Librem 5 at all (please read again: just “impression”). Secondly, just by pressing the power button to turn the screen off voltage jumps from 4.948V to 4.998V (and now 5.00015V), this behavior is repeatable (indeed very fine/quiet calibration), by having battery currently at around 80%.

Also, as expected, both USB-PD ports react the same on the same type of load. And those two USB-PD ports are the same ones reused for the Anker PowerPort Atom PD 4 (A2041), and therefore with max. output of 60W. @dos please let me know if there is something that I might/should check (some specific CLI request that I should type toward Anker A2029 as source, perhaps within next week, if not stretching myself to make few photos even today) with this Anker 60W A2029 power supply, while it functions on top of Infineon Technologies CYPD4225-40LQXIT [“Notice regarding compliance with Universal Serial Bus specification. Cypress offers firmware and hardware solutions that are certified to comply with the Universal Serial Bus specification, USB Type-C™ Cable and Connector Specification, and other specifications of USB Implementers Forum, Inc (USB-IF)”]?

Furthermore attaching here three pictures just to show that Anker 30W A2017 indeed supports 20V⎓1.5A but this on the edge “support” needs to be taken into account only if about to power on and off some 30W or rather 25W blinking light and not any laptop battery (as currently my laptop battery at 60% taking out (needs) 20V⎓2A:

You need PD as only with a negotiated PD contract DisplayPort can work. But as was written above you usually can’t see from the labeling how much power it will provide. Once a PD contract is negotiated DisplayPort should work given it’s within the L5s spec (which is driven by DCSS capabilities).


I prefer Anker A2029 over Anker A2017 (compact size isn’t necessarily my preference) several times. So much liking it that already took second place on my power supplies ranking :grin:, those that support only USB-DCP protocol at 5.00V.

Please note on above screenshots that with the less heat produced, from the power supply in usage, to charge Librem 5 BPP-L503 battery up to 4.20V of its capacity, even the time needed to do so decreased some/slightly, I need to check this again, but right now it looks like (to me) for about 5% less time needed (in comparison to some other power supplies used). Termination voltage here, of Anker A2029 charging Librem 5, was at 5.04V. Also please note that testing room temperature was around 23 degrees Celsius (while outside one still raising to above 30° Celsius).

@angus.ainslie, @dcz, @dos, @guido.gunther, @joao.azevedo, @mladen, big thanks to all of you that work and contribute a lot toward further development/improvements of the Librem 5! Thanks Purism Team!


@dos, yesterday (just sharing this with you) I found official document telling myself (non-expert) that Librem 5 “definitively” and officially complies with what presented inside of it:

Therefore please take a look at slides five and six, at least, within this presentation:

And, making above short:

  • CDP (Charging Downstream Port): A USB port with enhanced charging capability, it has USB data transfer and can supply a maximum current of 1.5 A to the BC1.2 portable device.

  • DCP (Dedicated Charging Port): A CDP without USB data transfer, it can provide 4.75V~5.5V and 1.5A charging current to the BC1.2 portable device, and the DCP will connect the resistor R across D+ and D-.

Both above definitions belong to the GRL Team:



@dos what about powering-BC.1.2 to docking station connected L5? I seeing many issues with Power Delivery and Dock.

Tested bc1.2 with dock it do not worked.
I tested BC1.2 and with Suspend-to-Ram this worked good.

I don’t get the question. If there’s a docking station in between L5 and power supply, then L5 is not involved in any negotiations with power supply at all - it’s only concerned with the docking station, so whatever happens then depends on the station’s firmware.


If someone wonders on how I “know” (before connecting anything to the USB-C port of Librem 5) that chosen power supply will charge my Librem 5, take a look below when recharging some 18650 3000mAh 3.6V based device maximum (1.880A) allowed/accepted load (another 18650 battery might allow higher charging amperage but this would be anyway irrelevant here):

When using device that can indeed take/consume 3.0A at 5.00V:

Very same 5V/3A “end user” (where actually PD 20V recharging preferred) with another 56 kΩ compliant/premium cable used:

Power supply used for this demo is described here: Changes in charging behavior ?!. 12V was connected/used input as my preference here, but 20V input might be used/implemented as well.

EDIT: I’m not using here related powerbank (as having another purpose) with the Librem 5, but anyway (as mentioned above) showing USB-PD port related 5V/3A input (to be clear, as shown above, about here related/presented power supply, from Wondom, max. current output):

Below picture is showing power receiving data from the USB 1A charging port (black one), might be as well the recommended, supported protocol described here, one to be used with …:

1 Like