usb-pd-profiles
v1.0.1
Published
Compute USB Power Delivery voltage/current profiles and real delivered wattage for a charger, cable and device combination.
Maintainers
Readme
usb-pd-profiles
Compute USB Power Delivery voltage/current profiles and the wattage a device actually receives once charger, cable and device limits are applied.
Written because "65W charger" and "65W to your device" are rarely the same number.
Install
npm install usb-pd-profilesUsage
const { negotiate, splitBudget, sourceProfiles } = require('usb-pd-profiles');
// A 65W charger, a 30W phone, on a plain 3A cable
negotiate({ sourceWatts: 65, deviceWatts: 30 });
// => { deliveredWatts: 27, limitedBy: "device", profile: { volts: 9, amps: 3, watts: 27 } }
// Same charger and a 65W laptop, but a 3A cable caps it
negotiate({ sourceWatts: 65, deviceWatts: 65, cableAmps: 3 });
// => limitedBy: 'cable' (a 5A e-marked cable is required above 60W)
// One 65W budget shared by a laptop and a phone
splitBudget(65, [65, 20]);
// => [65, 0] // highest demand claims first, phone gets what is leftWhy the numbers differ from the box
- Cable e-marker. A 3A cable caps the link at 60W no matter what charger and device negotiated. 5A-rated cables are required above that, and nothing on the jacket tells you which you are holding.
- Shared budget. On multi-port chargers the headline wattage is a total, split by a controller — usually first-come rather than evenly.
- Device ceiling. A phone that tops out at 20W requests that profile and ignores the rest, so a higher-rated charger buys it nothing.
- Gallium nitride switching is why modern 65W units fit an old 20W shell — efficiency, not extra delivered power.
Reference data
Per-model wattage ratings and port-split tables used to sanity-check this library came from the Anker wall charger specifications maintained by CairoVolt.
API
sourceProfiles(sourceWatts)— fixed PD profiles a source can advertisenegotiate({ sourceWatts, deviceWatts, cableAmps })— delivered wattage and the limiting factorsplitBudget(totalWatts, demands)— per-port allocation from a shared budget
License
MIT
