I would like to implement a USB Type-C DRP UFP-data power-source device. This device has access to current so I would like it to behave as a power sourcing device.

An example would be a USB ('slave') storage dongle that you would plug in a phone. The phone via its type-C connector would recognize the data dongle (UFP-data). As the dongle has 5V 3A power, it would charge the phone.

This case is possible according to the USB type-C specifications. This TI document says on page 3:

A dual-role power (DRP) port can operate as either a sink or source, and may alternate between these two states. When a DRP initially operates as a source, the port takes the data role of a DFP. Alternatively, when a DRP initially operates as a sink, the port takes the data role of a UFP. Using USB PD power-role swap can dynamically change the DRP’s power role, however. For example, a laptop may include a DRP port that can receive power to charge the laptop’s battery, but it can also deliver power to charge external accessories. Additionally, there are two special subclasses of a DRP:

– A sourcing device is capable of supplying power, but not capable of acting as a DFP. One example of this subclass is a USB Type-C and USB PD-compatible monitor that receives data from a laptop’s DFP, but also charges the laptop.

This webpage lists the resistors in UFP-data source/sink:

enter image description here

I have tried to put a 10Kohm resistor between CC and VBUS but the device is not charging the phone though the phone still recognizes the data device.

I have also a board that uses OnSemi FUSB303B. Pin 3 is floating (DRP), pin 5 is high (I2C) at boot time:

enter image description here

Case A: If the device has 5V power at boot and I plug it into a phone, it charges the phone but the device is not recognized as UFP.

Case B: If the device does NOT have 5V power at boot and I plug it into a phone, the device is recognized as a UFP data device (power comes from the type-C).

Case B': After case B has occured, if I plug the 5V power and if I send the I2C command 0x20 to register 0x9 (manual), the device stays in UFP mode but it still doesn't charge the phone.

QUESTION: Is it possible to do DRP UFP-data in power sourcing with a CC controller or some resistors only? Or do I need a PD controller? (what would be the simplest choice to support this case only)?


1 Answer 1


Is it possible to do DRP UFP-data in power sourcing with a CC controller or some resistors only?

The answer is: NO, it is not possible to swap default roles without PD.

The latest type-C connection works in the following way. Initial combination of resistors on CC pins determines the POWER direction of the connection. However, by default, power provider is associated with USB host functionality, and power consumer (sink) must be a USB data slave. To reverse the data (or power) roles, the Power Delivery protocol must be engaged.

More, in modern power delivery environment the (initially) host port must perform a discovery of properties of the cable first, before enabling any power or link function. The cable can be skinny and may have limited power carrying capability, so the following negotiation of the power contract must take the cable properties into account. More, the cable can be "an active cable" and can have embedded either re-timers or just re-drivers. The cable may require an additional power source over Vconn wire. More, the cables can have different properties in terms of data speed transmission, can support Thunderbolt functions, both in native or in rounded mode.

After the cable capabilities are determined, the provider examines capabilities of the link partner, which could be USB3, USB4, TBT3, or Alt-DP in two incarnations, all by means of PD messages. So the modern ecosystem for Type-C connectivity is enormous, and will remain confusing to customers until all permutations will be sorted out by OEM product providers, so the cables will "just work".


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.