USB-PD™ Power Reserve and You
Part 2: Methods of implementing “derating” and charge-through
There is a analogy I like to use when describing the challenge of USB-C™ compliance testing to coworkers and industry partners:
“USB-C is like Lego™ blocks. You can strictly define the function, shape, size of each block; and you have a fixed set of them to play with. But you have no control over how people put those blocks together, nor what crazy things they make.”
In the previous article, I described why properly managing the USB-PD Power Reserve was important. The key takeaway was careful voltage and current accounting is necessary for “charging pass-through” functionality.
In this article I will focus on describing some of those “blocks” — various tools and approaches that can be used to implement derating and power management — on a hypothetical USB-C peripheral.
T his second article will focus on methods of pass-through. Additional articles will go into field application quirks and caveats.
Background (… and how USB-PD chargers work)
Related listening: ZZ Top — Just Got Paid
USB-PD chargers are rated by their output wattage or “Power Delivery Profile” (PDP). They advertise voltage through collections of “Power Delivery Objects” (PDO) which describe the nature and type of the voltage supply.
This is where the “Power Rules” come in. Summarizing briefly:
(a) A charger with Power Delivery Profile of “X” watts must offer a guaranteed subset of standard voltages levels below it. (5,9,15,20v)
For a “Fixed PDO” charger:
(the regular kind most people connect to a wall)
For an “APDO PPS” charger:
(aka “PD3.0 Programmable Power Supply”)
There are also “Battery” and “Variable” PDOs, which are discussed below. Other voltages or currents up to 5a are optional/extra and OK — so long as you honor the basic Watt requirement, and do 5a cable eMarker checks.
(b) Chargers have strict voltage, current, and timing requirements depending on their advertised PDO type.
Each PDO strictly defines the output and behavior permitted by both parties. The charger makes a Contract with the device — this is tightly regulated.
- Fixed PDO have to be within 5% voltage tolerance of the selected level.
- Variable PDO have to be within min and max voltage/current limits.
- Battery PDO have to be within min and max voltage/power limits.
- PPS APDO have to be responsive to 20mV steps within 25–275ms.
Why does any of the above matter?
Related listening: Mötley Crüe — The Dirt
To sum up the problem briefly, and recapitulating the previous article, there are three Pain Points to remember about charge-through hubs:
Pain Points to remember about charge-through hubs:
- They eat some power (amps/watts) themselves.
- They are never “0 resistance” end to end and cause some voltage losses.
- They add a time delay acting man-in-the-middle with PD commands.
As a result, charge-through functionality wreaks havoc with the Power Rules, mangles PDOs, and breaks Contract requirements.
Points 1 and 2 are fairly straightforward — but point 3 is quite insidious. It means you can get a situation where the device on one end is asking for a Contract, but the charger on the other side is taking its sweet time to respond.
Ordinarily contract timing wouldn’t be an issue since most PD equipment out there is relatively fast. There is plenty of wiggle room. But “wiggle room” isn’t enough for an explicit Contract!
If a charger is slow, and uses its full time window to respond… that leaves the charge-through dongle with no time left over to relay the message! The device is then within its rights to kick the charge-through dongle off the bus.
This additionally means you flat-out cannot “pass through” PPS APDO. The dongle is simply be too slow to relay the PPS commands in time!
Another side effect is the violation of the Power Rules. If we “derate” 10 watts from a 45w charger PDP (5v/3a, 9v/3a, 15v/3a), we don’t magically get a 35w charger PDP (5v/3a, 9v/3a 15v/2.33a). We instead get a Power Rules violating, weird combo (5v/1a, 9v/1.88a, 15v/2.33a)!
Devices, per the spec, are allowed to require a certain PDP in Watts to operate. Below that (if they are poorly engineered) they are within their rights to throw up their arms and say “I refuse to work”. In fact, I can name a few of these laptops offhand…
With “ornery devices”, if you take their in-box X Watt charger and use even a 0.001 Watt derating dongle, the device may barf because of the minor difference in accounting. This is why some hack dongles don’t derate at all!
This PDP requirement is allowed per the spec — although well-engineered products (such as ChromeOS Chromebooks) utilize a wide voltage input buck-boost circuitry, and smart power management, to accept any voltage.
Now that we know the challenges Charge-Through causes, let’s talk about some potential solutions:
Multiple types of “Charge-Through”
Related listening: Guns N’ Roses — Welcome to the Jungle
The USB-PD specification is very flexible. It allows you to tackle these challenges a number of ways. Problem is the different approaches require attention to detail and can be confusing, or even contradicting.
This list is not comprehensive; it is mainly the ones I’ve seen most in the field.
Method #1: Charge-Through Vconn Powered Device (CT-VPD)
Related listening: Wolfmother — Joker And The Thief
Intended use: Low-power, portable, USB2.0-only gizmos like audio dongles
Challenges: Device needs modern PD3.0 stack, few dongles use it (yet)
There is actually a formal “Vconn Charge-Through Device” specification written by one of my colleagues. It is extremely power-efficient, compact, and intended for use with simple dongles like headphone adapters.
The Apple “USB-C to 3.5 mm Headphone Jack Adapter” (MU7E2AM/A) is a subset of this. It is a “VCONN Powered Device” without the “CT” bit.
The reason CT-VPD are so power efficient is they allow the host device to completely shut off VBUS voltage supply to the dongle.
Instead of siphoning power from the charger, the dongle receives power from the device via a “backup” power source called VCONN. Through some clever handshaking the CT-VPD then connects charger and device directly for Contract negotiations.
This approach addresses Pain Points 1, 2, and 3 above.
- The VPD gets VCONN from the device, not parasitizing off the charger
- The VPD tells the device it exists, so the device can derate iteself
- The VPD directly connects the device and charger, so there is no time lag
The limitation is it hijacks the USB2.0 pins so you can’t do Video or USB3. VCONN is also very low power, around 1–1.5 Watts. This hinders use cases.
Method #2: Source Capabilities Re-advertisement
Related listening: Led Zeppelin — Ramble On
Intended use: PD2.0 devices with old hardware, power-hungry hubs
Challenges: Introduces complex nuances since dongle has to be “smart”
This is the most-common method by which hubs in the market today attempt to do charging pass-through. They do this to varying degrees of success…
They take the “Source Capabilities” message (SRC_CAP) from a Charger, then deduct the Wattage they draw from each PDO power level. The dongle then plays “man in the middle” with the PD Contracts, siphoning a little power for itself from the transaction.
There are a few caveats to keep in mind:
- Typically only “Fixed PDOs” are re-advertised due to protocol limitations
- Typically dongles use a captive cable upstream to control IR cable losses
- Such a dongle must use an efficient buck-boost regulator to power itself
(or, the buck efficiency at each PD input level must be found)
Keep in mind Caveats 2 and 3, as only the best-engineered dongles on the market do the extra engineering legwork.
I n particular, Caveat 2 explains why most charge-through dongles are stuck with a short leash — the captive pigtail is an engineering limitation!
In the previous article, I described how charge-through dongles *effectively* are a noncompliant cable with too much IR drop resistance. This same math — shared with CT-VPD — can be used to determine the maximum current a captive-cable dongle can carry before voltage goes out-of-whack.
The proper formula to determine the maximum current (at a given voltage) a Charge-Through Dongle should re-advertise is as follows:
Max Current = min( derated PDO , pigtail IR drop )
There is only a single SRC_CAP Re-advertising dongle on the market (that I am aware of) that implements this “Voltage Loss” Protection based off the CT-VPD spec. It only works because the dongle draw itself is so low.
However there may be other options… assuming you have money or time.
Method #3: Source Capabilities Re-regulation
Related listening: Carpenter Brut — TURBO KILLER
Intended use: Large/complex hubs and docking stations
Challenges: Requires a full-blown SMPS inside the dock, expensive
Another way to eliminate the Pain Points is to have unlimited budget and engineering resources. There are some hubs out there that cost $300 which contain the circuitry needed to take a full 100w in, take what they need, re-regulate the rest, and act as a charger themselves.
There’s no time nor voltage limitations, if you simply redrive and recondition the voltage yourself! °˖✧◝(⁰▿⁰)◜✧˖°
This method can accept any PDO as an input… Fixed, Variable, Battery, APDO PPS… and can theoretically re-regulate it to any/all PDO as an output. This is the approach I suspect will become mainstream with USB4.
Despite the engineering impressiveness of the feat, many customers would balk at the cost. So typically this is reserved for connoisseurs of the most discerning tastes — and engineers who can accept no substitutes.
Method #4: Variable Voltage Re-Advertisement
Related listening: Battle Tapes — Valkyrie
Intended use: Intelligent, robust dongles with wide functionality
Challenges: Requires hosts that have good software and good hardware
This is one of the most elegant, but also most problematic solutions to the Charge-Through Pain Points. By pre-calculating all losses in your system, and querying the device for its capabilities, you can dynamically re-advertise the necessary voltages on-the-fly in a Variable Voltage PDO.
Like the above, with some clever programming, you can accept as input any PDO type and re-advertise it as a Variable PDO. Battery, Fixed, Variable, APDO PPS; all PDOs can be re-interpreted as a Variable Voltage PDO.
I n this method you basically accept the fact losses occur. The dongle instead warns the connected device “Hey, you may get any of a range of voltages”.
This approach comes with some drawbacks; most notably that not all devices support “wide voltage input buck-boost circuitry”. Due to lack of foresight, many products are designed with only Fixed PDO in mind; sometimes often only a single voltage at a single current.
When presented with a Variable PDO, even if they can run off the voltage presented, they may never request it. This is poor hardware design.
Furthermore due to technical limitations surrounding the max number of PDOs in an advertisement, the dongle has to query the device for its “Sink Capabilities” (SNK_CAP) message to understand what PDOs it can accept.
Very often manufacturers forget to put in this field telling chargers they can accept Variable Voltage PDOs. Some devices reply with nonsensical defaults, or there are other protocol errors. This is poor software programming.
Finally “Variable Voltage PDO” does not provide an exemption from Pain Points 1 2 or 3 when it comes to the “vSafe 5v” default voltage level.
Because charge-through dongles *may* be connected to a resistor-based Type-C device that does not speak USB-PD, the dongle has to adopt a bit of the “Source Capabilities Re-regulation” or “Source Capabilities Re-advertisement” methods for the 5V level. Sometimes both.
Variable Voltage PDO requires very careful engineering accounting and quality control. However as the benefit, it works under any conditions — INCLUDING having a bring-your-own-cable (receptacle) upstream!
It needs the VBUS circuitry to recondition the degraded 5V coming in to an acceptable 5V going out, as well as use USB-PD and Type-C voltage advertisement methods to calculate the new, lower limit based off the IR losses. Sounds complex? It’s because it is.
The Apple dongle even has integrated circuitry to disable the built-in Type-A port under certain conditions if the input voltage drops too low. Although not present on this model, I suspect even USB Data Enumeration logic could be used to selectively enable/disable USB3.0 (900mA) capability and draw.
Until hubs shift towards USB4 and the “Re-regulation” golden ideal, “Variable Voltage Re-Advertisement” will be the prime reference design.
Although a bit lengthy, I hope this article gives those interested in greater depth the tools they need to understand Charge-Through.
There are other, crazier methods people use to manage Power Reserve — such as multiport manual current balancing, or the GiveBack flag — but those are beyond the scope of this piece. The next article (should there be one) will go into various caveats and implementation quirks of the most detailed nature.
A s always: have fun, hack the planet, and don’t trust anyone with a postcount over 30. -Nathan K.