USB Power Delivery PDO & RDO Decoder
Decode 32-bit USB Power Delivery Power Data Objects and Request Data Objects. Inspect fixed-voltage, battery, variable-supply and PPS APDO fields including voltage, current, power, object position and USB PD capability flags.
50 mV units and current
in 10 mA units. Battery PDO power uses 250 mW
units. PPS APDO fields use their own voltage and current scaling.
—
What Is a USB PD PDO?
A Power Data Object, or PDO, is a 32-bit value used by USB Power Delivery devices to advertise source or sink power capabilities. A Source_Capabilities message can contain several PDOs describing the voltages, currents or power levels the source can provide.
The two most significant bits identify the basic PDO supply type: fixed, battery, variable or augmented.
USB PD PDO Supply Type Bits
| Bits 31:30 | PDO Type | Typical Meaning |
|---|---|---|
| 00 | Fixed Supply | Fixed output voltage with maximum current |
| 01 | Battery | Voltage range with maximum power |
| 10 | Variable Supply | Voltage range with maximum current |
| 11 | Augmented PDO | Programmable or extended power capability such as PPS |
Fixed Source PDO Formula
A fixed Source PDO contains a voltage field and maximum-current field.
Voltage =
Bits[19:10] × 50 mV
Maximum Current =
Bits[9:0] × 10 mAFor a 5 V, 3 A fixed supply, the voltage field contains 100 because 100 × 50 mV equals 5 V. The current field contains 300 because 300 × 10 mA equals 3 A.
5 V 3 A Fixed PDO Example
Voltage field:
5000 mV / 50 mV
= 100
Current field:
3000 mA / 10 mA
= 300
Base fixed PDO:
(100 << 10) | 300
= 0x0001912CAdditional capability flags can set upper bits without changing the encoded 5 V and 3 A values.
Variable Supply PDO
A Variable Supply PDO advertises a voltage range and a maximum current. The maximum and minimum voltage fields use 50 mV units, while the current field uses 10 mA units.
Maximum Voltage =
Bits[29:20] × 50 mV
Minimum Voltage =
Bits[19:10] × 50 mV
Maximum Current =
Bits[9:0] × 10 mABattery PDO
Battery PDOs advertise a voltage range and a maximum deliverable power instead of a maximum current.
Maximum Voltage =
Bits[29:20] × 50 mV
Minimum Voltage =
Bits[19:10] × 50 mV
Maximum Power =
Bits[9:0] × 250 mWWhat Is a USB PD APDO?
An Augmented Power Data Object extends the original PDO model. A common APDO type is Programmable Power Supply, or PPS, which allows the sink to request a specific voltage within an advertised range rather than selecting only a fixed PDO voltage.
The decoder identifies the APDO subtype from its upper bits and decodes the standard PPS fields when the subtype indicates PPS.
PPS APDO Fields
For a standard SPR PPS APDO, maximum and minimum voltage use 100 mV units and maximum current uses 50 mA units.
Maximum Voltage =
Bits[24:17] × 100 mV
Minimum Voltage =
Bits[15:8] × 100 mV
Maximum Current =
Bits[6:0] × 50 mAWhat Is a USB PD RDO?
A Request Data Object is sent by a power sink when requesting one of the source's advertised capabilities. Bits 31 through 28 identify the requested PDO position in the Source_Capabilities list.
Object Position =
Bits[31:28]For example, object position 1 requests the first Source PDO, while position 3 requests the third advertised PDO.
Fixed and Variable RDO Current Fields
For a request associated with a Fixed or Variable PDO, current is encoded in 10 mA units.
Operating Current =
Bits[19:10] × 10 mA
Maximum Operating Current =
Bits[9:0] × 10 mAWhen GiveBack semantics are used, interpretation of the lower field changes according to the USB PD request rules, so protocol context should also be considered.
Battery RDO Power Fields
For an RDO requesting a Battery PDO, the corresponding request fields represent power rather than current and use 250 mW units.
Operating Power =
Bits[19:10] × 250 mW
Maximum Operating Power =
Bits[9:0] × 250 mWPPS RDO
A PPS request selects an APDO object position and requests a programmable output voltage and operating current.
Requested Output Voltage =
Bits[20:9] × 20 mV
Operating Current =
Bits[6:0] × 50 mAThe requested voltage must fall within the source APDO's advertised PPS voltage range and the current must respect the advertised maximum.
Capability Mismatch
The Capability Mismatch flag can indicate that the sink's power requirement cannot be fully satisfied by the selected source capability.
It is part of the request object's negotiation information rather than a direct voltage or current measurement.
USB Communications Capable Flag
USB PD objects can communicate whether the device supports USB data communication in addition to power negotiation. This is separate from the actual power rating encoded in the PDO or RDO.
PDO vs RDO
| Object | Direction / Purpose | Contains |
|---|---|---|
| Source PDO | Source advertises capability | Voltage, current/power, capability flags |
| Sink PDO | Sink advertises power requirements | Voltage, operating current/power and capability flags |
| RDO | Sink requests one Source PDO | Object position plus requested current, power or PPS values |
Why RDO Type Must Be Selected
The four-bit object-position field tells the receiver which previously advertised Source PDO is being requested, but the RDO itself does not contain the complete supply-type information from that PDO.
The decoder therefore asks whether the referenced object is Fixed/Variable, Battery or PPS before interpreting its request-value fields.
Hexadecimal USB PD Objects
Protocol analyzers and firmware logs commonly display PDO and RDO values as 32-bit hexadecimal numbers.
Example:
0x0001912C
Binary:
00000000000000011001000100101100This page accepts hexadecimal, decimal or binary input and displays all three representations.
USB PD PDO & RDO Decoder FAQs
What is a USB PD PDO?
What is an RDO?
How is fixed PDO voltage encoded?
How is fixed PDO current encoded?
How is Battery PDO power encoded?
What are bits 31:30 in a PDO?
What does RDO object position mean?
Can an RDO identify its own PDO supply type?
What is PPS?
Can this decoder replace a USB PD protocol analyzer?
Decode USB PD Power Objects
Inspect raw USB Power Delivery PDO and RDO values from firmware, USB-C logs, protocol analyzers and embedded power controllers using field-level voltage, current, power and capability decoding.