pdsink is an open-source USB Power Delivery (PD) 3.2 sink implementation for embedded devices released under an MIT license.
Vitaly Puzrin noticed that most available USB PD stacks come with at least one hard constraint: vendor lock-in, NDA, no public sources, coupling to a specific OS or framework, incomplete sink feature set (e.g., no EPR), or difficulty extending to new Type-C Port Controller (TCPC)/MCU combinations. So he created pdsink is an attempt to provide a small, platform-agnostic, readable sink-only stack that’s easy to adapt to different controllers.

pdsink highlights:
- USB PD 3.2, SPR (Extended Power Range), and EPR (Extended Power Range for 28V and up) support on the sink side.
- Platform-agnostic C++ core that does not depend on a specific HAL or RTOS.
- Reference implementation using OnSemi FUSB302B + FreeRTOS (ESP32-C3).
- MIT license enabling the project to be used in commercial products without conditions.

pdsink can be found on any “sink” device (aka power consumer) such as tools, lab gear, and custom PD-powered devices. Vitaly stresses that the project does not support source role (SRC), nor DRP / DFP / FRS / Alt Modes. You’ll find the source code, one example called “fusb302_rtos_esp32c3_arduino”, and documentation to get started on GitHub.
Some other notable open-source USB PD projects include the USB Power Delivery for Arduino, which implements a USB PD protocol analyzer, USB PD protocol analyzer, a USB PD trigger board, or a more sophisticated power sink on STM32 microcontrollers, and a USB-PD driver stack for the FUSB302

Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress. We also use affiliate links in articles to earn commissions if you make a purchase after clicking on those links.




