USB PD Power Object Decoder

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.

✓ Source PDO ✓ Sink PDO ✓ Fixed Supply ✓ Battery PDO ✓ Variable PDO ✓ PPS APDO ✓ RDO
PD
32-Bit Power Object Decoder
● Ready
Accepts hexadecimal, decimal or 32-bit binary input.
Some capability bits differ between Source and Sink PDOs.
Request Data Objects do not directly encode the PDO supply type, so select the request format below.
Select the type of PDO referenced by the RDO object position.
USB PD objects are 32 bits. For a fixed PDO, voltage is encoded in 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.
USB Power Delivery Decode Result Decoded
Decoded Power Object
32-Bit Hex
Decimal
Binary
Object Type
Voltage
Minimum Voltage
Maximum Voltage
Current
Operating Current
Maximum Current
Power
Object Position
Capability Mismatch
USB Communications
Dual Role
Flags / Details
Bit Field Breakdown

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 mA

For 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 = 0x0001912C

Additional 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 mA

Battery 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 mW

What 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 mA

What 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 mA

When 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 mW

PPS 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 mA

The 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: 00000000000000011001000100101100

This page accepts hexadecimal, decimal or binary input and displays all three representations.

USB PD PDO & RDO Decoder FAQs

What is a USB PD PDO?
A PDO is a 32-bit Power Data Object used to describe a USB Power Delivery source or sink power capability.
What is an RDO?
An RDO is a Request Data Object sent by a sink to request one of a source's advertised PDO capabilities.
How is fixed PDO voltage encoded?
The 10-bit voltage field uses 50 mV units, so the field value is multiplied by 0.05 V.
How is fixed PDO current encoded?
The current field uses 10 mA units.
How is Battery PDO power encoded?
The maximum power field uses units of 250 mW.
What are bits 31:30 in a PDO?
They identify the basic PDO type: Fixed Supply, Battery, Variable Supply or Augmented PDO.
What does RDO object position mean?
It identifies which Source PDO from the previously advertised capability list the sink wants to use.
Can an RDO identify its own PDO supply type?
Not completely. Its object position refers back to the source's capability list, so the referenced PDO is needed to know whether current, power or PPS fields should be used.
What is PPS?
Programmable Power Supply is a USB PD augmented power mode that allows a sink to request voltage in relatively fine increments within a supported range.
Can this decoder replace a USB PD protocol analyzer?
No. It decodes individual 32-bit power objects. Full protocol analysis also requires USB PD message headers, object ordering, revision context, state machine behavior and surrounding messages.

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.

Scroll to Top